オペレーティングシステムの記憶管理とプログラム特性
要点と定義
仮想記憶のページングでは、主記憶にないページを参照するとページフォールトが発生し、必要なページを補助記憶から主記憶へ読み込む。空きページがない場合は、ページ置換えにより対象ページを選んで退避する。ページインはページを主記憶へ読み込む操作、ページアウトは主記憶のページを補助記憶へ退避する操作である。デマンドページングはページが必要になった時点で読み込み、プリページングは必要になると予測したページを事前に読み込む。スラッシングはページ置換えが頻発し、システムの処理能力が大きく低下する状態をいう。ガーベジコレクションは、動的割当て領域のうち参照されず再利用できない領域を回収する機能である。コンテナ型仮想化はホストOSのカーネルを共有しながら、アプリケーションの実行環境を分けて稼働させる方式である。再使用可能プログラムは繰返し実行できる性質、再入可能プログラムは実行中に再度呼び出されても実行できる性質、再配置可能プログラムは主記憶上の異なる位置で実行できる性質をもつ。ターンアラウンドタイムはジョブの到着から実行完了までの時間である。
適用条件と例
ページング方式で参照ページが主記憶になく、空きページもない場合は、ページフォールトの後に置換対象を決め、対象ページをページアウトしてから必要なページをページインする。プリページングは予測したページを事前に読み込むため、予測が当たれば必要時の読み込み待ちを減らせる一方、予測が外れれば不要な読込みが生じ得る。主記憶へのアクセスがページ置換えに占められるほど頻発するとスラッシングとなる。動的に割り当てた領域のうち、プログラムから参照されず再利用できない領域を回収する機能をガーベジコレクションという。資源を複数のプロセスが占有し、互いに相手の保持する資源を待つ状態が成立すれば、デッドロックの可能性がある。コンテナ型仮想化では、アプリケーションと実行に必要な環境をまとめ、ホストOSのカーネルを共有して動かす。再使用可能プログラムは繰返し実行に備えて変数を初期化するなどし、再入可能プログラムは複数のタスクから同時に呼び出されても実行できるよう、変更されるデータをタスクごとに扱う。再配置可能プログラムは主記憶上の異なる位置に配置して実行できる。ジョブ多重度が1で到着順に処理する場合、各ジョブは先行ジョブの終了後に実行され、ターンアラウンドタイムは到着時刻から完了時刻までである。
ページングで主記憶にないページを参照するとページフォールトが発生する。空きページがないときは置換対象を決め、そのページをページアウトして空きを作った後、参照されたページをページインする。したがって処理の順序は、ページフォールト、置換対象の決定、ページアウト、ページインとなる。
動的割当て領域のうち、プログラムから参照されず再利用できない領域は、ガーベジコレクションによって回収して再利用可能にできる。ヒープは動的割当てに使う領域、スタックは主に関数呼出しなどに使う領域を指し、フラグメンテーションは空き領域が細分化した状態を指す。
複数プロセスが資源を保持しながら互いに相手の保持資源を待つ循環待ちが成立すると、デッドロックが起こり得る。資源を同じ順序で取得するプロセス同士では、この組合せによる循環待ちは生じないが、取得順序が異なると循環待ちが成立する場合がある。これはタスク管理の同期制御・排他制御に関係する適用例である。
この節の続き
- 誤りやすい点
ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。
アプリでこの節を読む