BLOCKED (WAITING)

Proses berstatus running beralih ke status blocked (waiting) karena membutuhkan pembacaan dat dari peranti I/O. Sebagai contoh, suatu proses membutuhkan data berkas dari disk untuk melanjutkan pengolahan datanya. Untuk memaksimalkan pengguna prosesor maka prosesor maka proses yang sedang menunggu ini akan dialihkan statusnya menjadi blocked dan sistem operasi akan menjalankan scheduler untuk memilih proses lain untuk dieksekusi. Contoh lannya adalah proses yang sedang menunggu event tertentu seperti penekanan keyboard ataupun pergerakan mouse sebagai data input untuk melanjutkan eksekusi. Kenyataan kebanyakan aplikasi yang diakses langsung oleh pengguna menghabiskan sebagian besar siklus hidupnya dalam status blocked karena menunggu event atau aksi dari pengguna yang relatif lambat dibandingkan dengan kecepatan komputer. Proses-proses yang beralih ke status blocked akan disisipkan pada antrian penjadwalan peranti I/O atau event.

Jika event yang ditunggu sudah terjadi atau operasi I/O yang ditunggu sudah selesai, yang ditandai dengan terjadinya interupsi I/O sehingga eksekusi beralih ke rutin sistem operasi, maka rutin sistem operasi akan memindahkan proses yang berstatus blocked tersebut kembali ke antrian ready. Perhatikan, proses yang berstatus blocked tidak dapat langsung dieksekusi atau beralih ke running, tetapi harus dialihkan ke status read terlebih dulu dan menunggu dipilih oleh scheduler agar dapat beralih ke running.

EXIT ATAU TERMINATED

Proses yang berubah statusnya menjadi exit atau terminated berarti proses tersebut telah dihentikan eksekusinya, baik secara normal (proses telah selesai) maupun tidak (misalnya terjadi kesalahan sistem yang tidak tertangani). Jika suatu proses telah selesai maka ruang memori yang ditempati akan dibersihkan (dealokasi) oleh rutin sistem operasi. Sejumlah hal yang dapat menyebabkan suatu proses selesai eksekusinya antara lain :

  1. Proses telah selesai secara normal
  2. Batas waktu total telah terlewati
  3. Kekurangan ruang memori
  4. Perlanggaran batas memori
  5. Pelanggaran proteksi berkas atau sumber daya lainnya
  6. Kesalahan aritmatika
  7. Waktu tunggu (operasi I/O) melebihi batas yang ditetapkan
  8. Terjadi kegagalan I/O
  9. Intruksi yang tidak benar ataupun tidak valid
  10. Terjadi usaha permakaian instruksi yang tidak diijinkan.
  11. Salah memakai data, seperti tipe data salah.
  12. Campur tangan sistem  operasi atau operator
  13. Penghentian proses induk.
  14. Atas permintaan proses induk ataupun proses lainnya

Model siklus hidup proses diatas sering disebut dengan model proses 3 status, karena umumnya status new dan exit tidak dianggap sebagai suatu status permanen karena bersifat sementara. Beberapa sistem operasi memperluas model 3 status menjadi model proses 5 status seperti pada gambar dibawah ini.

Model Proses 5 Status
Model Proses 5 Status

Pada modus proses 3 status, proses yang sedang berada dalam status blocked mungkin tidak memiliki kejelasan mengenai kapan sumber daya atau event yang ditunggunya menadi tersedia. Proses tersebut memungkinkan saja akan terus berstatus blocked untuk kangka waktu yang cukup lama. Hal ini sangat tidak menguntungkan dari segi penggunaan ruang memori utama, karena ruang memori utama yang ditempati oleh proses yang blocked tidak dapat dialokasikan ke proses lainnya.

Itu sebabnya pada model proses 5 status, ketika suatu proses memasuki kondisi yang demikian , proses tersebut akan dialihkan statusnya menjadi SuspendedBlocked agar sumber daya yang ada, misalnya memori utama, dapat dialokasikan untuk proses yang lain. Penundaan proses secara demikian dapat dilakukan oleh proses itu sendiri atau oleh proses lain. Pada sistem uniprosesor, proses yang running dapat menunda (suspend) eksekusi prosesnya sendiri. Sementara pada sistem multiprosesor, proses lain running dapat ditunda oleh proses yang berjalan pada prosesor lainnya.

Penundaan eksekusi proses yang bestatus blocked yang dilakukan oleh sistem ataupun proses lain akan menyebabkan status proses beralih menjadi SuspendBlocked. Proses yang berada dalam status SuspendedBlocked akan bertransisi menjadi SuspendReady ketika event yang ditunggu terjadi atau operasi I/O yang ditunggu telah selesai. Proses SuspendReady dapat dilanjutkan kembali (resume) setelah permasalahan selesai sehingga kondisinya menjadi normal kembali.