|
フォーク, 分岐点, かき上げる, 立食式の =========================== 「 Fork 」を含む部分一致用語の検索リンク〔 11 件 〕 ・bite fork : バイトフォーク ・DNA replication fork : DNA複製フォーク ・fork : フォーク, 分岐点, かき上げる, 立食式の ・fork out : (金などを)しぶしぶ手渡す, 支払う(over, up) ・fork over : (金銭を)手渡す, 差し出す ・fork over (up) : Chip in; contribute; "Give" me, used especially when demanding something the other person is reluctant to give:(金を)払う, 手渡す ・front-wheel fork : 前輪ホーク ・hay fork : ヘイホーク ・rear-wheel fork : 後輪ホーク ・replication fork : 複製フォーク ・tuning fork : 音叉(おんさ)
fork(フォーク)とは、プロセスのコピーを生成するものである。UNIXおよびUnix系OSではシステムコールのひとつで、新たに作り出されたプロセスを子プロセス、 fork() を呼び出したプロセスを親プロセスと呼び、fork()システムコールの戻り値によって親と子の処理を区別する。子プロセスではfork()の戻り値は0であり、親プロセスの戻り値は新たに生成された子プロセスのプロセス識別子、エラーが起きた場合は-1である。また、マルチスレッド環境でスレッドのコピーを作ることもforkと呼ぶことがある。forkが呼び出されると、子プロセスのためのアドレス空間が新たに作成される。子プロセスのアドレス空間には親プロセスが持っていた全セグメントのコピーがあるが、コピーオンライト機能によって実際の物理メモリの確保は遅延される(すなわち、一時的に同じ物理メモリセグメント群を親子で共有する)。親プロセスと子プロセスは同じコードセグメントを持つが、独立して実行される。 == Unixにおけるforkの重要性 == Unixにとってforkは重要であり、フィルタの開発を奨励している設計哲学の重要な部分を担っている。Unixでのフィルタは標準入力を入力とし標準出力を出力とする(通常小さな)プログラムである。シェルがフィルタをパイプで連結することで、複雑な処理を実現できる。例えば次のように find(1) コマンドの出力をwc(1) コマンドの入力に連結すると、拡張子が ".cpp" のファイルをカレントディレクトリ配下で探し、見つかったファイル数を表示できる。このコマンド行を入力すると、シェルは自分自身をforkし、プロセス間通信の1つであるパイプを使って find コマンドの出力を wc コマンドの入力に結びつける。パイプは2つの新たなファイル識別子を生成し、2つの子プロセスを生成する(それぞれ find と wc に対応)。2つの子プロセスはまず dup2(2) で対応するパイプのファイル識別子を複製して標準入力と標準出力に置き換える。そしてそれぞれの子プロセスがexec(3) ファミリのシステムコールを使って、実行すべきコマンドのプログラムで自身をオーバーレイする。より一般的に、シェルはユーザーがコマンド行を入力するたびにforkを行っている。子プロセスはシェルがforkを行うことで生成され、子プロセスが exec でオーバーレイを行い、実行すべきプログラムのコードをマッピングする。抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Fork」の詳細全文を読む スポンサード リンク
|