I-26-10. リソースに対する優先順位の設定、割り込みの優先順位

組み込みアプリケーションの非同期性について解説し、リソースの排他的利用、リソース利用に対する優先順位設定、割り込みの優先順位、デバイスドライバ処理の優先順位など、各種の順位決定処理を説明する。

【学習の要点】

* 複数のタスクが同時に入出力に対して要求を出しても、同時に利用できるタスクは一つだけである。シリアライジングを行い、逐次処理を行う必要がある。

* シリアライジングの実現には、セマフォを利用する方式、独自にキューを作成する方式などがある。

* デバイスドライバはアプリケーションインターフェイスと割り込みハンドラのコンテキストから構成される。

図I-26-10. セマフォによる処理の逐次化

【解説】

1) シリアライジング

* 複数のタスクが同時に入出力に対して要求を出しても、同時に利用できるタスクは一つだけである。

* 要求を一つずつ処理することをシリアライジングと呼ぶ。

* 入出力(要求)キュー

- シリアライジングに際し、入出力の要求を出して待たされている情報を記憶したキューを指す。

* セマフォを利用する方式

- デバイスドライバ全体をセマフォで占有することにより排他制御を行う。

- セマフォを利用する場合、タスク管理を行うタスク管理ブロック (Task Control Block : TCB)そのものが入出力キューの役割を果たす。

* 独自にキューを作成する方式

- システムコールとしてアプリケーションから呼ばれる場合、独自に入出力キューを作成する必要がある。

- カーネルコンテキストで実行するOSではこの方式を実装している。

2) アプリケーションとの同期

* 同期入出力

- 入出力が完了した時点で、入出力に対して要求を出しているタスクの待ち状態を解除する方式。

* 非同期入出力

- 入出力要求をデバイスドライバが受け付けた後も、デバイスドライバと並行して実行を継続する方式。

3) リアルタイム処理の優先順位

* タイムクリティカルな処理を最速に行う方式は、割り込みハンドラで処理を行う方式である。

* タイムクリティカルな処理が、入力データ待ちや入出力待ちの状況になる場合、デッドロックを避けるため、最高優先度のタスクとして実行するように設計する必要がある。最高優先度のタスクは、割り込みハンドラの次に優先される。

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。