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.
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:
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:
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):
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.
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.
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.