Jika saya memiliki program yang berjalan dengan utas dan memanggil fork()
sistem berbasis unix, apakah utas disalin? Saya tahu bahwa memori virtual untuk proses saat ini disalin 1: 1 ke proses baru yang dihasilkan. Saya tahu bahwa utas memiliki tumpukan mereka sendiri dalam memori virtual suatu proses. Jadi, setidaknya tumpukan utas juga harus disalin. Namun, saya tidak tahu apakah ada sesuatu yang lebih untuk utas yang tidak berada dalam memori virtual dan karenanya TIDAK disalin. Jika tidak, apakah kedua proses berbagi utas atau apakah itu salinan independen?
Dari Spesifikasi Open Group Base Edisi 7, fork edisi 2018 :
sumber
Awalnya, "garpu" dicapai dengan menulis tugas ke disk dan kemudian, daripada membaca di utas yang berbeda (yang akan dilakukan jika bertukar tugas dengan yang berbeda), memodifikasi ID tugas gambar masih dalam memori dan melanjutkan dengan eksekusi (sebagai tugas baru). Ini adalah modifikasi yang sangat sederhana untuk mekanisme switching tugas dasar, di mana hanya satu tugas yang akan menempati memori RAM pada suatu waktu.
Tentu saja, ketika manajemen memori menjadi lebih rumit, skema ini dimodifikasi agar sesuai dengan lingkungan baru.
sumber