web-dev-qa-db-ja.com

スタックとプロセステーブルの関係は何ですか?

ウィキペディアや他の多くの情報源によると、

PCBにはプロセスの重要な情報が含まれているため、通常のユーザーアクセスから保護されたメモリ領域に保持する必要があります。一部のオペレーティングシステムでは、PCB isプロセスのカーネルスタックの先頭に配置されます。これは、保護された便利な場所だからです。

これは非常に理にかなっています。切り替えが発生した場合、現在のコンテキストをどこかに保存する必要があり、(カーネル)スタックはそれを行うのに適した場所に見えます。しかし、タネンバウムは次のように述べています

プロセスモデルを実装するために、オペレーティングシステムは、プロセスごとに1つのエントリを持つ、プロセステーブルと呼ばれるテーブル(構造の配列)を維持します。 (一部の作成者はこれらのエントリをプロセス制御ブロックと呼びます。)

後で、タネンバウムは、プロセスコンテキストがスタックに保存されると述べています。明らかに、プロセステーブルとスタックは別の獣であり、今私は混乱しています:スタックとプロセステーブルの関係は何ですか?

タネンバウムは、プロセスに関する情報を保存する一般的な方法が2つあると言っています。特定のOSがそれをどのように選択するか(カーネルスタックまたはテーブル/配列)は、OS設計者が利用できる無数の自由の1つにすぎません。

OS設計者はそれらを呼び出す必要さえありません プロセス制御ブロック

1
Warren Young