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.


Grafik perbandingan














Comments