Perbezaan antara Penjadualan Pencegahan dan Tanpa Pengeluaran dalam Sistem Pengendalian

Penjadualan Pemproses (atau Penjadualan CPU) menentukan proses mana yang diberikan kepada, dan dikeluarkan dari CPU, berdasarkan model penjadualan seperti Preemptive dan Penjadualan Tanpa Pengecualian (juga dikenali sebagai Penjadualan Koperasi).

Sistem yang lebih tua boleh beroperasi dalam mod yang mudah berdiri sendiri tetapi dengan keperluan yang semakin meningkat untuk responsif, sistem yang fleksibel, serta virtualisasi, menguruskan pemprosesan pelbagai dengan cekap memberikan respons cepat kepada semua permintaan pemprosesan tugas.

Unit penjadualan sering disebut sebagai a tugas dan ia adalah tugas Scheduler untuk menjalankan dan menguruskan tugas-tugas ini apabila diperlukan; Penjadual memilih tugas yang akan dikeluarkan dan diberikan kepada CPU untuk diproses, mengikut model penjadualan yang digunakan.

Bagaimanakah Penjadual tahu tugas mana yang menjadi keutamaan?

Penjadual perlu menjalankan proses pemilihan yang adil dan cekap, dengan mengambil kira pembolehubah akaun, permintaan pemprosesan dinamik, dan membuat kebanyakan kitaran CPU.

Tugas boleh berada di dua negeri semasa dalam proses:

  1. Didalam CPU Burst di mana CPU melaksanakan pengiraan untuk memproses tugas (tempoh untuk CPU Burst berbeza dari tugas ke tugas, dan program ke program).
  2. Dalam satu Pecahan Input / Output (I / O) menunggu data diterima atau dihantar dari sistem.

Apabila CPU tidak berfungsi, Penjadual membaca Beratur giliran, dan memilih tugas seterusnya yang akan dijalankan. Kemudian, ia adalah Dispatcher yang memberikan kawalan tugas terpilih CPU, jadi perlu cepat! Sebarang masa yang diambil oleh Dispatcher dikenali sebagai Dispatch Latency.

Terdapat struktur dan parameter tersuai yang berbeza untuk menentukan Beratur giliran, serta beberapa kaedah yang boleh digunakan untuk menguruskan kerumitan proses penjadualan.

Secara amnya, tentang mengoptimumkan dan memaksimumkan penggunaan CPU, throughput, dan sebagainya.

Penjadual perlu membuat keputusan semasa salah satu peringkat berikut:

  1. Apabila Tugasan berubah daripada a Berjalan kepada a Negeri Menanti (sebagai contoh, menunggu semasa permintaan I / O).
  2. Apabila Tugas berubah daripada Berjalan kepada Sedia (contohnya bertindak balas terhadap gangguan).
  3. Apabila Tugas berubah daripada Menunggu kepada Sedia (contohnya permintaan I / O selesai).
  4. Apabila Tugas

Tugas baru mesti dipilih jika peringkat 1 atau 4 berlaku untuk memastikan penggunaan penuh CPU, dan pada kedua tahap 2 dan 3, tugas itu dapat terus berjalan atau yang baru dipilih.

Setelah memahami bagaimana tugas diproses, mari kita lihat dua model penjadualan yang menangani gangguan CPU.

Kedua-duanya mempunyai ciri yang sama dengan tugas, keadaan tugas, beratur, dan keutamaan (statik atau dinamik):

  • Penjadualan Tanpa Pengecualian adalah apabila tugas berjalan sehingga ia berhenti (secara sukarela), atau selesai. Windows® mempunyai Penjadualan Tanpa Pengecualian sehingga Windows 3.x, selepas itu ia berubah menjadi Preemptive dari Windows 95.
  • Penjadualan Pencegahan adalah di mana tugas boleh digantung secara paksa oleh gangguan CPU, tidak seperti Non-Preemptive di mana tugas berjalan sehingga ia mengeluarkan kawalan CPU.

Penjadualan Tanpa Pengecualian

Tugas-tugas dalam sistem Non-Preemptive akan dijalankan sehingga selesai.

Scheduler kemudian menyemak semua tugas tugas dan membuat jadual tugas utama keutamaan seterusnya dengan a Sedia negeri.

Dengan Penjadualan Tanpa Keuntungan, sekali tugas mempunyai tugasan untuk CPU, ia tidak dapat diambil, walaupun tugas pendek harus menunggu tugas lebih lama selesai.

Pengurusan penjadualan di semua tugas adalah "adil" dan masa tindak balas dapat diramalkan sebagai tugas keutamaan yang tinggi tidak dapat menantang tugas-tugas menunggu lebih jauh di barisan.

Penjadual memastikan setiap tugas mendapatkan 'bahagian CPUnya, mengelakkan sebarang kelewatan dengan tugas apa-apa. 'Jumlah masa' yang diperuntukkan kepada CPU mungkin tidak semestinya sama, kerana ia bergantung pada berapa lama tugas itu diperlukan untuk diselesaikan.

Penjadualan Pencegahan

Model penjadualan ini membolehkan tugasan diganggu - berbeza dengan Penjadualan Tanpa Preemptif yang mempunyai pendekatan "jangka habis-siap".

Gangguan, yang boleh dimulakan dari panggilan luaran, memanggil Penjadual untuk menjeda tugas yang sedang berjalan untuk menguruskan satu tugas keutamaan yang lebih tinggi - supaya kawalan CPU dapat dipertahankan.

Tugas keutamaan tertinggi dalam a Sedia keadaan dilaksanakan, membolehkan tindak balas pantas terhadap peristiwa masa nyata.

Sesetengah kontra dengan Penjadualan Preemptive melibatkan peningkatan overhed pada sumber apabila menggunakan gangguan dan isu-isu boleh berlaku dengan dua data perkongsian tugas, seperti yang mungkin terganggu semasa mengemas kini struktur data bersama, dan boleh menjejaskan integriti data secara negatif.

Sebaliknya, adalah praktikal untuk dapat menjeda tugas untuk menguruskan satu lagi yang boleh menjadi kritikal.

Dalam Ringkasan

Banyak variasi dan kebergantungan dalam dasar yang berbeza dapat ditakrifkan, seperti menggunakan a "Dasar Robin Pusingan [i]" di mana setiap tugas (dengan keutamaan yang sama) dijalankan sekali, dan kemudian diletakkan pada akhir baris gilir, untuk kitaran seterusnya.

Dasar-dasar lain termasuk Pertama masuk, pertama keluar, Terkecil-Kerja-Pertama, Pendek-Kerja-Seterusnya, Masa Sisa Terkecil, dan lain-lain.

Analisis data sejarah boleh memberikan maklumat tentang aspek, seperti kadar di mana tugasan baru tiba, CPU dan I / O Bursts dan lain-lain supaya pengagihan kebarangkalian dapat mengira ciri-ciri masa menunggu tugas, dengan itu menyandarkan pentadbir dengan data yang relevan untuk menentukan model penjadualan.