Kerja Fork dalam Sistem Operasi

Sistem operasi UNIX mempunyai system call fork yang berfungsi untuk membuat proses baru. Proses yang memanggil system call fork ini akan dibagi jadi dua, proses induk dan proses turunan yang identik. Analoginya seperti pembelahan sel, dimana satu sel membelah jadi dua sel yang identik. Proses induk dan turunan independen satu sama lain dan berjalan bersamaan. Return code dari system call ini adalah suatu integer. Untuk proses anak return code-nya adalah 0 sementara untuk proses induk return code-nya adalah nomor identifikasi proses (PID) dari turunannya. Ada juga system call exec yang berguna untuk membuat proses turunan yang terbentuk memiliki instruksi yang berbeda dengan proses induknya. Dengan kata lain, proses induk dan proses turunan tidak lagi identik tapi masing-masing punya instruksi berbeda. (silberchatz and gagne: operating system)

cara menghitung banyaknya proses yang terbentuk ada 3 cara:
1. dengan rumus
(2^n-2)+(2^n-1)
ket: 
^ : pangkat
n : banyaknya fork yang digunakan
misal: menggunakan fungsi fork() sebanyak 2 kali. 
n= 2
(2^2-2) + (2^2-1) = 4 proses
2. dengan pohon proses
penjelasan: simbol X0 untuk proses awal. simbol X0>0 ini menandakan bahwa proses ini adalah proses parent. simbol X1,1...dst adalah proses child (anak).
saat fork() pertama dijalankan, secara langsung akan membentuk 2 proses yaitu proses parent dan child. saat menjalankan fork() yang kedua, 2 proses tadi yang udah di bentuk di fork() pertama, masing2 akan menghasilkan 2 proses lagi. Hitung banyak prosesnya dengan melihat proses yang tidak punya turunan yaitu X0>0, X1,2 , X0>0, X1,3 (ada 4 proses)

3. dengan perintah ps -axf dalam LINUX
buka text editor, ketik seperti kode di bawah ini:

 jika sudah, simpan file dalam .c

buka terminal, kompile program yang baru anda buat dengan:
gcc namafile.c -o namafile.out

bila ada error, cek kembali kode anda dan kompile kembali. 
bila muncul error (tidak ada gcc dalam linux anda). install dulu gcc di linux anda. Untuk caranya, bisa baca dalam artikel saya sebelumnya : https://www.fadilahn.com/2013/04/install-gcc-di-ubuntu-1010.html

Jika sudah, ketikkan:
./namafile.out

buka terminal baru, kemudian ketikkan:
ps -axf

akan tampil proses-proses dengan PIDnya. cari pohon proses namafile anda, biasanya terletak paling bawah dari urutan proses yang ada. kemudian anda hitung banyaknya namafile dalam pohon prosesnya.

semoga bermanfaat :)

Comments

  1. Permissi mau tanya apakah Proses Frok termasuk dalam system call ?

    ReplyDelete
  2. dari buku yang saya baca (silberchatz dan beginning linux programming), fork termasuk dalam system call.

    ReplyDelete
  3. maaf mau nanya, bukannya (2^2-2) + (2^2-1) = 3 ya?

    ReplyDelete
    Replies
    1. oh, enggak. itu pengurangan terjadi di dalam pangkat. saya kurang memberi kurung jadi rancu ya?

      maksudnya adalah
      2^(2-2) + 2^(2-1) = 2^0 + 2^1 = 2 + 2 = 4

      thanks..

      Delete

Post a Comment

Popular posts from this blog

Kolam Renang Khusus Wanita di Bogor