Linuxカーネルに関する技術情報を集めていくプロジェクトです。現在、Linuxカーネル2.6解読室の第2章までを公開中。
以下にこのあとの説明で使用するtask_struct構造体の主なメンバを示す。
主なメンバ
struct task_struct { struct files_struct* files; //ファイルディスクリプタ struct signal_struct* sig; //シグナルハンドラ struct mm_struct* mm; //メモリ管理モジュール long stat //プロセス状態 struct list_head runlist; //RUNキュー接続用 long priority; //ベースプライオリティ long counter; //変動プライオリティ char comm[]; //コマンド名 struct thread_struct tss; //コンテキストセーブ域 };
forkにより新しいプロセスが生まれた場合、全ての資源のコピーを行う。ただし、空間メモリはCopy-On-Writeとし、次に書き込みアクセスがあるときまでコピー処理を送らせている。ファイルに関してはファイルディスクリプタのコピーのみを行いfile構造体は共有する。この仕組みのお蔭でshellから起動されたコマンドが何も考えずに、そのまま標準入出力を利用したり、またパイプやリダイレクションを利用したりすることができる。
(NIS)HirokazuTakahashi
2000年12月09日 (土) 23時55分06秒 JST1
[PageInfo]
LastUpdate: 2008-08-27 14:19:02, ModifiedBy: hiromichi-m
[Permissions]
view:all, edit:login users, delete/config:members