Direkomendasikan, 2024

Pilihan Editor

Perbedaan Antara Penjadwalan Preemptif dan Non-Preemptif di OS

Merupakan tanggung jawab penjadwal CPU untuk membagikan proses ke CPU setiap kali CPU dalam kondisi siaga. Penjadwal CPU memilih proses dari antrian siap dan mengalokasikan proses ke CPU. Penjadwalan yang terjadi ketika suatu proses beralih dari menjalankan status ke status siap atau dari status menunggu ke status siap disebut Penjadwalan Terlebih Dahulu . Di tangan, penjadwalan yang terjadi ketika suatu proses berakhir atau beralih dari menjalankan untuk menunggu keadaan penjadwalan CPU semacam ini disebut Penjadwalan Non-Preemptive . Perbedaan mendasar antara penjadwalan preemptive dan non-preemptive terletak pada namanya sendiri. Itu adalah preemptive penjadwalan yang bisa preemptive; prosesnya bisa dijadwalkan. Dalam penjadwalan Non-preemptive, proses tidak dapat dijadwalkan.

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 PerbandinganPenjadwalan Terlebih DahuluPenjadwalan Non Preemptive
DasarSumber 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.
MenggangguProses dapat terputus di antaranya.Proses tidak dapat terganggu sampai ia berhenti atau beralih ke status menunggu.
KelaparanJika 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.
AtasPenjadwalan preemptive memiliki overhead penjadwalan proses.Penjadwalan non-preemptive tidak memiliki overhead.
FleksibilitasPenjadwalan preemptive fleksibel.Penjadwalan non-preemptive kaku.
BiayaPenjadwalan 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.

Sementara itu, P3 dieksekusi, proses P1 tiba pada waktu 2. Sekarang sisa waktu untuk P3 (3 milidetik) kurang dari waktu yang dibutuhkan oleh proses P1 (4 milidetik) dan P2 (5 milidetik). Jadi P3 diizinkan untuk melanjutkan. Sementara P3 melanjutkan proses P0 tiba pada waktu 3, sekarang sisa waktu untuk P3 (2 milidetik) sama dengan waktu yang dibutuhkan oleh P0 (2 milidetik). Jadi P3 berlanjut dan setelah P3 berakhir, CPU dialokasikan ke P0 karena memiliki waktu burst yang lebih sedikit daripada yang lain. Setelah P0 berakhir, CPU dialokasikan ke P1 dan kemudian ke P2.

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.

Perbedaan Kunci antara Penjadwalan Preemptif dan Non-Preemptif

  1. 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 .
  2. Proses eksekusi dalam penjadwalan preemptif terputus di tengah eksekusi sedangkan proses eksekusi dalam penjadwalan non-preemptif tidak terputus di tengah eksekusi.
  3. 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.
  4. 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.
  5. 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.
  6. 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.

Top