オペレーティングシステムの記憶管理とタスク管理
要点と定義
この節では、OSの記憶管理とタスク管理に関わる基本概念を扱う。ガーベジコレクションは、プログラムが使用しなくなったヒープ領域を回収し、再利用できるようにする処理である。メモリコンパクションは、主記憶の空き領域をまとめて連続した領域にする処理である。
タスクはCPUなどの資源を割り当てられて実行される処理単位であり、実行可能状態はCPUが割り当てられれば実行できる状態、待ち状態は入出力の完了などを待っている状態を指す。プリエンプションは、実行中のタスクがCPUを強制的に譲ることをいう。ノンプリエンプティブ方式では、実行中のタスクを時間片の終了などで強制的に中断しない。ラウンドロビン方式は、実行可能なタスクに一定の時間片を順番に割り当てる方式である。
仮想記憶は、実記憶とは別のアドレス空間をプログラムに提供する記憶管理方式である。ページフォールトは、参照したページが実記憶に存在しないときに発生する。LRUは、ページ置換え時に最も長く使われていないページを選ぶ方式である。ターンアラウンドタイムは、ジョブの到着から処理完了までの経過時間である。
適用条件と例
主記憶管理では、不要になったヒープ領域を回収して再利用可能にする処理をガーベジコレクションという。実行中にモジュールの格納位置を変える処理は動的再配置、必要になった時点で読み込む処理は動的ローディング、実行時にライブラリなどを結合する処理は動的リンキングである。空き領域をまとめて連続領域にする処理はメモリコンパクションである。
タスク管理では、実行中のタスクがプリエンプションされるとCPUを譲り、再び実行できる実行可能状態に戻る。到着順方式は、実行中の処理を時間片などで強制的に中断しないノンプリエンプティブ方式である。ラウンドロビン方式は実行可能なタスクに時間片を順番に割り当てるため、タイムシェアリングに用いられる。複数タスクを実行するときは、各タスクのCPU処理とI/O処理の進み方を追い、実行可能なタスクがない区間をCPUの遊休時間として数える。
仮想記憶のページングでは、参照先のページが実記憶にないとページフォールトが発生する。LRU方式では、実記憶枠が不足したとき、最も長く参照されていないページを置き換える。ターンアラウンドタイムを求める場合は、到着時刻から完了時刻までを計算する。
不要になったヒープ領域を回収して再利用可能にする処理がガーベジコレクションである。空き領域を連続領域にまとめるメモリコンパクションや、実行中のモジュールの位置を変える動的再配置とは役割が異なる。
複数タスクを同時に扱う場合、CPUは実行可能なタスクがあれば処理を続け、実行可能なタスクがなく各タスクがI/O中または終了済みであれば遊休する。CPUとI/Oの処理順を時系列で追い、この遊休区間の合計を比べることで評価できる。
この節の続き
- 誤りやすい点
ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。
アプリでこの節を読む