プロが教えるわが家の防犯対策術!

OSのタスク管理で1実行可能状態、2実行状態、3待機状態があって、待機状態というのはCPUの処理を終えて入出力装置の処理を待っている状態なのですか?
タスクが生成されると[実行可能状態]にドンドン溜まるのでしょうか?そして優先的に[実行状態]に送られるのでしょうか?
あと[実行可能状態]と[待機状態]は1次キャッシュで待機している状態なのでしょうかそれともメモリで待機している状態なのでしょうか?
タスクの状態偏移について詳しく教えて下さい。

A 回答 (3件)

>待機状態というのはCPUの処理を終えて入出力装置の処理を待っている状態なのですか?


概ねそうです。待っているのは入出力装置の処理とは限らずタイマーの場合もあります。

>タスクが生成されると[実行可能状態]にドンドン溜まるのでしょうか?
生成された直後はCPU処理なのでそうなります。

>そして優先的に[実行状態]に送られるのでしょうか?
生成された直後だから優先とは限りません。タスクごとに設定された優先度に従って実行状態になります。

>あと[実行可能状態]と[待機状態]は1次キャッシュで待機している状態なのでしょうかそれともメモリで待機している状態なのでしょうか?
タスクの状態やプログラムの場所などは、タスク管理テーブルという表でメモリ上で管理されています。この表の一項目で「状態」がありそれが1,2,3のどれかになっているわけです。「メモリで待機」というのは間違った捉え方です。実行中のタスクもメモリ上にあります。全てのタスクはメモリ上にあります。実行中のタスクのプログラムのうちのちょうどたった今実行されている近辺のみがCPU上とかキャッシュ上にあるわけで、実行中のタスクでもちょうどこの瞬間の実行に関係ない部分はメモリ上にあります。
    • good
    • 0

No.1さんの参考URL詳しくて、ためになりますが、かなり難しいですね。



まず、Windows系OSと言っても世代によって全然違うと言うことを理解してください。
タスクとプロセスは同じ意味です。
もうひとつ、スレッドと言う言葉が出てきます。
マルチスレッドの場合、スケジューリングはスレッドを単位として行われます。
ここでは、マルチプロセッサーのことは考えないことにします。

情報処理技術者試験のレベルではプロセス(タスク)の状態遷移は
質問者の言われるように3つとされています。
Windows2000の場合、これが5つに細分化されていますが大きく分けると
やはり3つですね。

> 1実行可能状態、2実行状態、3待機状態があって、
> 待機状態というのはCPUの処理を終えて入出力装置の処理を待っている状態
> なのですか?
いいえ。入出力命令を実行したあと、入出力機器からの入出力完了割り込みを
待っている状態です。
他に、他のスレッドとの同期を取るために待っている状態も有ります。

> タスクが生成されると[実行可能状態]にドンドン溜まるのでしょうか?
> そして優先的に[実行状態]に送られるのでしょうか?
スレッドと読み替えればその通りです。
ノンプリエンティブ方式とプリエンティブ方式で違います。
ノンプリエンプティブ方式なら実行可能状態で待ちます。
プリエンプティブ方式では実行中のスレッドと新しいスレッドの優先度を比較して
新しいスレッドが優先度が同じか高い場合、再スケジューリングが行われます。
つまり、実行中のスレッドが入れ替わる事があるわけです。

> [実行可能状態]と[待機状態]は1次キャッシュで待機している状態なのでしょうか
> それともメモリで待機している状態なのでしょうか?
実行可能状態はメモリーで待機です。
待機状態も基本的にはメモリーで待機ですが、仮想記憶ですので、
HDDに追い出されることもあります。
No.1さんの参考URLの最後の図で「遷移」と書いてあるのがそれです。
「遷移」状態にある時に実行順が来ると、HDDから再度メモリーにロードされ、
それが完了すると実行可能状態になります。
状況によってはすぐ実行状態になることは上で述べたとおりです。
    • good
    • 0

@ITの特集ページに参考になりそうな記事がありました。



特に、後半のスレッドスケジューリングと、スレッド状態遷移の記述の部分は、
ある程度参考になるのではないでしょうか。

参考URLの部分だけでなく、この記事全体を読むと、
結構勉強になるなあ、と個人的には思いました。

ご参考までに。

参考URL:http://www.atmarkit.co.jp/fwin2k/special/win9xor …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!