Perbedaan antara Penjadwalan Preemptif dan Non-Preemptif dalam Sistem Operasi

Penjadwalan Prosesor (atau Penjadwalan CPU) menentukan proses yang ditugaskan, dan dihapus dari CPU, berdasarkan model penjadwalan seperti Terlebih Dahulu dan Penjadwalan Non-Preemptive (juga dikenal sebagai Penjadwalan Koperasi).

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

Unit penjadwalan sering disebut sebagai a tugas dan 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 tahu tugas mana yang menjadi prioritas?

Penjadwal perlu menjalankan proses pemilihan yang adil dan efisien, dengan mempertimbangkan variabel akun, permintaan pemrosesan dinamis, dan memanfaatkan siklus CPU secara maksimal.

Tugas dapat di dua negara saat memproses:

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

Saat CPU dalam keadaan idle, Penjadwal membaca Antrian siap, dan memilih tugas selanjutnya yang akan dijalankan. Lalu, itu adalah Dispatcher yang memberikan kontrol tugas CPU yang dipilih, sehingga harus cepat! Setiap waktu yang diambil oleh Dispatcher 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 dalam salah satu dari tahapan berikut:

  1. Saat Tugas berubah dari a Lari ke a Negara menunggu (misalnya, menunggu selama permintaan I / O).
  2. Ketika Tugas berubah dari Lari untuk Siap (misalnya menanggapi interupsi).
  3. Ketika Tugas berubah dari Menunggu untuk 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 tersebut dapat terus berjalan atau yang baru dipilih..

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

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

  • Penjadwalan Non-Preemptive adalah ketika tugas dijalankan sampai berhenti (secara sukarela), atau selesai. Windows® memiliki Penjadwalan Non-Preemptive hingga Windows 3.x, setelah itu berubah menjadi Preemptive dari Windows 95.
  • Penjadwalan Terlebih Dahulu Di sinilah 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, sekali tugas memiliki tugasnya untuk CPU, itu tidak dapat diambil, bahkan jika tugas-tugas pendek harus menunggu tugas yang lebih lama untuk menyelesaikan.

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

Penjadwal memastikan setiap tugas mendapatkan bagiannya dari CPU, menghindari penundaan dengan tugas apa pun. 'Jumlah waktu' yang dialokasikan untuk CPU mungkin tidak harus sama, karena tergantung pada berapa lama tugas yang harus diselesaikan.

Penjadwalan Terlebih Dahulu

Model penjadwalan ini memungkinkan tugas-tugas 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 yang lebih tinggi - sehingga kontrol CPU dapat dicegah..

Tugas prioritas tertinggi dalam a Siap status dijalankan, memungkinkan respons cepat terhadap peristiwa waktu nyata.

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

Di sisi lain, praktis untuk dapat menjeda tugas untuk mengelola tugas lain yang mungkin kritis.

Singkatnya

Banyak variasi dan dependensi 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 akhir antrian, untuk siklus berikutnya.

Kebijakan lain termasuk Pertama masuk pertama keluar, Shortest-Job-First, Shortest-Job-Next, Waktu Tersisa Tersingkat, dll.

Analisis data historis dapat memberikan informasi tentang aspek-aspek, seperti tingkat di mana tugas-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 menentukan model penjadwalan.