タスク管理
<タスクの状態遷移>
・実行可能状態:タスクがCPUを使えるようになるのを待っている状態
・実行状態:タスクがCPUを使って実行している状態
・待ち状態:自分が要求した入出力動作が終わるのを待っている状態
①実行可能状態から実行状態へ
タスクが生成されると、まず実行可能状態になる。自分の番がきてCPUが使えるようになると、実行状態へ移る。
②実行状態から実行可能状態へ
割り当てられたCPUの使用時間を使い切った時や、実行中に別のタスクからCPUの使用権を奪われた場合、実行状態のタスクは一時中断し、再び実行可能状態になる。
③実行状態から待ち状態へ
実行状態中に入出力動作が発生すると、自分が要求した入出力処理が終わるまで待ち状態となる。
④待ち状態から実行可能状態へ
入出力処理が終了すると、再び実行可能状態になる。
<タスクスケジューリング方式>
タスクスケジューリング方式
複数のタスクをどの順番で実行すべきか決める方法
●優先度方式
優先度の高いタスクから順に実行する方式
●タイムスライス方式(ラウンドロビン方式)
複数のタスクに対して均等にCPU処理時間を割り当て、順番通りに実行する方式。
ノンプリエイティブなスケジューリング方式
OSがタスクを切り替えるのではなく、実行状態のタスクが自ら待ち状態に遷移するか、終了するまで他のタスクが実行状態に遷移しない方法
プリエイティブなスケジューリング方式
OSが強制的にタスクを切り替える方式
マルチプログラミング(マルチタスク、多重プログラミング)
タイムスライス方式では、非常に小さな時間単位でタスク処理を実行しているため、まるで複数のタスクが同時並行で処理されているように見える。見かけ上、複数のプログラムが同時に実行されているように見えるOSの働きのこと。
<割込み処理>
割込み処理
実行中のタスクを一時中断して、別のタスクの処理に切り替える仕組み
●内部割込み
・プログラム割込み
桁あふれやゼロによる徐算など、プログラム上のエラーによって発生する割込み
・SVC割込み
プログラム内部から入出力装置を使う時など、監視プログラム(SVC:SuperVisor Call)を呼び出す時に発生する割込み
●外部割込み
・マシンチェック割込み
ハードウェアの誤動作や故障により発生する割込み
・入出力割込み
入出力動作が終了した時に発生する割込み
・タイマ割込み
プログラムの実行時間が割り当てられた時間を超えた時に、指定された時間が経過したらその旨を通知するインターバルタイマによって発生する割込み
スプーリング
タスクの実行結果である出力データを一時的に高速な補助記憶装置に蓄えることで、印刷など出力までの待ち時間を減らす方法