2011-03-22 9 views
1

すべての_EPROCESSオブジェクトがActiveProcessListリンクを介して相互にリンクされていることに気付きました。
このリストの目的は何ですか?
OSはこのアクティブプロセスのリストをどのように使用していますか?Windowsのアクティブプロセスリストの目的は?

+0

OSはどこかのプロセスを追跡する必要があります... – Luke

+0

統計情報の目的から離れて、私は本当にこの背後にある**実際の目的を思いつくことができませんでした。 .Hence私の質問 –

+0

どこにプロセスのリストがなかった場合、どのようにタスクマネージャが動作しますか? – Luke

答えて

2

Windows NTでは、スケジュール可能なユニットはスレッドです。プロセスはスレッドのコンテナとして機能し、また、仮想メモリマップがアクティブなもの(およびその他のもの)を定義する抽象としても機能します。

すべてのオペレーティングシステムでは、この情報を利用できるようにする必要があります。異なる時間に、オペレーティングシステムのさまざまなコンポーネントが、特定の特性に一致するプロセスを検索する必要があるか、またはすべてのアクティブなプロセスを評価する必要がある可能性があります。

この情報はどのように保存されますか?なぜメモリ内の巨大な配列はありませんか?まあ、その配列はどれくらい大きくなるだろうか?アクティブなプロセスの数をこの配列のサイズに制限することは快適ですか?配列を拡大できない場合はどうなりますか?プロセスを追跡するために、すべてのメモリを予約する準備ができていますか?低プロセスのユースケースでは、それほど多くの無駄なメモリではないでしょうか?

リンクされたリストに保存することができます。

私たちはプロセスコンテキストを気にしますが、スレッドコンテキストを気にしないNTではいくつかの機会があります。それらの1つはI/O完了です。 I/O操作がオペレーティング・システムによって非同期に処理される場合、そのI/Oの最終的な完了は、要求プロセス・コンテキストとは異なるプロセス・コンテキスト内にある可能性があります。したがって、我々はこのプロセスに「アタッチ」できるように、元のプロセスに関するいくつかの記録と情報を必要としています。プロセスに「アタッチ」することで、適切なユーザーモードメモリを使用して適切なコンテキストにスワップします。私たちはスレッドのコンテキストを気にしません。プロセスのコンテキストを気にするので、これはうまくいきます。

+0

素敵な答え.... –