オペレーティングシステム
要点と定義
OSは、ジョブやタスクの実行、記憶領域などの計算機資源を管理するソフトウェアです。ジョブ管理、タスク管理、実記憶管理、仮想記憶管理は、その代表的な機能です。
仮想記憶のページングでは、仮想ページを主記憶のページ枠に対応付けます。参照したページが主記憶にないとページフォールトが起き、需要ページングではOSが必要なページを読み込むための枠を確保します。枠が足りなければページ置換を行うことがあります。LRUは、最後に参照されてから最も長く経過したページを置換候補にする方式です。
ページフォールトの処理時間を割合から求める加重平均の計算は、過去の出題で扱った補足です。場合ごとの処理時間に、それぞれの発生割合を掛けて合計します。例えば、処理Aが10ミリ秒、処理Bが50ミリ秒で、Aの割合をpとすると、平均は10p+50(1−p)です。どの処理が各場合に当たるか、また割合の合計が1になるかを確かめて式を立てます。
タスクは生成後、実行可能、実行中、待ちなどの状態を移ります。プリエンプションでCPUの実行を中断されても、再開条件がそろっていれば実行可能状態となり、CPUの割当てを待ちます。並列処理では複数の処理を同時に進め、同期点で必要な処理の完了を待つ構成があります。
複数タスクが資源を排他的に使うとき、各タスクが資源を保持しながら相手の保持する資源を待つ循環待ちがデッドロックにつながります。全タスクが同じ順序で資源を取得するようにすれば、取得順序による循環待ちを防げます。
ジョブ管理では、仕事の単位であるジョブと、それを構成するジョブステップを扱います。ジョブの実行順や先行関係を考えるときは、処理の開始・終了も確認します。ジョブ間の一時ファイルの残存期間や、それを含む必要容量の追跡は、過去の出題で扱った補足です。後続処理が参照するファイルは、作成元の処理が終わった後も、参照が終わるまで残ることがあります。
ヒープ上でプログラムから参照されなくなった領域を回収し、再利用できるようにするガーベジコレクションは、過去の出題で扱った補足です。ページフォールトの処理とは別の機能です。同じく過去の出題で扱った補足として、実行時のモジュール読み込み、モジュール間の参照の結合、配置位置に応じたアドレス調整も、それぞれ異なる処理です。
適用条件と例
ページフォールトは、参照先の仮想ページが主記憶にないときに起きます。有効なページへのアクセスなら、OSはページを読み込むための枠を用意します。不正なアドレスへのアクセスは、ページを読み込めば解決するものではありません。需要ページングでは、実行開始時に全コードを主記憶へ載せるとは限らず、実際に参照されたページを必要に応じて読み込みます。
LRUで置換候補を選ぶときは、ページ枠が不足して置換が必要なことを前提に、各ページの最終参照時点を比べます。最も古い参照時点のページが候補です。ページングの固定長枠と、可変長領域の割当てで問題になる外部フラグメンテーションは、異なる仕組みです。
タスクの状態を判断するときは、何を待っているかを確認します。入出力の完了など実行再開に必要な条件を待つ間は待ち状態です。条件が満たされ、CPUの割当てを待つ段階なら実行可能状態です。
例えば、タスク全体で「先にプリンタ、次に記録領域」のように共通の取得順序を定めます。全タスクが順序を守ることで、一方が先の資源を待ちながら後の資源を保持する状態を避け、循環待ちを防ぎます。優先度を揃えるだけでは、資源の取得順序は定まりません。
この節の続き
- 誤りやすい点
ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。
アプリでこの節を読む