Process State adalah status dari proses, apakah proses tersebut sedang dieksekusi, suspend, block atau sudah release. Secara mendasar, Process State dibagi menjadi 5 state, yaitu :
- New, State dimana proses dibuat
- Ready, State dimana proses sudah memiliki resource yang dibutuhkan untuk dijalankan, tetapi CPU belum mengeksekusi proses ini
- Running, State dimana proses dieksekusii oleh CPU
- Waiting/Blocked, State dimana proses tidak dijalankan untuk sementara karena suatu hal seperti menunggu resource yang dibutuhkan, input user, atau event lainnya yang membuat proses ini tidak dapat dijalankan untuk sementara.
- Terminated/Exit, State dimana proses telah selesai.
Pembuatan dan Penghentian sebuah Proses
Pembuatan Proses
- Sistem Operasi membangun suatu struktur data untuk mengelola proses tersebut
- Biasanya, semua proses dibuat oleh Sistem Operasi. Tetapi Sistem Operasi juga membolehkan proses yang sedang berjalan membuat proses lain.
Penghentian Proses
Harus ada cara yang dapat menandakan bahwa suatu proses selesai. Cara-cara tersebut dapat berupa:
- Instruksi HALT membangkitkan suatu interupsi alert untuk SO
- Aksi pengguna (seperti log off & keluar dari suatu aplikasi)
- Suatu kesalahan atau error
- Dihentikan oleh proses induk
Suspended State
Dikatakan suspended state karena sebuah proses terlalu lama menunggu "momen" ntuk berjalannya sebuah proses (menunggu proses yang lain selesai berjalan). Untuk kasus seperti ini, proses tersebut dipindahkan ke secondary memory.
Alasan lain mengapa process suspended:
- Swapping
- Interactive User Request (jarang terjadi)
- Timing
- Parent Process Request
Dari gambar diatas terlihat bahwa “Ready Queue” adalah antrian process yang akan dibawa ke processor untuk di “run”. Pada saat process berada di process, maka “State” nya adalah “Running” sedangkan ketika berada di queue, yaitu yang sedang menunggu untuk di “run”, adalah “Not Running”.
Sebelum sebuah process dimulai, tentunya ada sebuah event yang memulai process tersebut. Selain itu setelah process di-run, ada 2 kemungkinan, yaitu process belum selesai dan dikembalikan ke queue atau selesai dan di terminate. Jadi sekarang ada 2 istilah baru yaitu “start” dan “Termination”, berikut adalah beberapa sebab program di start atau di terminate:
Start: New Batch Job, Interactive Login, Created by OS, or Spawned by Existing Process.
Termination: Normal Completion, Memory Unavailable, Protection Error, Operator or OS Intervention.
Jadi ketika process dijalankan(karena salah satu alasan yang telah disebutkan diatas) program tersebut akan dimasukkan ke ready queue, yang nantinya akan di-dispatch dan di run, lalu exit bila selesai. Namun 2 kotak lagi yaitu suspend dan blocked, apa itu?
Blocked adalah ketika sebuah process menunggu sebuah event, bisa itu menunggu input dari user, menunggu signal dari process/komputer lain, dan beberapa alasan lainnya. Supaya tidak memenuhi ready queue – yang nantinya akan di run dan langsung dikembalikan ke queue karena belum terjadi event yang diinginkan – ia akan dimasukkan kedalam state blocked, state bocked ini akan dicabut ketika event yang diinginkan terjadi.
Sedangkan suspend adalah ketika data sebuah process dipindah ke secondary memory (di “Swap” pada linux atau “Page” pada Windows”, inilah guna alokasi “swap” dan “pagefile” :) ) sampai dia diputuskan untuk di kembalikan ke main memory. Suspend/blocked adalah ketika process yang sedang di block yang dipindah ke secondary memory. Sedangkan ready/blocked adalah process ready yang dipindah ke secondary memory. Suspend ini bisa dilakukan karena swapping (memory penuh) atau bisa juga karena permintaan user, dan timing. Yang dimaksud timing adalah ketika program sudah terlalu lama di block(menunggu event) sehingga ia dipindah ke secondary memory. Bisa juga karena process ketika di “start” sedangkan dari main memory tidak cukup tempat. Sehingga ia ditaruh di secondary memory dulu dan OS akan mencari process di main memory yang nantinya akan di “swap” dengan process ini.
Sebuah process yang selesai tapi terdapat bug didalamnya bisa mengakibatkan termination error, sehingga processor mengenali process tersebut sudah mati namun datanya masih ada di memory. Hal seperti ini disebut Zombie Process.
Mereview tulisan saya diatas, jadi sebuah process pertama tama akan di “start”, process ini akan diberi PID, lalu akan dialokasikan tempat(di main memory bila cukup, bila tidak akan dialokasikan di secondary memory), lali dibuatka PCB(=Process Control Block), lalu diberi state “Ready”, dimasukkan kedalam queue. Lalu di dispatch untuk di process.
Dispatch adalah program yang mengirim instruksi untuk dikirim ke processor dan men switch ketika timeout/selesai. Kerja dispatch adalah menyimpan isi register processor untuk mengupdate PCB, lalu menaruh PCB tersebut kembali ke queue, lalu mengambil process lain untuk dieksekusi, copy data(yang dibutuhkan) dari PCB ke register, lalu biarkan processor bekerja, lalu kembali menyimpan isi processor untuk mengupdate PCB.
like this article so much !
ReplyDelete