岩波講座 ソフトウエア科学6「オペレーティングシステム」#3

CPUスケジューリング

プロセスは、
(1) 実行中
(2) 実行可能
(3) 待ち状態
のいずれかの状態になっている。

CPUスケジューラー = ディスパッチャーである。

あるプロセスに割り当てられた時間をクオンタムと言い、クオンタムが終了すると、実行中から実行可能状態に移行させられる。

クオンタムは、タイムクオンタム、タイムスライス、量子時間とも言う。

待ち状態は、ある条件(I/Oや他のリソースが空くのを待つなど)が成立していないといけない時にとる状態を指す。

実行可能状態から待ち状態への移行は、プロセス自身によってなされる。

待ち状態から実行可能状態へは、他のプロセスからのSIGNAL命令によって移行させられる。

SIGNAL命令とは、他のプロセスを起動させる(実行可能状態にする)命令である。

プロセスは3つの状態それぞれのキューに入っている。

プロセッサーの数に依らず、この考えは適用できる。

CPUをあるプロセスから別のプロセスに切り替える方式は2つある。
(1) イベントドリブン
(2) タイムスライシング

イベントドリブンとは、システムの状態が変化したのを、割り込み機構により切り替える方式である。

割り込みで割り込まれたプロセスは、割り込まれたことを感知しない。

タイムスライシングは、時分割とも言う。

タイムスライシングでは、システムの状態変化とは無関係にプロセスを切り替える。

タイムシェアリングシステムの実現には、タイムスライシングが必要である。

タイムスライシングでは、インターバルタイマーにより、ウオンタムが終わったら割り込みを発生させる。

マルチプログラミングシステムの性能を向上させるためには、イベントドリブンにタイムスライシングを組み合わせることが効果的である。

マルチプログラミングは、イベントドリブンのみで実現できる。

マルチプログラミングにタイムスライシングを導入すると、性能が向上する。

タイムシェアリングシステムにイベントドリブンを導入すると、リソース利用効率を向上できる。

各プロセスは見た目上はCPUを独占しているようであり、このようなCPUを仮想CPUと呼ぶ。

仮想CPUは、実際のCPUよりも実行速度は遅いが、独自のレジスターを持ち全ての命令を実行できるCPUととらえて良い。

システムコールは、I/Oを要求する等のために呼ばれるもので、スーパーバイザーコール(SVC)によって行われる。

スーパーバイザーコールは、割り込みを発生させる特別の命令である。

プログラムステータスワード(PSW)は、プログラムカウンターを含んでいる。

システムコールや割り込みが発生すると、割り込み処理ルーチンが実行され、割り込み処理ルーチンは、CPUレジスターの内容を保存し、プログラムステータスワードの内容はハードウェアにより自動的に保存される。

元のプロセスに戻すことは、レジスターの内容とプログラムステータスワードを元の状態に戻すことにより可能である。

オペレーティングシステムの各(ニュークリアスまたはスーパーバイザー)は、マスターモードまたはスーパーバイザーモードで実行される部分を言うことが多く、CPUディスパッチャー、プロセス間通信機能、入出力スーパーバイザー(入出力機器等のモニター)、割り込み処理ルーチンなどを含む。

マスターモードとは、全てのリソースにアクセスできるCPUの実行モードであり、スレーブモードはリソースへのアクセスが制限される。

割り込み処理ルーチンは、割り込みの種類ごとに用意されることが多い。

プログラムステータスワードは、CPUレジスターの一種であり、プログラムカウンター、割り込みコード(割り込みの理由)、割り込みマスク(各割り込みの種類に対して、その割り込みを禁止すべきか否かを指定するビット列)、実行モードを含む。

プログラムステータスワードは、いくつかのうレジスターに分散していることもある。

割り込みの種類
(1) スーパーバイザーコール割り込み
    スレーブモードで実行されるプログラムが、核のサービスを利用する時は、スーパーバイザーコール命令により要求する。スーパーバイザーコールで割り込みを発生させると、割り込み処理ルーチンを経由して、核に制御が移る。
(2) 入出力割り込み
    I/O操作が完了すると発生する。割り込みコードとして正常終了か否かと、エラーの場合にはエラーの種類を記録する。
(3) プログラムチェック割り込み
    オーバーフロー、ゼロによる除算、特権命令のスレーブモードでの実行、記憶保護違反などプログラムの様々なエラーにより発生する。
(4) マシンチェック割り込み
    ハードウェアの障害で発生する。
(5) 外部割り込み
    インターバルタイマーの終了、他のプロセッサーや外部センサーからの信号などから発生する。
(6) リスタート割り込み
    リスタートボタン押下や他のプロセッサーからのリスタート信号により発生する。

各割り込みに対して、割り込み処理ルーチンの開始番地とその実行に必要な情報を保持した、プログラムステータスワードの内容な用意されている。

コンテクストスイッチングとは、スレーブモードのプログラムがスーパーバイザーコールを実行した時に、プログラムステータスワードが入れ替わって、スレーブモードのプログラムから、スーパーバイザーコール割り込み処理ルーチンに、CPUの動作が切り替わりこと、または、逆の操作をして、スーパーバイザーコール割り込み処理ルーチンからスレーブモードのプログラムに戻ることを言う。

プログラムステータスワードは割り込みの種類ごとに用意されているので、1つの割り込みの処理中に、別の種類の割り込みが発生しても良い。

プロセスを実行するのに重要で、頻繁に参照されたり、変更したりする情報は、主記憶内のデータ構造に保持される。これをプロセス制御ブロック(PCB)またはプロセス状態ブロックと呼ぶ。

プロセス制御ブロックに通常含まれるものは以下の通り。
* CPUレジスターの内容(プロセスが実行中でない時)
* プログラムカウンターの内容(プロセスが実行中でない時)
* 現在のプロセスの状態(実行中、実行可能、待ち状態)
* プロテクションの状態(主記憶のアクセス制御に関する情報)
* プロセスの名前
* プロセスの優先度
* 実行時間(CPU時間)
* 仮想記憶についての情報(仮想記憶の位置など)

プロセス制御ブロックは、オペレーティングシステムが必要とする全ての情報が保持され、常駐領域に置かれる。

常駐領域とは、オペレーティングシステムの核が永久的に占めている主記憶内の領域を言う。

実行中、実行可能、待ち状態の各キューは、プロセス制御ブロックを要素とする行列として管理する。

Comments

Popular posts from this blog

#5000へCメールを送れないau端末でezweb.ne.jpの電子メールアドレスをIMAP4/SMTPで扱う方法

PostgreSQLのOracle Foreign Data WrapperをWindowsで使う

Vaio Pro 11/13用のサードパーティーのACアダプター