[[PageNavi(internal22-navi)]]
{{{ comment
h2w-title:プロセスを構成する資源
}}}
== プロセスを構成する資源 == #SECTION02111000000000000000
以下にこのあとの説明で使用するtask_struct構造体の主なメンバを示す。
主なメンバ
{{{
struct task_struct {
struct files_struct* files; //ファイルディスクリプタ
struct signal_struct* sig; //シグナルハンドラ
struct mm_struct* mm; //メモリ管理モジュール
long stat //プロセス状態
task_struct* next_run, prev_run; //RUNキュー接続用
long priority; //ベースプライオリティ
long counter; //変動プライオリティ
char comm[]; //コマンド名
struct thread_struct tss; //コンテキストセーブ域
};
}}}
forkにより新しいプロセスが生まれた場合、全ての資源のコピーを行う。ただし、空間メモリはCopy-On-Writeとし、次に書き込みアクセスがあるときまでコピー処理を送らせている。ファイルに関してはファイルディスクリプタのコピーのみを行いfile構造体は共有する。この仕組みのお蔭でshellから起動されたコマンドが何も考えずに、そのまま標準入出力を利用したり、またパイプやリダイレクションを利用したりすることができる。
[[Embed(internal22-images:img2.gif)]]
----
''(NIS)HirokazuTakahashi [[BR]]2000年06月11日 (日) 22時29分57秒 JST''1
[[PageNavi(internal22-navi)]]