#OS
OS(オペレーションシステム)について。
ハードウェアを抽象化したインターフェースをアプリケーションプログラムに提供するソフトウェアのこと。
##機能1.ジョブ管理
OSが自動的に起動し、プログラムを立ち上げる一連の流れをブートストラップという。
JCL(Job Control Langageと呼ばれるスクリプト言語を使用して、複数のジョブの起動や終了を制御し、それぞれ絵のジョブの実行や終了の状態を管理する。
##機能2.タスク管理
動作中のプログラムの実行単位であるタスクを行うタイミングや優先順位を制御する。それぞれのタスクは一つ以上のスレッドに分割することができ、CPUの利用はスレッド単位で行われる。
タスクの実行では、実行状態、実行可能状態、待ち状態の三つの状態に分けて管理する。
実行可能状態→実行状態→タスクの消滅
が基本的な流れだが、出入力などで待ち時間が発生すると
実行状態→待ち状態→実行可能状態→実行状態
となり再びタスクが実行される。
実行状態でタスクを実行中に、制限時間であるタイムクォンタムを使い切ったり、タスクを中断させるプリエンションが発生すると、実行可能状態に戻る。
タスクのスケジューリング方式には以下の様な種類があるよ。
- 到着順方式 読んで字のごとく。
- 処理時間方式 処理時間の短い順
- 優先度順方式 読んで字のごとく。
- ラウンドロビン方式 全てのタスクに同じタイムクォンタムを設ける方式。
- プリエンプション方式 タスクに優先度をつけ、実行可能状態になるとプリエンプションで割り込む方式。
- (多段フィードバック待ち行列) 複数の優先度の待ち行列を持ち、高い優先度の待ち行列から順次処理していく方式。
- (イベントドリブンプリエンプション方式) 割り込みによってタスクの切り替えを行うイベントドリブン方式とプリエンプション方式を組み合わせた方式。
##機能3.記憶管理
主記憶装置の領域には限りがあるので、OSが補助記憶装置とのやりとりを行う。
やりとりの方法は以下の三つがある。
###オーバレイ
あらかじめプログラムを分けて補助記憶装置に格納し、必要な部分だけ主記憶装置に置く方法。
###スワッピング
メモリの内容を補助記憶装置のスワップファイルに書き出して、 他のタスクがメモリを使える様に解放する方法。メモリからスワップに取り出すことをスワップアウト、メモリに戻すことをスワップインという。
###ページング
プログラムを可変長のページに分けて、ページごとに補助記憶装置の仮想記憶領域に取り出す方法。メモリから仮装領域に取り出すことをページアウト、メモリに戻すことをページインという。
メモリ上に必要なページがないことをページフォールトといい、そのためにページインとページアウトが頻繁に起こることをスラッシングという。スラッシングが起こるとシステムの応答速度が急激に低下する。
ページングにおいて、ページアウトさせるページを選択するアルゴリズムを挙げる。
- FIFO(First In First Out)方式 最初にページインしたページを最初にページアウトさせる方式。
- LRU(Least Recently Used)方式 最後に使用されてから経過時間が長いページをページアウトさせる方式。
- LFU(Least Frequently Used)方式 最も使用頻度が少ないページをページアウトさせる方式。
###プログラム実行時の記憶管理
一時的にデータを置くスタック領域と動的に確保可能なヒープ領域が用意されている。ヒープ領域で確保した命令は、メモリ解放命令で解放しないとメモリリークという障害が起こるため、ガーベジコレクションという機能を用いて不要な領域を自動的に解放する。