baru sehingga semua proses ini pada akhirnya membentuk pohon proses. Ketika sebuah proses dibuat maka proses tersebut dapat memperoleh sumber-daya seperti waktu CPU, memori, berkas,
atau perangkat MK. Sumber daya ini dapat diperoleh langsung dari sistem operasi, dari proses induk yang membagi-bagikan sumber daya kepada setiap proses turunannnya, atau proses turunan
dan proses induk berbagi sumber-daya yang diberikan sistem operasi.
Di dalam UNIX daftar dari proses yang sedang aktif berjalan bisa didapatkan dengan menggunakan perintah ps, contoh ps -el. Ada dua kemungkinan bagaimana jalannya running proses induk dan
turunan. Proses-proses tersebut berjalan secara konkuren atau proses induk menunggu sampai beberapaseluruh proses turunannya selesai berjalan. Juga terdapat dua kemungkinan dalam
pemberian ruang alamat address space proses yang baru. Proses turunan dapat merupakan duplikasi.
Bila UNIX menggunakan kemungkinan pertama proses baru merupakan duplikasi induknya maka sistem operasi DEC VMS menggunakan kemungkinan kedua dalam pembuatan proses baru yaitu
setiap proses baru memiliki program yang di-load ke ruang alamatnya dan melaksanakan program tersebut. Sedangkan sistem operasi Microsoft Windows NT mendukung dua kemungkinan tersebut.
Ruang alamat proses induk dapat diduplikasi atau proses induk meminta sistem operasi untuk me-load program yang akan dijalankan proses baru ke ruang alamatnya.
10.5. Fungsi fork
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.
Contoh 10.1. Contoh Penggunaan fork
include stdio.h standard MK
include unistd.h fork
include systypes.h pid_t
int main {
pid_t pid; pid = fork;
if pid 0 { terjadi error
fprintfstderr,Fork Gagal; exit-1;
} else if pid == 0 { proses anak
execlpbinls,ls,NULL; } else {
proses induk waitNULL;
printfProses anak selesai; exit0;
} }
Berikut adalah contoh penggunaan fork dengan menggunakan bahasa C. Tipe data pid_t merupakan signed integer yang sebenernya dalam pustaka GNU. Tipe ini adalah int, fungsinya
75
adalah merepresentasikan PID. Program C diatas menggambarkan atau mengilustrasikan UNIX system call . Didalam UNIX Shell akan membaca perintah dari terminal, kemudian perintah tersebut
di fork, dan menghasilkan proses anak, proses anak inilah yang akan mengeksekusi perintah dari shell tersebut, sementara proses induk hanya menunggu dengan menggunakan system call wait dan
mengeksekusi perintah lain saat proses anak terminasi.
10.6. Terminasi Proses
Suatu proses diterminasi ketika proses tersebut telah selesai mengeksekusi perintah terakhir atau diterminasi dengan sengaja oleh proses lain, biasanya proses induk yang melakukan hal ini. Pada
saat terminasi. Semua sumber-daya yang digunakan oleh proses akan dialokasikan kembali oleh sistem operasi agar dapat dimanfaatkan oleh proses lain. Suatu proses yang diterminasi karena
selesai melakukan tugasnya, sistem operasi akan memanggil system call exit sedangkan proses yang diterminasi dengan sengaja oleh proses lain melalui system call abort. Biasanya proses induk
melakukan terminasi sengaja pada turunannya. Alasan terminasi tersebut seperti: 1. Turunan melampaui penggunaan sumber-daya yang telah dialokasikan. Dalam keadaan ini,
proses induk perlu mempunyai mekanisme untuk memeriksa status turunannya-nya. 2. Task yang ditugaskan kepada turunan tidak lagi diperlukan.
3. Proses induk selesai, dan sistem operasi tidak mengizinkan proses turunan untuk tetap berjalan. Jadi, semua proses turunan akan berakhir pula. Hal ini yang disebut cascading termination.
10.7. Proses Linux
Sebuah proses adalah konteks dasar dimana semua permintaan user dilayani sistem operasi. Agar menjadi kompatibel dengan sistem UNIX lainnya, Linux harus menggunakan model proses yang
sama dengan sistem UNIX lainnya.
Prinsip dasar dari manajemen proses UNIX adalah memisahkan dua operasi untuk membuat proses dan menjalankan program baru. Proses baru dibuat dengan fungsi fork, sedangkan program baru
dijalankan setelah memanggil fungsi exec. Model seperti ini memiliki kelebihan yaitu kesederhanaan dibanding harus menetapkan setiap detail dari lingkungan program baru dalam
system call yang menjalankan program tersebut. Program baru dengan mudah berjalan dalam lingkungannya sendiri. Jika proses induk mengharapkan untuk memodifikasi lingkungan dimana
program baru berjalan, dia bisa melakukan fork dan tetap menjalankan program asli dalam proses anak. Membuat beberapa system call membutuhkan modifikasi proses anak sebelum akhirnya
mengeksekusi program baru. Setiap proses memiliki identitas proses yang isinya berupa: 1. PID.
PIDs digunakan untuk menetapkan proses ke sistem operasi ketika sebuah aplikasi membuat System call untuk sinyal, modifikasi, atau menunggu proses lain.
2. Credentials. Setiap proses harus memiliki hubungan antara user ID dengan group ID yang
menentukan hak sebuah proses untuk mengakses sumberdaya sistem dan file.
3. Personality. Dapat sedikit memodifikasi semantics of system calls.
10.8. Rangkuman
1. Sebuah proses adalah suatu program yang sedang dieksekusi. 2. Proses lebih dari sebuah kode program tetapi juga mencakup program counter, stack, dan sebuah
data section. 3. Dalam pengeksekusiannya sebuah proses juga memiliki status yang mencerminkan keadaan dari
proses tersebut. 4. Status tersebut mungkin menjadi satu dari lima status berikut: new, ready , running, waiting, atau
terminated . 5. Proses direpresentasikan dengan PCB yang menyimpan segala informasi yang berkaitan dengan
proses tersebut.
Rujukan
[Silberschatz2005] Avi Silberschatz, Peter Galvin, dan Grag Gagne. 2005. Operating Systems
76
Concepts. Seventh Edition. John Wiley Sons. [WEBFSF1991a] Free Software Foundation. 2007. proses linux – http:www.ilmukomputer.com
2006 08 28 sistem-operasi-proses-pada-linux fajar-proses-linux.zip . Diakses 14 Feb 2007.
77