
Mari kita bahas perbedaan antara Penjadwalan Preemptive dan Non-Preemptive secara singkat dengan bantuan grafik perbandingan yang ditunjukkan di bawah ini.
Grafik perbandingan
Dasar untuk Perbandingan | Penjadwalan Terlebih Dahulu | Penjadwalan Non Preemptive |
---|---|---|
Dasar | Sumber daya dialokasikan untuk suatu proses untuk waktu yang terbatas. | Setelah sumber daya dialokasikan untuk suatu proses, proses menahannya sampai ia menyelesaikan waktu burstenya atau beralih ke status menunggu. |
Mengganggu | Proses dapat terputus di antaranya. | Proses tidak dapat terganggu sampai ia berhenti atau beralih ke status menunggu. |
Kelaparan | Jika proses prioritas tinggi sering tiba dalam antrian siap, proses prioritas rendah mungkin kelaparan. | Jika suatu proses dengan waktu burst yang lama menjalankan CPU, maka proses lain dengan waktu burst CPU yang lebih sedikit mungkin kelaparan. |
Atas | Penjadwalan preemptive memiliki overhead penjadwalan proses. | Penjadwalan non-preemptive tidak memiliki overhead. |
Fleksibilitas | Penjadwalan preemptive fleksibel. | Penjadwalan non-preemptive kaku. |
Biaya | Penjadwalan preemptive terkait biaya. | Penjadwalan non-preemptive bukan asosiatif biaya. |
Definisi Penjadwalan Sebelumnya
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.

Perbedaan Kunci antara Penjadwalan Preemptif dan Non-Preemptif
- Perbedaan mendasar antara penjadwalan preemptive dan non-preemptive adalah bahwa dalam penjadwalan preemptive CPU dialokasikan ke proses untuk waktu yang terbatas . Sementara dalam penjadwalan Non-preemptive, CPU dialokasikan untuk proses sampai ia berakhir atau beralih ke status menunggu .
- Proses eksekusi dalam penjadwalan preemptif terputus di tengah eksekusi sedangkan proses eksekusi dalam penjadwalan non-preemptif tidak terputus di tengah eksekusi.
- Penjadwalan Preemptive memiliki overhead untuk mengalihkan proses dari status siap ke status sedang, vis-ayat, dan mempertahankan antrian siap. Di sisi lain, penjadwalan non-preemptive tidak memiliki overhead untuk mengalihkan proses dari menjalankan status ke status siap.
- Dalam penjadwalan preemptive, jika suatu proses dengan prioritas tinggi sering tiba dalam antrian siap maka proses dengan prioritas rendah harus menunggu lama, dan mungkin harus kelaparan. Di sisi lain, dalam penjadwalan non-preemptive, jika CPU dialokasikan untuk proses dengan waktu burst lebih besar maka proses dengan waktu burst kecil mungkin harus kelaparan.
- Penjadwalan preemptive cukup fleksibel karena proses kritis diperbolehkan untuk mengakses CPU ketika mereka tiba di antrian siap, tidak peduli proses apa yang sedang dieksekusi saat ini. Penjadwalan non-preemptive adalah kaku karena bahkan jika proses kritis memasuki antrian siap proses yang menjalankan CPU tidak terganggu.
- Penjadwalan Preemptive adalah asosiatif biaya karena harus menjaga integritas data bersama yang tidak demikian halnya dengan Penjadwalan Non-preemptive.
Kesimpulan:
Bukannya penjadwalan preemptive lebih baik daripada penjadwalan non-preemptive atau vise-ayat. Semua tergantung pada bagaimana penjadwalan meminimalkan waktu tunggu rata-rata dari proses dan memaksimalkan pemanfaatan CPU.