OSのタスク管理と記憶管理
要点と定義
OSは、タスク管理や記憶管理などを担うシステムソフトウェアです。マルチタスクでは、複数のタスクを切り替えて実行します。タスク間の同期は処理の順序や受け渡しを調整し、排他制御は共有資源を同時に使わないようにします。共有バスを使う区間をセマフォ(相互排他ではミューテックス)で保護し、使用後に解放すれば、ほかのタスクによる同時アクセスを防げます。優先度の設定やタスクの実行順だけでは、共有資源の排他を保証できません。
複数のタスクが資源を保持したまま互いの資源を待つと、デッドロックが起きることがあります。全タスクが同じ順序で資源を獲得するよう定める方法は、循環待ちを防ぐための予防策です。この獲得順による予防は、タスク管理の同期制御・排他制御に関連する過去の出題で扱った補足です。
固定優先度のプリエンプティブ方式では、優先度の高いタスクが低いタスクに割り込めます。高優先度タスクの実行による妨害を含めて低優先度タスクの応答時間を見積もり、周期内に完了できるかを判断します。周期タスクの応答時間を反復計算する方法は、スケジューリングに関連する過去の出題で扱った補足です。
仮想記憶のページング方式では、仮想記憶を固定長のページに分け、主記憶の固定長のページフレームに割り当てます。固定長単位で配置するため外部断片化は起きませんが、ページ内に使われない部分が残る内部断片化はあり得ます。ページング方式とセグメンテーション方式の特徴を比べるときは、固定長か可変長か、外部断片化が生じるかを手掛かりにします。
参照したページが主記憶にないときに起きる事象がページフォールトです。通常の需要ページングでは、必要なページを補助記憶から主記憶に読み込むページインが行われます。ページアウトは、置換対象があり、その内容を書き戻す必要がある場合などに発生します。ページ置換えが頻発し、入替えに時間を取られて処理能力が急激に落ちる状態をスラッシングといいます。これらは仮想記憶管理の用語で、過去の出題でも扱われています。
コンテナ型仮想化では、実行環境がホストOSのカーネルを共有し、個別のゲストOSを持たずにプログラムを動かします。仮想マシンのようにゲストOSを個別に持つ構成との違いは、OSの持ち方です。コンテナ型仮想化は、OSの種類や動向に関連する過去の出題で扱った補足です。
適用条件と例
排他制御は、複数タスクが同じ資源を同時に操作すると問題が起きる場面で使います。例えば、複数タスクが共有プリンタの設定を更新するなら、更新区間をロックで保護し、完了後に解放します。デッドロック予防の獲得順統一とは目的が異なり、ロックは共有資源の同時使用を防ぐ手段です。
応答時間の反復計算は、固定優先度のプリエンプティブ方式で、周期と最大実行時間が分かり、問題の条件に沿って他の遅延要因を扱えるときに使います。例として、高優先度タスクAの最大実行時間を1ミリ秒、周期を5ミリ秒、低優先度タスクBの最大実行時間を4ミリ秒とします。Bの応答時間を4ミリ秒から始め、応答時間内に起動するAの回数分の実行時間を加えます。値が変わらなくなったらBの周期と比べます。共有資源による待ちなどを無視できない条件では、この単純な計算だけで完了を判断できません。応答時間の計算手順は過去の出題で扱った補足です。
ページフォールトは主記憶に必要なページがないときの事象、ページインはそのページを読み込む処理、ページアウトは主記憶からページを追い出す処理です。通常の需要ページングではページフォールトごとにページインが行われますが、空きフレームがある場合などはページアウトを伴わないことがあります。
この節の続き
- 誤りやすい点
ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。
アプリでこの節を読む