Penjadwalan Preemptive dan Nonpreemptive
Suatu proses adalah program yang sedang dieksekusi. Sebuah
komputer harus melakukan banyak tugas pada saat bersamaan. Karena itu, CPU
harus mendapatkan proses dan menjalankannya. Terkadang perlu menjalankan
beberapa proses lainnya. Pada saat itu, proses yang berjalan terputus, dan CPU
dialokasikan untuk proses yang baru. Setelah tugas selesai, CPU dialokasikan
kembali ke proses sebelumnya. Penjadwalan menurut mekanisme ini dikenal sebagai
penjadwalan preemptive. Jika proses yang berjalan, tidak dapat diganggu dan itu
wajib untuk menjalankan proses yang berjalan, maka itu dikenal sebagai
penjadwalan nonpreemptive.
Definisi Penjadwalan Preemptive
Penjadwalan preemptive adalah salah satu yang dapat dilakukan
dalam keadaan ketika suatu proses beralih dari menjalankan
status ke status siap atau
dari status menunggu ke status siap . Di sini, sumber daya (siklus
CPU) dialokasikan ke proses untuk jumlah waktu terbatas dan
kemudian dihapus, dan proses tersebut ditempatkan kembali dalam antrian siap
lagi jika masih ada sisa waktu burst CPU. Proses tetap dalam antrian siap
sampai mendapat kesempatan berikutnya untuk dieksekusi.
Jika proses dengan prioritas tinggi tiba di antrian
siap, ia tidak harus menunggu proses saat ini untuk menyelesaikan waktu
burst-nya. Sebagai gantinya, proses saat ini terputus di tengah pelaksanaan dan
ditempatkan dalam antrian siap sampai proses dengan prioritas tinggi
memanfaatkan siklus CPU. Dengan cara ini, setiap proses dalam antrian siap
mendapatkan waktu untuk menjalankan CPU. Itu membuat penjadwalan preemptive
fleksibel tetapi, meningkatkan overhead beralih proses dari menjalankan negara
ke status siap dan ayat.
Algoritma yang bekerja pada penjadwalan preemptive adalah Round
Robin. Shortest Job First (SJF) dan Penjadwalan Prioritas mungkin atau mungkin
tidak termasuk dalam penjadwalan preemptive.
Mari kita ambil contoh Penjadwalan Sebelumnya, lihat
gambar di bawah ini. Kami memiliki empat proses P0, P1, P2, P3. Dari yang mana,
P2 tiba pada waktu 0. Jadi CPU dialokasikan untuk proses P2 karena tidak ada
proses lain dalam antrian. Sementara itu, P2 mengeksekusi, P3 tiba pada waktu
1, sekarang sisa waktu untuk memproses P2 (5 milidetik) yang lebih besar dari
waktu yang dibutuhkan oleh P3 (4 mili-detik). Jadi CPU dialokasikan untuk
prosesor P3.
Definisi Penjadwalan Non-Preemptive
Penjadwalan Non-preemptive
adalah penjadwalan yang dapat diterapkan dalam keadaan ketika suatu
proses berakhir, atau suatu proses beralih dari berjalan ke keadaan
menunggu . Dalam Penjadwalan Non-Preemptive, setelah sumber daya (CPU)
dialokasikan untuk suatu proses, proses memegang CPU sampai dihentikan atau
mencapai keadaan menunggu.
Tidak seperti penjadwalan
preemptive, penjadwalan non-preemptive tidak mengganggu proses yang menjalankan
CPU di tengah eksekusi. Sebagai gantinya, ia menunggu proses untuk
menyelesaikan waktu burst CPU-nya dan kemudian dapat mengalokasikan CPU ke
proses lain.
Dalam penjadwalan
Non-preemptive, jika suatu proses dengan waktu burst CPU yang lama dieksekusi
maka proses yang lain harus menunggu untuk waktu yang lama yang meningkatkan
waktu tunggu rata-rata dari proses dalam antrian siap. Namun, penjadwalan
non-preemptive tidak memiliki overhead untuk mengalihkan proses dari antrian
siap ke CPU tetapi itu membuat penjadwalan menjadi kaku karena proses dalam
eksekusi bahkan tidak diperuntukkan untuk proses dengan prioritas lebih tinggi.
Mari kita selesaikan contoh penjadwalan di atas
dengan cara non-preemptive. Seperti pada awalnya proses P2 tiba pada waktu 0,
jadi CPU dialokasikan untuk proses P2 dibutuhkan 6 milidetik untuk
mengeksekusi. Di antara semua proses yaitu P0, P1, P3 masuk ke antrian siap.
Tetapi semua menunggu sampai proses P2 menyelesaikan waktu burst CPU-nya.
Kemudian proses yang tiba setelah P2 yaitu P3 kemudian dialokasikan CPU sampai
selesai itu waktu meledak. Demikian pula, maka P1 dijalankan, dan CPU kemudian
diberikan untuk memproses P0.
Comments
Post a Comment