pulpul 日本の試験

基本情報技術者 概念書 · ソフトウェア

OSのタスク管理と入出力

要点と定義

オペレーティングシステム(OS)は、アプリケーションとコンピュータのハードウェアの間に立ち、資源を管理して共通の機能を提供するソフトウェアです。OSはタスクの実行、記憶領域、入出力などを管理します。この節では、特にタスク管理と入出力に関する働きを扱います。

タスク(プロセス)は、実行中のプログラムをOSが管理する単位です。タスクは生成された後、実行可能状態でCPUの割当てを待ち、CPUを使う実行状態へ移ります。入出力の完了などを待つ間は待ち状態になり、完了すると再び実行可能状態になります。処理が終わると消滅します。実行可能なタスクをCPUに割り当てて実行させる操作をディスパッチといいます。タスクの実行順序を決めるスケジューリングとは役割が異なります。

一つのCPUは同時に一つのタスクを実行しますが、タスクを切り替えることで、複数のタスクが並行して進んでいるように扱えます。入出力待ちのタスクがCPUを使わない間に、別の実行可能なタスクへCPUを割り当てれば、CPUの遊休時間を減らせます。

代表的な方式のラウンドロビンでは、実行可能なタスクを順番に並べ、各タスクに一定の時間幅(タイムクウォンタム)だけCPUを割り当てます。時間幅の終了前に処理が終わらなければ、タスクをいったん実行可能状態へ戻し、順番の後ろに置きます。優先度順方式では、優先度を用いて次に実行するタスクを選びます。どちらの方式でも、具体的な選択規則や優先度の変化はシステムの設定によります。

プリエンプティブ方式は、OSが実行中のタスクを中断して別のタスクにCPUを渡せる方式です。ノンプリエンプティブ方式では、実行中のタスクが自発的にCPUを手放すまで、原則として別のタスクへ切り替えません。ディスパッチは、選ばれた実行可能タスクにCPUを割り当てる段階です。

スプーリングは、低速な入出力装置とのデータを補助記憶装置上に一時蓄積し、CPUの処理と入出力装置の処理を並行させやすくする仕組みです。たとえば、印刷データを補助記憶装置に蓄えておけば、アプリケーションは印刷装置が処理を終えるのを待たずに次の作業へ進めます。

デバイスドライバは、OSと周辺機器の間を仲介し、その機器を制御するソフトウェアです。機器ごとの違いをOSやアプリケーションから扱いやすくします。

コールドスタートは、システムを初期状態から開始する起動方法です。ここで扱う説明では、更新前後のコピーなどの前処理を伴わない初期プログラムロードを指します。

適用条件と例

タイムクウォンタムを使った問題では、CPU処理の必要時間を時間幅ごとに区切ります。たとえば時間幅が20ミリ秒で、ある処理に50ミリ秒必要なら、20、20、10ミリ秒の3区間でCPUを使います。最初と2番目の区間の終了時には処理が残っているため、時間切れによる中断が起こります。最後の10ミリ秒では処理が完了するため、時間切れによる中断はありません。したがって、この処理は合計3回実行状態になり、中断は2回です。実際の順序を求めるときは、ほかのタスクの生成時刻、入出力待ち、優先度、キューの規則も追います。

状態遷移の回数を数える場合は、CPU処理の各区間に入るたび「実行可能から実行」、入出力を始めるたび「実行から待ち」、入出力が終わって戻るたび「待ちから実行可能」と数えます。時間切れでCPU処理が残っている場合は「実行から実行可能」も数えます。先ほどの50ミリ秒の処理なら、実行開始は3回、時間切れによる実行可能への戻りは2回です。入出力の遷移は、その処理に入出力がある場合だけ発生します。

この節の続き

ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。

アプリでこの節を読む