Mekanisme penjadualan tugas Linux merujuk kepada arahan atau program khusus yang dilaksanakan oleh sistem pada acara tertentu; setiap CPU akan mempunyai baris gilir untuk menyimpan tugas dalam keadaan "TASK_RUNNING", dan penjadualan tugas dikeluarkan; daripada baris gilir ini Tugas dengan keutamaan tertinggi diletakkan di sebelah CPU untuk pelaksanaan.
Persekitaran pengendalian tutorial ini: sistem linux7.3, komputer Dell G3.
merujuk kepada arahan atau program tertentu yang dilaksanakan oleh sistem pada masa tertentu
Di Linux? , setiap CPU akan mempunyai baris gilir untuk menyimpan tugas dalam keadaan TASK_RUNNING Penjadualan tugas adalah untuk mengeluarkan tugas keutamaan tertinggi daripada baris gilir ini sebagai tugas seterusnya yang akan dimasukkan ke dalam CPU untuk dilaksanakan.
Penjadualan tugas memerlukan dua proses: penukaran konteks dan algoritma pemilihan
Penukaran konteks
Penukaran konteks daripada proses Kepada konteks yang lain proses, kerana ia berlaku begitu kerap, ia sering menjadi kunci kepada kecekapan penjadual.
fungsi schedule() memanggil suis_ke makro ini melaksanakan penukaran sebenar antara proses Kodnya disimpan dalam include/i386/system.h .
Suis_ke makro ditulis dalam pemasangan terbenam dan sukar difahami.
Fungsi switch_to() kembali seperti biasa Alamat pemulangan pada tindanan ialah task_struct::thread::eip proses baharu, iaitu kedudukan berterusan yang ditetapkan apabila proses baharu digantung kali terakhir (the kali terakhir switch_to telah dilaksanakan) () label kedudukan "1:").
Kini ia dipindahkan ke konteks proses baharu untuk dijalankan. Ini melibatkan wakeup, sleepon dan fungsi lain untuk tidur dan membangunkan proses.
Algoritma pemilihan
Fungsi schedule() Linux akan merentasi semua proses dalam baris gilir sedia dan memanggil fungsi goodness() untuk mengira berat setiap proses , pilih proses dengan berat terbesar dan gunakannya. Penjadual Linux dilaksanakan terutamanya dalam fungsi schedule().
Langkah penjadualan:
Jadualkan aliran kerja fungsi adalah seperti berikut:
(1) Bersihkan proses yang sedang berjalan
(2) Pilih Satu proses untuk dijalankan (pick_next_task)
(3) Tetapkan persekitaran berjalan bagi proses baharu
(4) Proses penukaran konteks
Penjadual Linux membahagikan proses kepada tiga kategori
Penjadualan proses ialah fungsi teras sistem pengendalian.
Penjadual hanyalah sebahagian daripada proses penjadualan Penjadualan proses ialah proses yang sangat kompleks yang memerlukan berbilang sistem untuk bekerja bersama-sama untuk diselesaikan.
Artikel ini hanya menumpukan pada penjadual Tugas utamanya ialah memilih yang paling sesuai antara semua proses BERJALAN.
Sebagai sistem pengendalian umum, penjadual Linux membahagikan proses kepada tiga kategori:
Pembelajaran yang disyorkan:Proses interaktif
Proses jenis ini mempunyai banyak interaksi manusia-komputer , Jadi proses itu sentiasa tidur, menunggu input pengguna. Aplikasi biasa ialah editor vi. Proses jenis ini mempunyai keperluan yang agak tinggi pada masa tindak balas sistem, jika tidak, pengguna akan merasakan bahawa sistem lambat bertindak balas.
Proses Kelompok
Proses jenis ini tidak memerlukan interaksi manusia-komputer, berjalan di latar belakang dan menggunakan banyak sumber sistem. Tetapi boleh bertolak ansur dengan kelewatan tindak balas. Seperti penyusun.
Proses masa nyata
Masa nyata mempunyai keperluan tertinggi untuk kelewatan penjadualan Proses ini sering melakukan operasi yang sangat penting dan memerlukan tindak balas serta pelaksanaan segera. Contohnya, perisian main balik video atau sistem kawalan penerbangan pesawat Jelas sekali bahawa program sedemikian tidak boleh bertolak ansur dengan kelewatan penjadualan yang lama, ia akan menjejaskan kesan tayangan filem, dan paling teruk, pesawat akan musnah dan orang akan mati
Atas ialah kandungan terperinci Apakah mekanisme penjadualan tugas linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!