【コラム】
プロセスのメモリに関する話題はこのあたりにして、再び焦点をスケジューリングにちょっと戻してみたい。WindowsにおけるThreadの状態遷移は6.5.6(上巻P391~)にまとめられている。Windows 2000/XPが図6-14(上巻P392)、Windows Server 2003が図6-15(上巻P395)に示されている。両者の違いは(上巻P395に有るとおり)遅延レディという新しいステートの追加にあるが、これは本質的な違いではない。
さて、これがVMSではどうだったか? というのが図1である。これはIDSのFigure 12.6の抜粋であるが、流石にこのままでは訳が判らないので用語を説明しておくと、
となっている。LEF/HIB/SUSPに関してはInswappedとOutswapedで状態が分かれているのに対し、PFW/FPG/COLPGが分かれていないのは、こちらが本質的にはいずれもPage Faultに関連する待ちだから、ということになる。その意味ではMWAITもMWAITOがあっても良さそうだが、これは細かいものを全部個別に分けていたらキリがないので纏めてしまったのであろう。
さて、先のWindowsのスレッド状態遷移と比較すると、一見だいぶ違うようで、実際はかなり近い構造になっていることが判る。図2に、Windowsのスレッド遷移状態の用語にあわせた形で上書きしたものを示すが、まとめてみるとかなり近い事が判る。実際、Windowsのスレッド遷移図は、OSとしてはごく一般的なものと言ってよい。
大きな違いは、VMSにおけるCOM状態が、Windowsではレディとスタンバイの2つに分かれる事だろう。これについては、スレッド対応が必要になったWindowsならでは、の対処と考えると理解がしやすい。例えばWindows環境で、あるProcessとそれに属するスレッド全部がPage In待ちになっていたとする(VMSで言えばPFW状態)。この状態が解消した場合、VMSではその当該Processの実行Contextは一意に決まるが、WindowsではそのProcessが複数Threadを持つから、実行Contextを選択するためにはProcessからThreadを選ばねばならない。ここでもう一段、ラウンドロビンをかますためには状態を分離したほうが得策と考えられるからだ。Process単位のスケジューリングとThread単位のスケジューリングを一緒にするのは、あまり賢明とは言いがたい。
ちなみに初期化の段階がVMSではCOMO(つまり移行)に繋がるのに対し、Windowsではレディに繋がるが、これはProcessの生成(つまりメモリの確保からはじめないといけない)とThreadの生成(つまりProcessは既に存在しており、メモリも確保されている)で前提が違うからで、本質的な違いではないと考えられる。
| 【レポート】マカフィーの世界の専門家の意識調査「サイバー防衛報告書」とセキュリティソリューション [21:15 5/25] |
| アップル、Aperture 3.2.4を公開 - バグ修正、安定性向上など [20:51 5/25] |
| 【レポート】GTC 2012 - VGXでエンタープライズ環境でのGPU需要開拓を狙うNVIDIA [20:07 5/25] |
| デル、期間限定キャンペーンに特価アイテム追加、アップグレード無料も継続 [19:41 5/25] |
| 上海問屋、iPhoneとほぼ同じ薄さのバッテリ内蔵ヘッドホンアンプ [19:05 5/25] |
|
【連載】これだけは要チェック! TOEIC(R)単語帳 第108回 今回のお題は…「issue」 [20:00 5/27] キャリア |
|
TVアニメ『ペルソナ4』、新規カットを加えた再編集版を劇場でイベント上映 [20:00 5/27] ホビー |
|
「ギャラクシーエンジェル」の大月悠祐子がWEBで新連載 [19:52 5/27] ホビー |
|
[9nine]制服姿見納め? セーラー服で登場も川島海荷「4人はコスプレ」 [19:15 5/27] エンタメ |
|
「NO.6」4巻は書き下ろしドラマCD付、木乃のサイン会も [18:49 5/27] ホビー |