Perbedaan antara penjadwalan preemptive dan non-preemptive dalam sistem operasi

Perbedaan antara penjadwalan preemptive dan non-preemptive dalam sistem operasi

Penjadwalan prosesor (atau Penjadwalan CPU) menentukan proses mana yang ditetapkan, dan dihapus dari CPU, berdasarkan model penjadwalan seperti Preemptive Dan Penjadwalan non-preemptive (juga dikenal sebagai Penjadwalan Koperasi).

Sistem yang lebih tua dapat beroperasi dalam mode yang berdiri sendiri sederhana tetapi dengan meningkatnya kebutuhan akan sistem yang responsif dan fleksibel, serta virtualisasi, mengelola multi-pemrosesan secara efisien memberikan respons cepat terhadap semua permintaan pemrosesan tugas.

Unit penjadwalan sering disebut sebagai a tugas Dan itu adalah tugas penjadwal untuk menjalankan dan mengelola tugas -tugas ini kapan pun diperlukan; Penjadwal memilih tugas yang akan dihapus dan ditugaskan ke CPU untuk diproses, sesuai dengan model penjadwalan yang digunakan.

Bagaimana penjadwal mengetahui tugas mana yang menjadi prioritas?

Penjadwal perlu menjalankan proses seleksi yang adil dan efisien, dengan mempertimbangkan variabel, permintaan pemrosesan dinamis, dan memanfaatkan siklus CPU sebaik -baiknya.

Tugas dapat berada di dua negara bagian saat dalam pemrosesan:

  1. Di sebuah CPU meledak Di mana CPU melakukan perhitungan untuk memproses tugas (periode untuk semburan CPU bervariasi dari tugas ke tugas, dan program ke program).
  2. Dalam an Input/output (I/O) meledak menunggu data diterima atau dikirim dari sistem.

Saat CPU menganggur, penjadwal membaca Antrian siap, dan memilih tugas berikutnya yang akan dijalankan.  Kemudian, itu adalah Operator Itu memberikan kontrol tugas yang dipilih dari CPU, jadi harus cepat!  Setiap saat yang diambil oleh operator dikenal sebagai Pengiriman latensi.

Ada berbagai struktur dan parameter khusus untuk menentukan Antrian siap, serta beberapa metode yang dapat digunakan untuk mengelola kompleksitas proses penjadwalan.

Secara umum, ini tentang mengoptimalkan dan memaksimalkan pemanfaatan CPU, throughput, dll.

Penjadwal harus membuat keputusan selama salah satu tahap berikut:

  1. Saat tugas berubah dari a Berlari ke a Keadaan menunggu (Misalnya, menunggu selama permintaan I/O).
  2. Saat tugas berubah dari Berlari ke Siap (misalnya menanggapi interupsi).
  3. Saat tugas berubah dari Menunggu ke Siap (Misalnya permintaan I/O selesai).
  4. Ketika Tugas

Tugas baru harus dipilih jika tahap 1 atau 4 terjadi untuk memastikan pemanfaatan penuh CPU, dan pada tahap 2 dan 3, tugas dapat terus berjalan atau yang baru dipilih.

Setelah memahami bagaimana tugas diproses, mari kita lihat dua model penjadwalan yang berhubungan dengan interupsi CPU.

Keduanya memiliki fitur serupa dengan tugas, status tugas, antrian, dan prioritas (statis atau dinamis):

  • Penjadwalan non-preemptive adalah saat tugas berjalan sampai berhenti (secara sukarela), atau selesai. Windows® memiliki penjadwalan non-preemptive sampai Windows 3.x, setelah itu berubah menjadi preemptive dari Windows 95.
  • Penjadwalan preemptive adalah tempat tugas dapat ditangguhkan secara paksa oleh interupsi CPU, tidak seperti non-preemptive di mana tugas berjalan sampai melepaskan kontrol CPU.

Penjadwalan non-preemptive

Tugas dalam sistem non-preemptive akan berjalan sampai selesai.

Penjadwal kemudian memeriksa semua tugas dan menjadwalkan tugas prioritas tertinggi berikutnya dengan a Siap negara.

Dengan penjadwalan non-preemptive, begitu tugas memiliki penugasan ke CPU, itu tidak dapat diambil, bahkan jika tugas pendek harus menunggu tugas yang lebih lama untuk diselesaikan.

Manajemen penjadwalan di semua tugas adalah "adil" dan waktu respons dapat diprediksi karena tugas prioritas tinggi tidak dapat menabrak tugas menunggu lebih jauh di bawah antrian.

Penjadwal memastikan setiap tugas mendapat bagian dari CPU, menghindari keterlambatan dengan tugas apa pun.  Jumlah waktu 'yang dialokasikan untuk CPU mungkin tidak harus sama, karena tergantung pada berapa lama tugas yang dibutuhkan untuk menyelesaikannya.

Penjadwalan preemptive

Model penjadwalan ini memungkinkan tugas untuk terganggu-berbeda dengan penjadwalan non-preemptive yang memiliki pendekatan "run-to-completion".

Interupsi, yang dapat dimulai dari panggilan eksternal, memanggil penjadwal untuk menjeda tugas yang sedang berjalan untuk mengelola tugas prioritas lain yang lebih tinggi - sehingga kontrol CPU dapat didahului.

Tugas prioritas tertinggi di a Siap Negara dieksekusi, memungkinkan respons cepat terhadap acara real-time.

Beberapa kontra dengan penjadwalan preemptive melibatkan peningkatan overhead pada sumber daya saat menggunakan interupsi dan masalah dapat terjadi dengan dua tugas berbagi data, karena seseorang dapat terganggu saat memperbarui struktur data bersama, dan dapat secara negatif mempengaruhi integritas data secara negatif.

Di sisi lain, praktis untuk dapat menjeda tugas untuk mengelola orang lain yang bisa menjadi kritis.

Kesimpulan

Banyak varian dan ketergantungan dalam kebijakan yang berbeda dapat didefinisikan, seperti menggunakan a “Kebijakan Round Robin [i]” di mana setiap tugas (dengan prioritas yang sama) berjalan sekali, dan kemudian ditempatkan di ujung antrian, untuk siklus berikutnya.

Kebijakan lain termasuk Pertama masuk pertama keluar, Terpendar-Job-First, JOB-JOB-NEXT, Waktu tersisa terpendek, dll.

Analisis data historis dapat memberikan informasi tentang aspek -aspek, seperti tingkat di mana tugas baru tiba, CPU dan I/O semburan dll sehingga distribusi probabilitas dapat menghitung karakteristik waktu tunggu tugas, sehingga mempersenjatai administrator dengan data yang relevan untuk mendefinisikan model penjadwalan.