Disyorkan, 2024

Pilihan Editor

Perbezaan Antara garpu () dan vfork ()

Kedua-dua fork () dan vfork () adalah panggilan sistem yang mencipta proses baru yang sama dengan proses yang digunakan fork () atau vfork (). Menggunakan fork () membolehkan pelaksanaan proses ibu bapa dan anak secara serentak. Cara lain, vfork () menangguhkan pelaksanaan proses induk sehingga proses anak melengkapkan pelaksanaannya. Perbezaan utama antara panggilan sistem garpu () dan vfork () ialah proses kanak-kanak yang dibuat menggunakan garpu mempunyai ruang alamat berasingan seperti proses induk. Sebaliknya, proses kanak-kanak yang dibuat menggunakan vfork perlu berkongsi ruang alamat proses induknya.

Marilah kita mencari beberapa perbezaan antara fork () dan vfork () dengan bantuan carta perbandingan yang ditunjukkan di bawah.

Carta Perbandingan

Asas untuk Perbandinganfork ()vfork ()
AsasProses anak dan proses induk mempunyai ruang alamat terpisah.Proses anak dan proses induk berkongsi ruang alamat yang sama.
PelaksanaanProses ibu bapa dan kanak-kanak dilaksanakan secara serentak.Proses ibu bapa masih digantung sehingga proses anak melengkapkan pelaksanaannya.
PengubahsuaianJika proses kanak-kanak mengubah mana-mana halaman dalam ruang alamat, ia tidak dapat dilihat dengan proses induk apabila ruang alamat berasingan.Jika proses kanak-kanak mengubah mana-mana halaman dalam ruang alamat, ia dapat dilihat dengan proses induk apabila mereka berkongsi ruang alamat yang sama.
Copy-on-writefork () menggunakan copy-on-write sebagai alternatif di mana ibu bapa dan anak berkongsi halaman yang sama sehingga salah satu dari mereka mengubah halaman yang dikongsi.vfork () tidak menggunakan copy-on-write.

Definisi garpu ()

Garpu () adalah penggunaan panggilan sistem untuk membuat proses baru . Proses baru yang dibuat oleh panggilan fork () adalah proses anak, proses yang memanggil panggilan sistem fork (). Kod proses kanak-kanak adalah sama dengan kod proses induknya. Selepas penciptaan proses kanak-kanak, kedua-dua proses iaitu ibu bapa dan proses kanak-kanak memulakan pelaksanaan mereka dari kenyataan seterusnya selepas fork () dan kedua-dua proses itu dilaksanakan secara serentak .

Proses ibu bapa dan proses anak mempunyai ruang alamat yang berasingan . Oleh itu, apabila mana-mana proses mengubah sebarang pernyataan atau pemboleh ubah dalam kod. Ia tidak akan ditunjukkan dalam kod proses lain. Mari kita katakan jika proses kanak-kanak mengubah kod itu, ia tidak akan menjejaskan proses ibu bapa.

Sesetengah proses kanak-kanak selepas penciptaannya segera memanggil exec () . Panggilan sistem exec () ini menggantikan proses dengan program yang dinyatakan dalam parameternya. Kemudian ruang alamat berasingan proses anak tidak ada gunanya. Satu alternatif di sini ialah copy-on-write.

Copy-on-write ini membenarkan proses ibu bapa dan anak untuk berkongsi ruang alamat yang sama. Jika mana-mana proses menulis pada halaman dalam ruang alamat salinan ruang alamat dibuat untuk membiarkan kedua-dua proses berfungsi secara bebas.

Definisi vfork ()

Versi garpu yang diubahsuai () adalah vfork (). Panggilan sistem vfork () juga digunakan untuk membuat proses baru. Sama seperti garpu (), di sini juga proses baru yang dibuat adalah proses anak, proses yang digunakan vfork (). Kod proses kanak-kanak juga sama dengan kod proses induk. Di sini, proses kanak-kanak menggantung pelaksanaan proses induk sehingga ia menyelesaikan pelaksanaannya kerana kedua-dua proses berkongsi ruang alamat yang sama untuk digunakan.

Oleh kerana proses anak dan ibu bapa berkongsi ruang alamat yang sama . Jika mana-mana proses mengubah kod, ia dapat dilihat oleh proses lain yang berkongsi halaman yang sama. Mari kita katakan jika proses induk mengubah kod itu; ia akan mencerminkan dalam kod proses kanak-kanak.

Seperti menggunakan vfork () tidak membuat ruang alamat yang berasingan untuk proses anak dan ibu bapa. Oleh itu, ia mesti dilaksanakan di mana proses kanak-kanak memanggil exec () sejurus selepas penciptaannya. Oleh itu, tidak akan ada pembaziran ruang alamat, dan ia adalah cara yang efisien untuk membuat proses. vfork tidak menggunakan copy-on-write .

Perbezaan Utama Antara garpu () dan vfork ()

  1. Perbezaan utama antara fork dan vfork ialah proses anak yang dibuat oleh garpu mempunyai ruang memori yang terpisah dari proses induk. Walau bagaimanapun, proses kanak-kanak yang dibuat oleh panggilan sistem vfork berkongsi ruang alamat yang sama dengan proses induknya.
  2. Proses kanak-kanak yang dibuat menggunakan garpu melaksanakan secara serentak dengan proses induk. Sebaliknya, proses kanak-kanak yang dibuat menggunakan vfork menggantung pelaksanaan proses induk sehingga pelaksanaannya selesai.
  3. Oleh kerana ruang memori ibu bapa dan proses kanak-kanak adalah pengubahsuaian berasingan yang dilakukan oleh mana-mana proses tidak menjejaskan halaman lain. Walau bagaimanapun, sebagai proses induk dan anak berkongsi modifikasi alamat memori yang sama yang dilakukan oleh mana-mana proses yang mencerminkan ruang alamat.
  4. Panggilan sistem fork () menggunakan copy-on-write sebagai alternatif, yang membolehkan proses anak dan ibu bapa berkongsi ruang alamat yang sama sehingga mana-mana satu daripada mereka mengubah halaman. Sebaliknya, vfork tidak menggunakan copy-on-write.

Kesimpulan:

Panggilan sistem vfork () mesti dilaksanakan semasa proses panggilan anak () dilaksanakan dengan segera () selepas penciptaannya menggunakan fork (). Sebagai ruang alamat berasingan untuk proses anak dan ibu bapa tidak akan digunakan di sini.

Top