ゼロからの情報システム

  現代社会の情報インフラの仕組みをゼロから学べます.

待ち状態

情報社会に生きるアナタ.
自動車社会で自動車や高速道路や宅配便のこと知らないで生きていけますか.
情報社会では,スマホやパソコンやインターネットやウェブが,自動車や高速道路や宅配便に相当します.
このサイトは,パソコン使いのパソコン知らず,を対象に情報社会の基盤技術を説明します.

2.25 待ち状態は他からのメッセージを待つ時に発生する

プロセスはその実行中に,CPUや他のプロセスからメッセージが渡されるのを待つことが必要になると,図13の「待ち状態」になります.メッセージとはある種のデータあるいは信号です.

メッセージの伝達が必要なことには,「決められた時間が経過した」「インターネットからの信号が来た」「マウスが移動した」「マウスがクリックされた」「キーボードが打たれた」「ハードディスクからデータが来た」等があります.このようなことが発生した時に,これらの発生を待っているプロセス宛てにメッセージが送られます

パソコンのOSは,パソコンの状態を監視していますから,どこかから何かの信号(割り込み1.34参照)が入ると,そのことを宛先のプロセスに伝えます.これを「メッセージを伝える」と言います.

しかし,待ち状態のプロセスは,当然,メッセージを受けとることはできません.なにせ,プログラムの処理が行われていないのですから.

そこでOSは,メッセージを伝えるだけではなく,待ち状態のプロセスにクオンタムを割り当てて,処理を再開することもしなければなりません.

しかし,待ち状態のプロセスの再開とメッセージ伝達のタイミングをぴったり合わせることは至難の業です.なにせ,ナノ(10億分の1)秒という微妙なタイミングを合わせなければなりません.

この課題は次のようにすれば解決できます.

それはメッセージをどこかに記憶しておき,「待ち状態にあるプロセスが再開するとき,必ず記憶してあるメッセージを取り出して処理する」というルールを徹底することです.

記憶したメッセージをメッセージキューと呼びます.キューとは「処理待ち」というような意味の英語です.ですから,メッセージキューというのは,処理待ちをしているメッセージの行列,というような意味合いです.

待ち状態にあるプロセスが再開されると,メッセージキューからメッセージを1つ取り出してこれを処理する,ということを繰り返す処理(これをメッセージループと呼びます)を必ず行うものとします.

すると,次のようにタイミング合わせの問題は解消します.

メッセージの受け渡しを媒介するのはOSの仕事ですから,OSはメッセージキューにメッセージがあるプロセスはどれかを把握することができます.そこで,このプロセスを待ち状態から実行可能状態に変更します.

 このプロセスが実行状態になるとき,最初に処理すべきメッセージはメッセージキューに記憶されているので,これを取り出して処理すればよいのです.言い換えれば,メッセージループを実行します.

2.24 次に実行するプロセスは実行可能状態にあるものから選びます

前項では,プロセスを切り替える際に候補とするプロセスは,実行中のプロセスの中で優先度が最も高いものであることを述べました.しかし,実行中のプロセスすべてが選択の対象になるのではありません.そこで,どうやって次に実行するプロセスの候補を絞り込むのかが,T3の問題(2.21参照)です.

図13はタスクが開始されて生成されたプロセスが終了するまでにとる可能性のある状態とそれらの間の移行関係を整理したものです.


図13

 

13 プロセスの状態の推移

実行状態(=CPUが処理中)のプロセスはタイムスライスで他のプロセスに横取りされて中断されると,次に実行の順番が来るのを待ちます.つまり,図13の「実行可能状態」になります.実行可能状態とは,OSに選択された場合,続きの処理を即座に再開する準備がすでに整っている状態を指します.

プロセスは次項で説明するような事情で「待ち状態」になることがあります.この時,この原因となった事情が解消されると実行可能状態に移行します.

待ち状態にあるプロセスは,次項で説明するような理由のために,次に実行するものとして選択されて実行状態に直接移行することはありません.

つまり,待ち状態にあるプロセスは2.22で説明した,次に処理するプロセスの候補にはなりません.

したがってOSは,実行可能状態にあって,優先度が最も高いプロセスだけを処理の対象にするのです.そのようなプロセスは,開始(生成)したばかりか,CPUを横取りされて中断中(実行可能状態)か,待ち状態から解放されて実行可能状態に移行したか,のどれかです.

以上が特定の極めて少数のプロセスだけにゼロでない「CPU」値が,タスクマネージャのプロセスタブ(図11)で表示される理由です.

パソコンでは,多数のプロセスを実行中であるにもかかわらず,快適に作業ができる秘密がここにあります.

プロフィール

ヤッキー

カテゴリ別アーカイブ
タグクラウド
QRコード
QRコード
  • ライブドアブログ