問題
応用情報技術者平成26年春期 午前問16
OSのプロセス制御におけるプリエンプティブ方式に関する記述のうち,適切なものはどれか。
- 各プロセスがシステム資源を自主管理できるので,マルチプログラミングに向いている。
- ノンプリエンプティブ方式に比べて,コンテキスト切替えのためのオーバヘッドが小さい。
- ノンプリエンプティブ方式に比べて,特定のプロセスがプロセッサを独占することが多い。
- プリエンプティブ方式を実現するには,OSがプロセスを強制的に切り替えて実行する機構が必要になる。
答え
プリエンプティブ方式を実現するには、OSがプロセス制御を強制的に切り替えて実行する機構が必要となる。
解説
「プリエンプティブ方式」とは、システム管理をOSが行うことで、マルチタスクを実現する方法のことです。
「プリエンプティブ方式」の対義語は、「ノンプリエンプティブ方式」で、これは各プロセスが自主的にシステム資源の管理を行います。
‘preemptive’ という単語自体は、’preemption’ という単語の形容詞で、’pre-‘ 先に ‘emption’ 買う 、つまり「先に買う権利」というような意味合いの単語からきています。
マルチタスク
マルチタスクとは、一つのコンピュータで複数のタスクを切り替えて同時に実行することです。
誰がマルチタスクを管理するかで、OSが管理するプリエンプティブ方式とそれぞれのプロセスが自主的に管理するノンプリエンプティブ方式に分かれます。
「マルチタスク」の対義語は「シングルタスク」で、一つのタスクを実行している時は、そのタスクが終了するまで他のタスクは行いません。
マルチタスク (英: multi tasking) は、コンピュータにおいて複数のタスク(プロセス)を切り替えて実行できるシステムのことである。Unixなど「プロセス」という用語を使うシステムではマルチプロセスともいう(ほぼ同じものを別のシステムでは別の名で呼んでいることもあれば、違うものを同じ名で呼んでいることもあれば、何らかの理由で呼び分けていることもある)。
出典: フリー百科事典『ウィキペディア(Wikipedia)』
プリエンプティブ・マルチタスク
プリエンプティブ方式では、システム管理をOSが行い、マルチタスクを実現します。
そのため、OSがプロセスを強制的に切り替えて実行する仕組み(例えば、一定時間が経過したらそのプロセスは中断し別のプロセスを実行する)が必要になります。
プロセスの切替えがノンプリエンプティブ・マルチタスクと比較すると多く発生するので、処理のオーバヘッド(負荷)は大きくなります。
タスクの切り替えにはハードウェアタイマ割り込みが用いられることが多く、この場合割り込みによって一定時間内(タイムスライス)に強制的にオペレーティングシステム (以下、OS) に制御が移る。OSは一定の方式に従い次のタイムスライスを実行中のタスク・プロセス・スレッド(マルチスレッドOSの場合)に割り当てる。このことをプリエンプション (横取り) という。
出典: フリー百科事典『ウィキペディア(Wikipedia)』
ノンプリエンプティブ・マルチタスク
ノンプリエンプティブ方式は、各プロセスがシステム資源を自主管理する方式です。
プリエンプティ部方式のような処理のオーバーヘッドは生じません。
しかし、特定のプロセスが長時間システムを独占してしまう可能性があり、この場合は実質的にシングルタスクと同じになってしまいます。
各タスク自身が、短い時間間隔でOSに処理を返す方式によって実現されているものを、ノンプリエンプティブなマルチタスク、協調的マルチタスクという。
出典: フリー百科事典『ウィキペディア(Wikipedia)』