Fork() dan Exec()
Tulisan ini mengulas video yang dibuat oleh "Geoffrey Challen" berjudul "25 Jan 2013: fork() and exec()". Video ini berdurasi 42:42 menit, dibuat pada tahun 2013, dan dapat diakses melalui link: https://www.youtube.com/watch?v=B4XsjJcClLc. Berikut ulasannya:
Saat fork() dipanggil, akan menghasilkan dua proses baru, yakni satu buah proses yang sama dengan parent, dan satu lagi proses child yang juga menurunkan informasi parent, terkecuali child akan me-return PID 0. Artinya, fork() mereturn dua buah nilai dari dua proses yang dihasilkannya, satu PID ke parent, dan 0 untuk child.
Seluruh konten memory dari parent dan child adalah identik, baik parent maupun child memiliki file yang dibuka pada posisi yang sama.
Pada saat fork(), maka seluurh informasi parent di-copy ke child. Hal ini memiliki cost yang cukup tinggi. Terlebih jika proses child nantinya akan di load dengan binary baru. Artinya, hampir seluruh informasi parent akan dihapus setelah sebelumnya telah susah payah di-copy. Solusi untuk hal ini adalah dengan:
Ringkasan
Sistem harus menyediakan mekanisme bagi sebuah proses untuk dilakukan creation dan termination. Salah satu mekanisme ini adalah dengan menggunakan fork() dan exec(). Di dalam video ini, Geoffrey Challen menjelaskan tentang mekanisme fork(). Video ini terdiri atas beberapa sub bahasan yang telah dirangkum oleh penulis sebagaimana berikut.Fork ()
Darimana sebuah proses muncul? Salah satunya adalah dengan dieksekusinya instruksi fork(). Fork() merupakan UNIX system call untuk membuat proses baru. Fork() membuat proses baru yang merupakan copy dari proses yang memanggilnya. Setelah fork() dijalankan, maka proses sebelumnya yang memanggil fork disebut dengan parent, sementara proses baru yang dihasilkan disebut dengan child.Saat fork() dipanggil, akan menghasilkan dua proses baru, yakni satu buah proses yang sama dengan parent, dan satu lagi proses child yang juga menurunkan informasi parent, terkecuali child akan me-return PID 0. Artinya, fork() mereturn dua buah nilai dari dua proses yang dihasilkannya, satu PID ke parent, dan 0 untuk child.
Fork() |
Seluruh konten memory dari parent dan child adalah identik, baik parent maupun child memiliki file yang dibuka pada posisi yang sama.
Pipes()
Pipes() membuat object pipe yang mereturn dua buah file descriptor: satu buah untuk read only, dan satu lagi untuk write only. Artinya, pipe bersifat satu arah. Ujung yang satu untuk read only, sementara ujung yang lain untuk write only. Pipes ini lah yang menjadi penghubung antara parent dan child saat fork dipanggil. Isi pipes ter-buffer di memory.Pada saat fork(), maka seluurh informasi parent di-copy ke child. Hal ini memiliki cost yang cukup tinggi. Terlebih jika proses child nantinya akan di load dengan binary baru. Artinya, hampir seluruh informasi parent akan dihapus setelah sebelumnya telah susah payah di-copy. Solusi untuk hal ini adalah dengan:
- Optimasi semantic yang sudah ada : Copy on write
- Mengganti semantic tersebut: dengan vfork().
Copy on Write (COW)
Membolehkan baik parent maupun child untuk berbagi pages yang sama di dalam memory. Jika salah satu parent atau child melakukan modifikasi terhadap page, maka hanya modifikasi tersebut yang dicopy ulang. Hal ini menjadikan pembuatan proses menjadi lebih efisien.Vfork()
Merupakan variasi dari fork. Vfork didesain untuk memiliki child yang memanggil exec(). Vfork() akan gagal jika child melakukan hal lain selain meload nilai binary executable yang baru. Vfork sangatlah efisien.Exec()
Merupakan system call yang digunakan setelah fork() untuk menggantikan memori space dari proses dengan program yang baru.Pendapat
Video ini memperlihatkan kuliah sistem operasi yang sedang membahas materi fork dan exec. Sayangnya, pembahasan yang diberikan belumlah selesai, sehingga masih ada penjelasan pada kuliah berikutnya. Penjelasan tentang fork sudah cukup memadai, sementara penjelasan tentang exec belum memadai, terutama disebabkan durasi perkuliahan yang sudah habis. Namun, secara umum dapat diambil kesimpulan tentang penjelasan fork dan exec.Penutup
Demikian tulisan ini kami buat agar mudah dipahami pembaca. Sebagai informasi, kami memiliki GITHUB Account yang dapat dilihat melalui URL https://github.com/mmishbah. Silakan merujuk ke sana untuk melihat beberapa pekerjaan kam. Tulisan ini dapat dilihat melalui URL . Tulisan ini merupakan ulasan dari konten Youtube dengan URL https://www.youtube.com/watch?v=B4XsjJcClLc yang berdurasi 42:02 menit.
Fork dan Exec
Pengenalan Linux
Pengenalan Sistem Operasi
Alat Penyimpanan Data
Setting Kambing untuk Debian
Belajar Komputer dari Nol Masuk Sini
Cara Partisi Harddisk Tanpa Install Ulang
Terobosan Terbaru dari Random Access Memory
Wawasan IT Untuk Laki
Saat Laptop Kamu Mengeluarkan Bunyi AnehFork dan Exec
Pengenalan Linux
Pengenalan Sistem Operasi
Alat Penyimpanan Data
Setting Kambing untuk Debian
Belajar Komputer dari Nol Masuk Sini
Cara Partisi Harddisk Tanpa Install Ulang
Terobosan Terbaru dari Random Access Memory