Sebelum membahas bagaimana proses atau thread dibuat, kita juga perlu mengetahui terlebih dahulu apa itu proses. Berikut ini adalah sedikit pengertian dari proses, tipe dari proses dan keadaan/status pada proses.
Proses adalah program yang sedang berjalan atau dalam keadaan dieksekusi. Proses juga merupakan unit kerja terkecil yang secara individu memiliki resource dan dijadwalkan oleh sistem operasi. Sistem operasi mengolah seluruh proses yang ada di sistem dan bertugas mengalokasikan resource-resource ke proses yang membutuhkan sesuai dengan keadaan tertentu. Resource yang dibutuhkan proses diantaranya CPU, memori, serta I/O device.
Berikut ini adalah tipe dari proses :
- Foreground : Proses yang diciptakan oleh pemakai langsung pada terminal (interaktif, dialog)
- Batch : Proses yang dikumpulkan dan dijalankan secara sekuensial (satu persatu). Proses Batch tidak berinteraksi dengan terminal.
- Daemon : Proses yang menunggu permintaan (request) dari proses lainnya dan menjalankantugas sesuai dengan request tersebut. Bila tidak ada request, maka program ini akan berada dalam kondisi “idle” dan tidak menggunakan CPU. Umumnya nama proses daemon di UNIX berakhiran d, misalnya inetd, named, popd, dll.
Status dari proses :
- Status New : status dimana proses sedang dibuat.
- Status Ready : status dimana proses siap dieksekusi tetapi CPU belum tersedia karena sedang mengerjakan proses lain.
- Status Waiting : status dimana proses sedang menunggu suatu event tertentu.Misalnya sedang menunggu operasi I/O selesai, menunggu signal dari proses lain,tersedianya memori, dsb.
- Status Running : status dimana proses sedang dieksekusi, pada status ini CPU melakukan instruksi pada proses.
- Status Terminated : status dimana proses telah berakhir atau selesai dieksekusi.
Fork memiliki fungsi untuk menduplikasi proses dimana child process yang dihasilkan sifatnya independent.
Clone memiliki sifat yang mirip dengan fork yaitu sama-sama membuat duplikat dari proses induk. Namun demikian, selain membuat proses baru yang terpisah dari proses induk, clone juga mengizinkan terjadinya proses berbagi ruang alamat antara child process dengan proses induk, sehingga child process yang dihasilkan akan sama persis dengan proses induknya.
Setiap proses memiliki struktur data yang unik. Namun demikian, proses-proses di Linux hanya menyimpan pointer-pointer ke struktur data lainnya dimana instruksi disimpan, sehingga tidak harus menyimpan instruksi ke setiap struktur data yang ada. Hal ini menyebabkan context switch antar proses di Linux menjadi lebih cepat.
Ketika fork dieksekusi, sebuah proses baru dibuat bersamaan dengan proses penyalinan struktur data dari proses induk. Ketika clone dieksekusi, sebuah proses baru juga dibuat, namun proses tersebut tidak menyalin struktur data dari proses induknya. Proses baru tersebut hanya menyimpan pointer ke struktur data proses induk. Oleh karena itu, child process dapat berbagi ruang alamat dan sumber daya dengan proses induknya. Satu set flag digunakan untuk mengindikasikan seberapa banyak kedua proses tersebut dapat berbagi. Jika tidak ada flag yang ditandai, maka tidak ada sharing, sehingga clone berlaku sebagai fork. Jika kelima flag ditandai, maka proses induk harus berbagi semuanya dengan proses anak.
Konsep pembuatan process pada Linux :
- Setiap proses diberi nomor khusus sebagai identifikasi yang disebut process identification atau PID berupa angka integer unik.
- Jika proses selesai maka semua sumber daya yang digunakan termasuk PID dibebaskan kembali.
- Proses dibuat menggunakan sistem call fork() yang sering disebut forking proses.
- System call fork() mengkopi proses pemanggil sehingga akan terdapat 2 proses yaitu:
Proses pemanggil disebut PARENT
Proses hasil kopian disebut CHILD - Proses CHILD identik dengan proses PARENT-nya tetapi memiliki PID yang berbeda.
- Setelah proses baru berhasil dibuat eksekusi dilanjutkan secara normal di masing-masing proses pada baris setelah pemanggilan call fork().
- Proses pemanggil dapat melakukan forking proses lebih dari satu kali sehingga memnugkinkan terdapat banyak proses CHILD yang dieksekusi.
- Proses CHILD dapat melakukan forking proses seperti halnya PARENT sehingga dapat terbentuk struktur pohon proses.
No comments:
Post a Comment