Perbezaan antara Penjadualan Pencegahan dan Tanpa Preemptif dalam Sistem Pengoperasian Perbezaan Antara Penjajaran Pemproses
Penjadualan Pemproses (atau Penjadualan CPU ) menentukan proses yang ditugaskan dan dikeluarkan daripada CPU, berdasarkan model penjadualan seperti Preemptive dan Non - Penjadualan Pengembalian (juga dikenali sebagai Penjadualan Kerjasama ).
Sistem lama boleh beroperasi dalam mod yang mudah berdiri sendiri tetapi dengan peningkatan keperluan untuk responsif, sistem yang fleksibel, dan juga virtualisasi, mengurus pemprosesan pelbagai dengan cekap memberikan respons cepat kepada semua permintaan pemprosesan tugas.
Unit penjadualan sering disebut sebagai tugas dan itu adalah tugas Scheduler untuk menjalankan dan menguruskan tugas-tugas ini apabila diperlukan; Scheduler memilih tugas yang akan dikeluarkan dan diberikan kepada CPU untuk diproses, sesuai ke 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 dalam dua keadaan semasa dalam pemprosesan:
- Dalam CPU Burst di mana CPU sedang melakukan perhitungan untuk memproses tugasnya (periode untuk CPU Burst bervariasi dari tugas ke task, program ke program).
- Dalam Input / Output (I / O) Burst menunggu data diterima atau dihantar dari sistem.
Apabila CPU tidak berfungsi, Penjadual membaca Antrian sedia, dan memilih tugas seterusnya untuk dijalankan. Kemudian, ia adalah Dispatcher yang memberikan kawalan tugas terpilih kepada CPU, jadi perlu cepat! Sebarang masa yang diambil oleh Dispatcher dikenali sebagai Dispatch Latency .
Terdapat struktur dan parameter tersuai yang berbeza untuk menentukan Antrian sedia, serta beberapa kaedah yang boleh digunakan untuk menguruskan kerumitan proses penjadualan.
Secara umumnya, mengenai pengoptimuman dan memaksimumkan penggunaan CPU, throughput, dll.
Scheduler harus membuat keputusan semasa salah satu tahap berikut:
- Apabila Petugas berubah dari Running ke Negara Menunggu (sebagai contoh, menunggu semasa permintaan I / O).
- Apabila Tugasan berubah daripada Running ke Sedia (contohnya bertindak balas kepada interrupt).
- Apabila Tugasan berubah daripada Menunggu ke Sedia (contohnya permintaan I / O selesai).
- Apabila Petugas
Petugas baru harus dipilih jika tahap 1 atau 4 terjadi 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-ciri yang serupa dengan tugas, keadaan tugas, beratur, dan keutamaan (statik atau dinamik):
- Penjadualan Tanpa Preemptif ialah apabila tugas berjalan sehingga berhenti (secara sukarela), atau selesai. Windows® mempunyai Penjadualan Non-Preemptive hingga Windows 3. x, selepas itu ia berubah menjadi Preemptive dari Windows 95.
- Penjadualan Preemptive adalah di mana tugas boleh digantung dengan paksa oleh CPU yang mengganggu, tidak seperti Non-Preemptive di mana tugas berjalan sehingga ia mengeluarkan kawalan CPU.
Penjadualan Tanpa Preemptif
Tugasan dalam sistem Tanpa Pengutipan akan berjalan sehingga selesai.
Scheduler kemudian menyemak semua tugas tugas dan membuat jadual tugas keutamaan seterusnya seterusnya dengan keadaan Siap.
Dengan Penjadualan Tanpa Pencegahan, sekali tugas mempunyai tugasan untuk CPU, ia tidak dapat diambil, walaupun tugas pendek harus menunggu tugas lebih lama selesai.
Pengurusan penjadualan merentasi semua tugas adalah "adil" dan masa tindak balas dapat diramalkan sebagai tugas keutamaan tinggi tidak dapat membungkus 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 Nyahsimpan
Model penjadualan ini membolehkan tugas menjadi terganggu - Berbeza dengan Penjadualan Tanpa Preemptif yang mempunyai pendekatan "bersambung".
Interrupts, yang boleh dimulakan dari panggilan luaran, memanggil Penjadual untuk menjeda tugas yang sedang berjalan untuk menguruskan satu tugas keutamaan yang lebih tinggi - jadi kawalan CPU boleh dilakukan terlebih dahulu.
Tugas keutamaan tertinggi dalam keadaan Siap dilaksanakan, yang membolehkan tindak balas pantas terhadap peristiwa masa nyata.
Sesetengah kontra dengan Penjadualan Preemptive melibatkan peningkatan overheads 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 ketergantungan dalam dasar yang berbeza boleh ditakrifkan, seperti menggunakan "Dasar Robin Pusingan [i]" di mana setiap tugas (dengan keutamaan yang sama) diletakkan pada akhir baris gilir, untuk kitaran seterusnya.
Dasar lain termasuk First-In-First-Out , Shortest Job-First , Shortest Job-Next , , dan lain-lain.
Analisis data sejarah boleh memberi maklumat mengenai aspek, seperti kadar di mana tugasan baru tiba, CPU dan I / O Bursts, jadi pengagihan kebarangkalian dapat mengira ciri-ciri masa menunggu tugas, pentadbir dengan data yang relevan untuk menentukan model penjadualan.