GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana copy-on-write di fork() menangani banyak fork?

Jika fork dipanggil beberapa kali dari proses induk asli, maka masing-masing anak dan induk akan memiliki halaman yang ditandai sebagai hanya-baca. Ketika proses anak mencoba untuk menulis data maka halaman dari proses induk disalin ke ruang alamatnya dan halaman yang disalin ditandai sebagai dapat ditulisi pada anak tetapi tidak pada induk.

Jika fork dipanggil dari proses anak dan cucu mencoba menulis, halaman dari induk asli disalin ke anak pertama, lalu ke cucu, dan semuanya ditandai sebagai dapat ditulisi.


Halaman asli hanya ditandai dapat ditulisi jika termasuk dalam satu proses, yang mungkin tidak demikian jika ada banyak cabang. Halaman baru selalu ditandai sebagai dapat ditulisi karena hanya dimiliki oleh proses yang mencoba menulisnya.


Linux
  1. Bagaimana Siklus Hidup Proses Linux Bekerja – Proses Induk, Anak, dan Init

  2. Bagaimana cara mengatur direktori kerja dari proses induk?

  3. Secara khusus, bagaimana fork() menangani memori yang dialokasikan secara dinamis dari malloc() di Linux?

  1. Bagaimana cara kerja copy_from_user dari kernel Linux secara internal?

  2. Cara membunuh proses zombie

  3. Cara mendapatkan proses anak dari proses induk

  1. Bagaimana cara mendapatkan PID induk dari proses yang diberikan di GNU/Linux dari baris perintah?

  2. Bagaimana cara memotong proses yang tidak mati saat shell keluar?

  3. Beberapa masukan standar? Bagaimana?