
Marilah kita membincangkan perbezaan di antara penjadualan Preemptive dan Non-Preemptive secara ringkas dengan bantuan carta perbandingan yang ditunjukkan di bawah.
Carta Perbandingan
Asas untuk Perbandingan | Penjadualan Pencegahan | Penjadualan Tanpa Preemptive |
---|---|---|
Asas | Sumber-sumber yang diperuntukkan kepada proses untuk masa yang terhad. | Sebaik sahaja sumber dana diperuntukkan kepada proses, proses itu memegang sehingga ia menyelesaikan masa pecah atau beralih ke keadaan menunggu. |
Ganggu | Proses boleh terganggu di antara. | Proses tidak boleh terganggu sehingga ia tamat atau bertukar ke keadaan menunggu. |
Kelaparan | Sekiranya proses keutamaan yang tinggi sering muncul dalam barisan sedia, proses keutamaan rendah mungkin menjadi kelaparan. | Sekiranya proses dengan masa pecutan yang panjang berjalan dengan CPU, maka proses lain dengan masa pecutan CPU yang kurang mungkin menjadi kelaparan. |
Overhead | Penjadualan preemptive mempunyai overhed penjadwalan proses. | Penjadualan bukan preemptif tidak mempunyai overheds. |
Fleksibiliti | Penjadualan pencegahan adalah fleksibel. | Penjadualan bukan preemptive adalah tegar. |
Kos | Penjadualan pencegahan ialah kos yang berkaitan. | Penjadualan bukan preemptive bukan bersekutu kos. |
Takrif Penjadualan Pencegahan
Penjadualan pencegahan adalah salah satu yang boleh dilakukan dalam keadaan apabila suatu proses beralih dari keadaan berjalan ke keadaan siap atau dari keadaan menunggu ke keadaan siap . Di sini, sumber-sumber (kitaran CPU) diperuntukkan kepada proses untuk masa yang terhad dan kemudiannya diambil, dan proses itu diletakkan semula dalam barisan siap lagi jika masih ada waktu pecah CPU. Proses ini tetap dalam barisan siap sehingga ia mendapat peluang seterusnya untuk dilaksanakan.
Sekiranya proses yang mempunyai keutamaan tinggi tiba dalam barisan sedia, ia tidak perlu menunggu proses semasa untuk melengkapkan masa pecahnya. Sebaliknya, proses semasa terganggu di tengah-tengah pelaksanaan dan diletakkan dalam barisan siap sehingga proses dengan keutamaan tinggi menggunakan siklus CPU. Dengan cara ini, setiap proses dalam barisan siap mendapat sedikit masa untuk menjalankan CPU. Ia menjadikan penjadualan preemptif fleksibel tetapi, meningkatkan overhead menukar proses dari menjalankan negeri ke keadaan sedia dan vise-ayat.
Algoritma yang berfungsi pada penjadualan terdahulu ialah Round Robin. Penjadwalan Pekerjaan Pertama (SJF) dan Penjadualan Keutamaan yang paling singkat mungkin atau tidak mungkin di bawah penjadualan terdahulu.
Marilah kita mengambil contoh Penjadualan Nyahtentuan, lihat gambar di bawah. Kami mempunyai empat proses P0, P1, P2, P3. Dari mana, P2 tiba pada masa 0. Jadi CPU diperuntukkan untuk proses P2 kerana tidak ada proses lain dalam barisan. Sementara itu, P2 sedang melaksanakan, P3 tiba pada masa 1, kini masa yang tinggal untuk proses P2 (5 milisaat) yang lebih besar dari masa yang diperlukan oleh P3 (4 milli-sec). Oleh itu CPU diperuntukkan kepada pemproses P3.

Takrif Penjadualan Tidak Tercukai
Penjadualan bukan preemptif adalah salah satu yang boleh digunakan dalam keadaan apabila suatu proses menamatkan, atau proses beralih daripada berjalan ke keadaan menunggu . Dalam Penjadualan Tanpa Pengecualian, sekali sumber (CPU) diperuntukkan ke proses, proses memegang CPU sehingga ditamatkan atau mencapai keadaan menunggu.
Tidak seperti penjadualan terdahulu, penjadualan tidak preemptif tidak mengganggu proses yang menjalankan CPU di tengah-tengah pelaksanaan. Sebaliknya, ia menunggu proses untuk melengkapkan masa pecutan CPUnya dan kemudian dapat memperuntukkan CPU ke proses lain.
Dalam penjadualan Tanpa Preemptive, jika proses dengan waktu pecah CPU yang panjang sedang dijalankan maka proses lain akan perlu menunggu lama untuk meningkatkan waktu tunggu proses dalam barisan siap. Walau bagaimanapun, penjadualan bukan preemptive tidak mempunyai overhead untuk menukar proses dari barisan siap kepada CPU tetapi ia menjadikan penjadualannya tegar kerana proses dalam pelaksanaannya tidak mengecewakan untuk proses yang lebih tinggi.

Perbezaan Utama antara Penjadualan Pencegahan dan Tanpa Preemptif
- Perbezaan asas antara penjadualan preemptive dan non-preemptive ialah penjadualan terdahulu CPU diperuntukkan kepada proses untuk masa yang terhad . Semasa dalam penjadualan Tanpa Preemptive, CPU diperuntukkan kepada proses sehingga ia tamat atau bertukar ke keadaan menunggu .
- Proses pelaksanaan dalam penjadualan preemptive terganggu di tengah-tengah pelaksanaan sedangkan proses pelaksanaan dalam penjadualan bukan preemptive tidak terganggu di tengah pelaksanaan.
- Penjadualan Preemptive mempunyai overhead menukar proses dari keadaan bersedia untuk menjalankan keadaan, vise-verse, dan mengekalkan giliran siap. Di sisi lain, penjadualan tidak preemptif tidak mempunyai overhead untuk menukar proses dari keadaan berjalan ke keadaan siap.
- Dalam penjadualan terdahulu, jika proses yang mempunyai keutamaan tinggi sering tiba dalam barisan siap maka proses dengan keutamaan yang rendah perlu menunggu lama, dan ia mungkin perlu kelaparan. Di sisi lain, dalam penjadualan bukan preemptif, jika CPU diperuntukkan kepada proses dengan masa pecah yang lebih besar maka proses dengan masa pecah kecil mungkin akan menjadi kelaparan.
- Penjadualan preemptif cukup fleksibel kerana proses kritikal dibenarkan untuk mengakses CPU kerana mereka tiba di barisan siap, tidak kira apa prosesnya sedang dijalankan. Penjadualan bukan preemptif adalah tegar walaupun walaupun proses kritikal memasuki barisan siap, proses yang menjalankan CPU tidak terganggu.
- Penjadualan Pengutipan adalah bersekutu kos kerana ia harus mengekalkan integriti data yang dikongsi yang tidak berlaku dengan Penjadualan Tanpa Preemptif.
Kesimpulan:
Ia bukanlah penjadualan preemptif lebih baik daripada penjadualan tanpa preemptif atau ayat-ayat. Semua bergantung kepada bagaimana penjadualan meminimumkan masa menunggu purata proses dan memaksimumkan penggunaan CPU.