• Tidak ada hasil yang ditemukan

Proses, Penjadwalan, dan Sinkronisasi merupakan trio yang saling berhubungan, sehingga seharusnya tidak dipisahkan. Bagian ini akan membahas Proses dan Penjadwalannya, kemudian bagian berikutnya akan membahas Proses dan Sinkronisasinya.

Bab 10. Konsep Proses

10.1. Pendahuluan

Proses didefinisikan sebagai program yang sedang dieksekusi. Menurut Silberschatz proses tidak hanya sekedar suatu kode program (text section), melainkan meliputi beberapa aktivitas yang bersangkutan seperti program counter dan stack. Sebuah proses juga melibatkan stack yang berisi data sementara (parameter fungsi/metode, return address, dan variabel lokal) dan data section yang menyimpan variabel-variabel global. Tanenbaum juga berpendapat bahwa proses adalah sebuah program yang dieksekusi yang mencakup program counter, register, dan variabel di dalamnya. Keterkaitan hubungan antara proses dengan Sistem Operasi terlihat dari cara Sistem Operasi menjalankan/mengeksekusi proses. Sistem Operasi mengeksekusi proses dengan dua cara yaitu

Batch System yang mengeksekusi jobs dan Time-shared System yang mengatur pengeksekusian

program pengguna (user) atau tasks. Bahkan pada sistem pengguna tunggal (single user) pun seperti

Microsoft Windows dan Mac OS, seorang pengguna mampu menjalankan beberapa program pada

saat yang sama, seperti Spread Sheet, Web Browser, dan Web Email. Bahkan jika pengguna hanya menggunakan satu program saja pada satu waktu, sistem operasi perlu mendukung program internalnya sendiri, seperti manajemen memori. Dengan kata lain, semua aktivitas tersebut adalah identik sehingga kita menyebutnya ''Proses''.

Program itu sendiri bukanlah sebuah proses. Program merupakan sebuah entitas pasif; serupa isi dari sebuah berkas didalam disket. Sedangkan sebuah proses dalam suatu entitas aktif, dengan sebuah program counter yang menyimpan alamat instruksi selanjut yang akan dieksekusi dan seperangkat sumber daya (resource) yang dibutuhkan agar sebuah proses dapat dieksekusi.

Tanenbaum memberikan sebuah analogi untuk membantu membedakan antara program dan proses. Misalkan seorang tukang kue ingin membuat kue ulang tahun untuk anaknya. Tentunya tukang kue tersebut memiliki resep untuk membuat kue tersebut beserta daftar bahan-bahan yang diperlukan untuk membuat kue ulang tahun seperti tepung, gula, bubuk vanilla, dan bahan-bahan lainnya. Dalam analogi ini, resep kue ulang tahun tadi adalah sebuah program, tukang kue ini adalah CPU (prosesor), dan bahan-bahan yang diperlukan untuk membuat kue adalah data input. Sedangkan proses adalah kegiatan yang dilakukan oleh si tukang kue mulai dari membaca resep, mengolah bahan, dan memanggang kue hingga akhirnya selesai.

Dua atau lebih buah proses dapat dihubungkan oleh sebuah program yang sama, tetapi tetap saja proses tersebut akan dianggap dua atau lebih proses yang sekuensi/urutan eksekusinya dilakukan secara terpisah. Sebagai contoh, beberapa pengguna dapat menjalankan salinan yang berbeda pada mail program atau pengguna yang sama dapat meminta salinan yang sama dari editor program. Tiap proses ini adalah proses yang terpisah, dan walaupun bagian text section adalah sama, data section-nya bervariasi. Sudah umum jika terdapat suatu proses yang menghasilkan beberapa proses lainnnya ketika proses bekerja. Hal ini akan dijelaskan pada bagian berikutnya.

10.2. Pembentukan Proses

Saat komputer berjalan, terdapat banyak proses yang berjalan secara bersamaan. Sebuah proses dibuat melalui system call create-process membentuk proses turunan (child process) yang dilakukan oleh proses induk parent process. Proses turunan tersebut juga mampu membuat proses baru sehingga kesemua proses-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 ''M/K''. 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.

Ada dua kemungkinan bagaimana jalannya (running) proses induk dan turunan berjalan (running). Proses-proses tersebut berjalan secara konkuren atau proses induk menunggu sampai beberapa/seluruh proses turunannya selesai berjalan. Juga terdapat dua kemungkinan dalam

pemberian ruang alamat (address space) proses yang baru. Proses turunan dapat merupakan duplikasi.

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.

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 diload 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.3. Terminasi Proses

Suatu proses diterminasi ketika proses tersebut telah selesai mengeksekusi perintah terakhir serta meminta sistem operasi untuk menghapus perintah tersebut dengan menggunakan system callexit. Pada saat itu, proses dapat mengembalikan data keluaran kepada proses induk-nya melalui system

callwait. Semua sumber-daya yang digunakan oleh proses akan dialokasikan kembali oleh sistem operasi agar dapat dimanfaatkan oleh proses lain.

Suatu proses juga dapat diterminasi dengan sengaja oleh proses lain melalui system call abort. Biasanya proses induk melakukan hal ini pada turunannya. Alasan terminasi tersebut seperti:

• Turunan melampaui penggunaan sumber-daya yang telah dialokasikan. Dalam keadaan ini, proses induk perlu mempunyai mekanisme untuk memeriksa status turunannya-nya.

• Task yang ditugaskan kepada turunan tidak lagi diperlukan.

• 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.4. Status Proses

Sebuah proses dapat memiliki tiga status utama yaitu:

• Running: status yang dimiliki pada saat instruksi-instruksi dari sebuah proses dieksekusi. • Waiting: status yang dimiliki pada saat proses menunggu suatu sebuah event seperti proses M/K. • Ready: status yang dimiliki pada saat proses siap untuk dieksekusi oleh prosesor.

Terdapat dua status tambahan, yaitu saat pembentukan dan terminasi:

• New: status yang dimiliki pada saat proses baru saja dibuat.

• Terminated: status yang dimiliki pada saat proses telah selesai dieksekusi.

Dokumen terkait