コバヤシクエストLv3 〜ソフトウェア編 狭義のOS③ 〜

皆様こんにちは。
本日は狭義のOSタスク管理のうち、タスクの状態遷移について取り上げます。

いつもの例にしたがい参考までに全体の位置付けの図を記載します。

それでは本日も見て参りましょう!

タスクの状態遷移

前回の記事でタスクの処理方法を見て参りました。

処理が必要なタスクやスレッドが沢山あると、コンピュータはCPUを効率的に使い処理をしなければなりません。
CPUを効率的に利用するには、やること(タスク)の状態を管理しなければなりません。
そこで、やることの状態を管理するため、タスクの状態遷移を見て参ります。

タスクの状態には、実行可能状態実行状態待機状態の3つの状態があります。

待機状態は、プリンタ出力等の優先順位が高いタスク発生により入出力終了を待機している状態です。
実行状態は実行中。
実行可能状態は、OSからCPUが割り当てられ次第実行を開始する状態。

OSから、CPUの使用権を得ることをディスパッチングと言います。

また、割込処理が発生した場合等に、実行状態から再度実行状態へ復帰ができず、改めてディスパッチングを得るために実行可能状態から並び直しとなることをプリエンプションと言います。
下記図、黄色アイコンの実行状態からクラウチングスタートをする姿勢の実行可能状態へ戻ります。

タスクの割当て方式

コンピュータが作業処理をする場合のタスク状態遷移を見て参りました。

次はタスク状態遷移が行われている状況、つまりコンピュータが作業処理をするにあたり、OSがCPUを効率的に利用するためには、どのタスクにディスパッチングを割当てる必要があるでしょうか。

タスクの割当て方式について見て参ります。

到着順方式
この方式は、到着順に処理をするため、OSから一度割り当てられたディスパッチングは奪われません。
このディスパッチングが奪われないことをノンプリエンプションと表現をします。

会計レジ待ちに順番抜かしをされず最後尾に並び直さなくて良いノンプリエンプションです。

ラウンドロビン方式
平等にディスパッチングを使用できる代わりに、一定の時間が経過した場合は他のタスクにCPU使用権を譲ります
また次のディスパッチングが回ってくるのを最後尾に並び待ちます。

カゴの中身が多く会計に時間がかかりすぎると最後尾に並び直さいといけない。時間に厳しいラウンドロビン方式です。

優先度方式
OSが処理の優先度にしたがいディスパッチングを与え、高優先度のタスク処理が終われば低優先度のタスクを順に処理します。
もっとも、プリンタの優先出力処理など、割込処理が入った場合は、プリエンプションとなります。
ここが到着順方式との違いですね。

イメージとしては、関東にある某テーマパークの優先パスのイメージですね。
優先パスを持つ方から順に〇〇マウンテンの乗り物に乗り、その後に優先パスのない方が順にアトラクション乗り物へ案内されます。


さて本記事まででタスク管理を見て参りました。
次回はミドルウェアとアプリケーションについて取り上げ、ソフトウェア編が完結となります。

本日もご覧いただきありがとうございました。

                                                     小林 大洸

タイトルとURLをコピーしました