GNU/Linux >> Linux の 問題 >  >> Linux

fork() のコピーオンライトは複数のフォークをどのように処理しますか?

fork の場合 が元の親プロセスから複数回呼び出されると、それぞれの子プロセスと親プロセスのページが読み取り専用としてマークされます。子プロセスがデータを書き込もうとすると、親プロセスのページがそのアドレス空間にコピーされ、コピーされたページは子では書き込み可能としてマークされますが、親ではマークされません。

fork の場合 が子プロセスから呼び出され、孫が書き込みを試みると、元の親のページが最初の子にコピーされ、次に孫にコピーされ、すべてが書き込み可能としてマークされます。


元のページは、単一のプロセスに属している場合にのみ書き込み可能とマークされます。これは、複数のフォークがあった場合には当てはまらない可能性があります。新しいページは、書き込みを試みたプロセスにのみ属しているため、常に書き込み可能としてマークされます。


Linux
  1. 親が初期化されているプロセスを強制終了する方法は?

  2. フォーク爆弾はどのように機能しますか?

  3. Linux – Node.js /クラスターモジュールは、マスター/親プロセスから子プロセスに新しい接続をどのように渡しますか?

  1. 親が終了した後に子プロセスを終了させる方法は?

  2. 親プロセスの作業ディレクトリを設定するにはどうすればよいですか?

  3. 具体的には、fork() は Linux で malloc() から動的に割り当てられたメモリをどのように処理しますか?

  1. ゾンビプロセスを強制終了する方法

  2. 親プロセスから子プロセスを取得する方法

  3. コマンドラインからGNU/Linuxで特定のプロセスの親PIDを取得するには?