kariaの日記 @ Alice::Diary

ノリツッコミの鳩子がはてなブログ書いちゃうよ

<a href="http://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E7%AE%A1%E7%90%86" title="プロセス管理 - Wikipediaへ">プロセス管理 - Wikipedia</a>

プロセスの実行に関しては、プロセスを次の三つの状態に分けて管理する。

  • 実行状態
  • 実行可能状態
  • 待ち状態

この「三つの状態」(と便宜的に呼ばせていただく)はスケジューリング関連で確かによく聞く言葉なんだけど、これらの状態についての文章を読んでると非常に混乱する。何故ならば「実行可能状態」という言葉が紛らわしいからだ。

「実行状態」は言葉の通りCPUを使用している状態だし、「待ち状態」も言葉の通りCPUを使用していない状態のことを指す。じゃあ「実行可能状態」は何なのかというと、私の認識が正しければ「CPUを今すぐにでも使える(=実行可能)が空き等々の理由で待機している状態」のことを指す。つまりCPUは使ってないのだ。

じゃあそれは「待ち状態」と同じじゃないのかというとそれは違う。「待ち状態」はI/Oなどの処理中の状態を指し、CPUを使いたくても他の用事に忙しくて使えない状況なのだ。つまり「入出力処理の終了待ち」の「待ち」である。「CPUの空き待ち」状態ではない。

しかしながら、「実行状態」は「CPU上で実行している」状態であるのは間違いなくて、要するにこの「三つの状態」は日本語としておかしいのではないかと思う。CPUを使用可能かどうかという観点で用語を統一すべきで、現在の「実行可能状態」を『待ち状態』もしくは同等の言葉、現在の「待ち状態」を『CPU使用不可状態』『他の処理待ち状態』などとすれば、わかりやすくなる気がする。

ただ、自分がこの三状態をちゃんと理解してないだけという可能性も否定できないのであまり強くは主張できない。誰か補足願います。