追加読書

追加読書

UNIX分野のテーマがu登場しましたコメントから。それは何ですか?

ベストアンサー1

AT&T Unixと歴史的にBSDにはプロセスのみがあり、プロセステーブルの各エントリはstruct proc構造とstruct user構造の2つの部分で構成されています。前者は常にカーネルメモリに常駐します。後者は交換プロセスの一部として交換することができます。 (これは実際にUnicesにあることを覚えなさい。交換されたよりむしろリクエストに応じてページングそれらを。 )

このstruct user構造は「u-zone」としても知られている。これは、巧妙なメモリマッピングのおかげで、現在のプロセスのuser構造が常にカーネルメモリの同じ固定仮想アドレスにありu(ポインタではなく)グローバルシンボルを介してコードで参照できるためです。

この構造には、ファイル生成マスク、開かれたファイル記述子テーブル、リソース制限など、プロセスが現在実行中のプロセスでない場合にカーネルに必要とされないさまざまな事項が含まれています。信号のアドレスが含まれています。マネージャーこれは、プロセスが実行中でハンドラを呼び出そうとする場合にのみ必要であり、シグナルブロックまたは保留中のシグナルセットのマスクではありません。どちらもプロセスが置き換えられたときに必要なため、struct proc一部のUnicesにはパラメータも含まれています。現在のI/Oジョブをスタックに渡す代わりに

もちろん、このデザインの根拠は長続きしませんでした。 1980年代後半にはほとんど役に立たなくなりました。グローバル変数と賢いメモリマッピングは、最終的にポインタを介した単純な間接参照に置き換えられました。このファイルはstruct userBSD(Resources)のCライブラリヘッダファイルにまだ存在します<sys/user.h>が、主にソースコードの互換性のために存在します。 XNUから、実際には空の構造として宣言されています。 FreeBSDノートこれは、a.out形式で実行されるコアダンプに使用されるため、主に存在します。 Linuxはアイデアが無駄になるまで存在しなかったし、実際にはそうしません。

このデザインにはわずかな変動があります。例:AT&T Unix System 5には、struct euser一部のコンテンツを含む構造フィールドが指す「拡張ユーザー領域」があります。これは別のポイントを示しています。すべてのメンバ変数の命名は、当時のCカーネルコーディング規則と初期言語規則に従います。 u_euserpustruct useru_somethingumaskこんな名前がついた理由もこれのためだと思います。、確かではありませんが。

追加読書

  • スティーブD.フェイト(1996)。 UNIX内部:実用的なアプローチ。アディソン - ウェスリー。 ISBN 9780201877212.
  • バッハ、モリスJ.(1987)。Unix®オペレーティングシステムの設計。フレンティスホール。 ISBN 0132017571.

おすすめ記事