Penjadwalan Preemptif dan Non-Preemptive
Perbedaan Utama antara Penjadwalan Preemptive dan Non-Preemptive
- Dalam Penjadwalan Preemptive, CPU dialokasikan ke proses untuk jangka waktu tertentu, dan CPU penjadwalan non-preemptive dialokasikan ke proses hingga proses tersebut dihentikan.
- Dalam Penjadwalan Preemptive, tugas dialihkan berdasarkan prioritas, sedangkan dalam Penjadwalan non-preemptive, tidak ada peralihan yang terjadi.
- Algoritme preemptive memiliki overhead peralihan proses dari keadaan siap ke keadaan berjalan, sedangkan Penjadwalan Non-preemptive tidak memiliki overhead peralihan tersebut.
- Penjadwalan Preemptive bersifat fleksibel, sedangkan Penjadwalan Non-Preemptive bersifat kaku.

Apa itu Penjadwalan Preemptive?
Penjadwalan Preemptive adalah metode penjadwalan di mana sebagian besar tugas ditetapkan berdasarkan prioritasnya. Terkadang penting untuk menjalankan tugas dengan prioritas lebih tinggi sebelum tugas lain yang berprioritas lebih rendah, meskipun tugas dengan prioritas lebih rendah masih berjalan.
Pada saat itu, tugas dengan prioritas lebih rendah ditahan selama beberapa waktu dan dilanjutkan ketika tugas dengan prioritas lebih tinggi selesai dijalankan.
Apa itu Penjadwalan Non-Preemptive?
Dalam metode penjadwalan jenis ini, CPU telah dialokasikan untuk proses tertentu. Proses yang membuat CPU sibuk akan melepaskan CPU baik dengan mengalihkan konteks atau mengakhiri.
Ini adalah satu-satunya metode yang dapat digunakan untuk berbagai platform perangkat keras. Itu karena tidak memerlukan perangkat keras khusus (misalnya pengatur waktu) seperti Penjadwalan Preemptive.
Penjadwalan Non-Preemptive terjadi ketika suatu proses secara sukarela memasuki keadaan menunggu atau berakhir.
Penjadwalan Preemptive vs Non-Preemptive: Tabel Perbandingan
Berikut adalah perbandingan head-to-head Penjadwalan Preemptive vs Non-Preemptive. Perbedaan utama antara Penjadwalan Preemptive dan Non-Preemptive di OS adalah sebagai berikut:
Penjadwalan Preemptive | Penjadwalan Non-preemptive |
---|---|
Sebuah prosesor dapat didahului untuk mengeksekusi berbagai proses di tengah-tengah eksekusi proses yang sedang berjalan. | Setelah prosesor memulai eksekusinya, ia harus menyelesaikannya sebelum mengeksekusi yang lain. Itu tidak dapat dijeda di tengah-tengah. |
Pemanfaatan CPU lebih efisien dibandingkan dengan Non-Preemptive Scheduling. | Pemanfaatan CPU kurang efisien dibandingkan dengan Penjadwalan preemptive. |
Waktu tunggu dan respons Penjadwalan preemptive lebih sedikit. | Waktu tunggu dan respons metode Penjadwalan non-preemptive lebih tinggi. |
Penjadwalan Preemptive diprioritaskan. Proses dengan prioritas tertinggi adalah proses yang sedang digunakan. | Ketika suatu proses memasuki status berjalan, status proses tersebut tidak pernah dihapus dari penjadwal hingga proses tersebut menyelesaikan tugasnya. |
Penjadwalan Preemptive bersifat fleksibel. | Penjadwalan Non-preemptive bersifat kaku. |
Contoh: – Sisa Waktu Terpendek Pertama, Round Robin, dll. | contoh: Siapa cepat dia dapat, Pekerjaan Terpendek Pertama, Penjadwalan Prioritas, dll. |
Algoritma Penjadwalan Preemptive dapat didahului yaitu prosesnya dapat Dijadwalkan | Dalam proses penjadwalan non-preemptive tidak dapat Dijadwalkan |
Dalam proses ini, CPU dialokasikan ke proses untuk jangka waktu tertentu. | Dalam proses ini, CPU dialokasikan ke proses tersebut hingga proses tersebut berakhir atau beralih ke status menunggu. |
Algoritma preemptive mempunyai kelebihan dalam mengalihkan proses dari keadaan siap ke keadaan berjalan dan sebaliknya. | Penjadwalan Non-preemptive tidak memiliki overhead untuk mengalihkan proses dari berjalan ke keadaan siap. |
Keuntungan Penjadwalan Preemptive
Berikut kelebihan/kelebihan metode Penjadwalan Preemptive:
- Metode penjadwalan preemptive lebih kuat, pendekatannya sehingga satu proses tidak dapat memonopoli CPU
- Pilihan tugas yang berjalan dipertimbangkan kembali setelah setiap gangguan.
- Setiap peristiwa menyebabkan gangguan pada tugas yang sedang berjalan
- OS memastikan bahwa penggunaan CPU sama dengan semua proses yang berjalan.
- Dalam hal ini, penggunaan CPU adalah sama, yaitu semua proses yang berjalan akan menggunakan CPU secara merata.
- Metode penjadwalan ini juga mengimprovisasi waktu respons rata-rata.
- Penjadwalan Preemptive bermanfaat ketika kita menggunakannya untuk lingkungan multi-pemrograman.
Keuntungan Penjadwalan Non-preemptive
Berikut kelebihan/kelebihan metode Penjadwalan Non-preemptive:
- Menawarkan overhead penjadwalan yang rendah
- Cenderung menawarkan throughput yang tinggi
- Ini secara konseptual adalah metode yang sangat sederhana
- Less kebutuhan sumber daya komputasi untuk Penjadwalan
Kerugian dari Penjadwalan Preemptive
Berikut ini adalah kelemahan penjadwalan preemptif:
- Membutuhkan sumber daya komputasi yang terbatas untuk Penjadwalan
- Membutuhkan waktu lebih lama bagi penjadwal untuk menangguhkan tugas yang sedang berjalan, mengalihkan konteks, dan mengirimkan tugas baru yang masuk.
- Proses yang berprioritas rendah perlu menunggu lebih lama jika beberapa proses berprioritas tinggi datang terus menerus.
Kerugian dari Penjadwalan Non-Preemptive
Berikut kekurangan/kekurangan metode Penjadwalan Non-Preemptive:
- Hal ini dapat menyebabkan kelaparan terutama untuk tugas-tugas real-time tersebut
- Bug dapat menyebabkan mesin macet
- Itu dapat membuat waktu nyata dan Penjadwalan prioritas sulit
- Waktu respons yang buruk untuk proses
Contoh Penjadwalan Non-Preemptive
Dalam penjadwalan SJF non-preemptive, setelah siklus CPU dialokasikan ke proses, proses akan menahannya hingga mencapai status menunggu atau dihentikan.
Pertimbangkan lima proses berikut, yang masing-masing memiliki waktu penyelesaian dan waktu kedatangannya sendiri yang unik.
antrian proses | Waktu meledak | Jam kedatangan |
---|---|---|
P1 | 6 | 2 |
P2 | 2 | 5 |
P3 | 8 | 1 |
P4 | 3 | 0 |
P5 | 4 | 4 |
Langkah 0) Pada waktu=0, P4 tiba dan memulai eksekusi.
Langkah 1) Pada waktu= 1, Proses P3 tiba. Namun, P4 masih membutuhkan 2 unit eksekusi untuk diselesaikan. Ini akan melanjutkan eksekusi.
Langkah 2) Pada waktu =2, proses P1 tiba dan ditambahkan ke antrian tunggu. P4 akan melanjutkan eksekusi.
Langkah 3) Pada waktu = 3, proses P4 akan menyelesaikan eksekusinya. Waktu burst P3 dan P1 dibandingkan. Proses P1 dijalankan karena waktu burstnya lebih sedikit dibandingkan dengan P3.
Langkah 4) Pada waktu = 4, proses P5 tiba dan ditambahkan ke antrian tunggu. P1 akan melanjutkan eksekusi.
Langkah 5) Pada waktu = 5, proses P2 tiba dan ditambahkan ke antrian tunggu. P1 akan melanjutkan eksekusi.
Langkah 6) Pada waktu = 9, proses P1 akan menyelesaikan eksekusinya. Waktu burst P3, P5, dan P2 dibandingkan. Proses P2 dijalankan karena waktu burstnya paling rendah.
Langkah 7) Pada waktu=10, P2 sedang dieksekusi, dan P3 serta P5 berada dalam antrian tunggu.
Langkah 8) Pada waktu = 11, proses P2 akan menyelesaikan eksekusinya. Waktu burst P3 dan P5 dibandingkan. Proses P5 dijalankan karena waktu burstnya lebih rendah.
Langkah 9) Pada waktu = 15, proses P5 akan menyelesaikan eksekusinya.
Langkah 10) Pada waktu = 23, proses P3 akan menyelesaikan eksekusinya.
Langkah 11) Mari kita hitung waktu tunggu rata-rata untuk contoh di atas.
Wait time P4= 0-0=0 P1= 3-2=1 P2= 9-5=4 P5= 11-4=7 P3= 15-1=14 Average Waiting Time= 0+1+4+7+14/5 = 26/5 = 5.2
Contoh Penjadwalan Pre-emptive
Pertimbangkan tiga proses berikut ini dalam Sistem kompetisi bulat
antrian proses | Waktu meledak |
---|---|
P1 | 4 |
P2 | 3 |
P3 | 5 |
Langkah 1) Eksekusi dimulai dengan proses P1 yang memiliki waktu burst 4. Di sini setiap proses dijalankan selama 2 detik. P2 dan P3 masih dalam antrian tunggu.
Langkah 2) Pada waktu =2, P1 ditambahkan ke akhir Antrian dan P2 mulai dijalankan
Langkah 3) Pada time=4 , P2 didahului dan ditambahkan di akhir antrian. P3 mulai dijalankan.
Langkah 4) Pada time=6 , P3 didahului dan ditambahkan di akhir antrian. P1 mulai dijalankan.
Langkah 5) Pada time=8 , P1 memiliki waktu burst 4. Eksekusi telah selesai. P2 memulai eksekusi
Langkah 6) P2 memiliki waktu burst 3. P2 telah dieksekusi selama 9 interval. Pada waktu=2, P3 menyelesaikan eksekusi. Kemudian, PXNUMX memulai eksekusi hingga selesai.
Langkah 7) Mari kita hitung waktu tunggu rata-rata untuk contoh di atas.
Wait time P1= 0+ 4= 4 P2= 2+4= 6 P3= 4+3= 7