Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Adakah proses mempunyai keutamaan dalam linux?

Adakah proses mempunyai keutamaan dalam linux?

青灯夜游
青灯夜游asal
2023-03-30 13:45:101323semak imbas

Proses dalam Linux mempunyai keutamaan. Linux ialah sistem pengendalian berbilang pengguna dan berbilang tugas Biasanya terdapat banyak proses yang dijalankan dalam sistem, tetapi CPU hanya boleh mengendalikan satu arahan dalam satu kitaran jam Proses manakah yang harus beroperasi dahulu dan siapa yang harus beroperasi terakhir. Ini perlu ditentukan oleh keutamaan proses. Dalam sistem Linux, terdapat dua parameter yang menunjukkan keutamaan proses: Pri dan Nice keutamaan proses ialah nilai PRI, bukan nilai Nice, tetapi nilai Nice akan menjejaskan keutamaan.

Adakah proses mempunyai keutamaan dalam linux?

Persekitaran pengendalian tutorial ini: sistem linux7.3, komputer Dell G3.

Keutamaan proses Linux

Linux ialah sistem pengendalian berbilang pengguna, berbilang tugas, dan biasanya terdapat banyak proses yang berjalan dalam sistem. Walau bagaimanapun, CPU hanya boleh mengendalikan satu arahan dalam satu kitaran jam (CPU semasa menggunakan teknologi berbilang benang dan berbilang teras, jadi ia boleh mengendalikan berbilang arahan dalam satu kitaran jam. Walau bagaimanapun, bilangan arahan yang boleh dikendalikan pada masa yang sama jauh lebih kecil daripada itu dalam sistem Jumlah bilangan proses), maka persoalannya datang: Siapa yang harus mengira dahulu dan siapa yang harus mengira terakhir? Ini perlu ditentukan oleh keutamaan proses.

  • Tertib di mana CPU memperuntukkan sumber adalah keutamaan

  • Proses dengan keutamaan yang lebih tinggi mempunyai hak untuk melaksanakan terlebih dahulu,

  • Anda boleh membiarkan proses berjalan pada CPU yang ditentukan untuk meningkatkan prestasi keseluruhan sistem

Selain itu, apabila CPU sedang mengira data, ia tidak melengkapkan set pengiraan dan kemudian meneruskan ke langkah seterusnya Operasi proses mula-mula beroperasi pada proses 1, kemudian pada proses 2, kemudian pada proses 3, dan kemudian pada proses 1 sehingga tugas proses tamat. Bukan itu sahaja, disebabkan wujudnya keutamaan proses, proses tidak dikira secara berurutan, tetapi proses mana yang mempunyai keutamaan lebih tinggi akan dikira lebih banyak kali dalam satu kitaran pengiraan.

Sukar untuk memahami cara ini, katakan dengan cara lain. Katakan saya kini mempunyai 4 anak (proses) yang perlu diberi makan (dikira saya lebih suka anak 1 (proses 1 mempunyai keutamaan yang lebih tinggi), dan anak 2, anak 3 dan anak 4 dilayan secara sama rata (proses 2, proses 3 dan). proses 4 mempunyai keutamaan). Sekarang saya mula memberi makan. Saya tidak boleh memberi makan kepada kanak-kanak 1 dahulu, dan kemudian memberi makan kepada kanak-kanak lain Sebaliknya, saya perlu menyuap makanan dalam gelung (semua gelung proses semasa operasi CPU). Kemudian, apabila saya memberi makan (pengiraan), saya akan menyuapkan anak sesuap nasi dahulu, dan kemudian memberi makan kepada anak-anak yang lain. Dan dalam satu kitaran, suapkan anak 1 dua suapan makanan dahulu, kerana saya lebih suka anak 1 (keutamaan tinggi), dan suapkan anak yang lain satu suap makanan. Dengan cara ini, anak 1 akan diberi makan dahulu (proses 1 pengiraan lebih cepat) kerana saya lebih suka anak 1.

Lihat keutamaan proses

1 Gunakan ps-al untuk melihat keutamaan proses

Adakah proses mempunyai keutamaan dalam linux?

2.PRI dan NI

Dalam sistem Linux, terdapat dua parameter yang mewakili keutamaan proses: Priority dan Nice.

[root@localhost ~]# ps -le
F S UID PID PPID C PRI NI ADDR  SZ WCHAN TTY    TIME  CMD
4 S   0   1    0 0  80  0    - 718     -   ? 00:00:01 init
1 S   0   2    0 0  80  0    -   0     -   ? 00:00:00 kthreadd
...省略部分输出...

Di mana PRI bermaksud Keutamaan dan NI bermaksud Nice. Kedua-dua nilai mewakili keutamaan Semakin kecil nilai, semakin tinggi keutamaan proses yang perlu diproses oleh CPU. Walau bagaimanapun, nilai PRI dilaraskan secara dinamik oleh kernel dan tidak boleh diubah suai secara langsung oleh pengguna. Jadi kita hanya boleh mempengaruhi nilai PRI dengan mengubah suai nilai NI dan secara tidak langsung melaraskan keutamaan proses.

Hubungan antara PRI dan NI adalah seperti berikut:

PRI (nilai akhir) = PRI (nilai asal) + NI

Sebenarnya semua orang cuma perlu ingat, kita boleh menukar keutamaan proses dengan mengubah suai nilai NI. Semakin kecil nilai NI, nilai PRI proses akan berkurangan, dan proses akan diproses oleh CPU terlebih dahulu, sebaliknya, semakin besar nilai NI, nilai PRI proses akan meningkat, dan proses akan diproses kemudian oleh CPU.

Terdapat beberapa perkara yang perlu diberi perhatian apabila mengubah suai nilai NI:

  • Julat NI ialah -20~19.

  • Pengguna biasa boleh melaraskan nilai NI dalam julat 0~19, dan hanya boleh melaraskan proses mereka sendiri.

  • Pengguna biasa hanya boleh meningkatkan nilai NI, bukan menurunkannya. Jika nilai NI asal ialah 0, ia hanya boleh dilaraskan menjadi lebih besar daripada 0.

  • Hanya pengguna akar boleh menetapkan nilai NI proses kepada nilai negatif, dan boleh melaraskan mana-mana proses pengguna.

Lihat arahan untuk melihat dan mengubah suai nilai yang bagus

1 nilai bagus

Masukkan atas-tekan r, masukkan pid proses, dan masukkan nilai bagus. (Jika ia menunjukkan bahawa ketinggian ditolak, gunakan sudo untuk meningkatkan kebenaran arahan atas).

2. Konsep lain

  • Berdaya saing: Terdapat banyak sistem, tetapi hanya sebilangan kecil CPU, atau hanya satu, jadi terdapat persaingan antara proses. Untuk menyelesaikan tugas dengan cekap dan bersaing untuk mendapatkan sumber berkaitan dengan lebih munasabah, keutamaan diberikan.

  • Kemerdekaan: Operasi berbilang proses memerlukan penggunaan eksklusif pelbagai sumber, jadi pelbagai proses tidak mengganggu satu sama lain.

  • Sejajar: Berbilang proses berjalan dalam berbilang CPU pada masa yang sama dipanggil selari.

  • Konkurensi: Berbilang proses menggunakan pensuisan proses pada CPU untuk memajukan berbilang proses dalam tempoh masa, yang dipanggil konkurensi.

Keutamaan proses ialah nilai PRI, bukan nilai Nice, tetapi nilai Nice akan menjejaskan keutamaan

PRI juga Lebih mudah difahami, iaitu keutamaan proses, atau dalam istilah orang awam, susunan program dilaksanakan oleh CPU Semakin kecil nilai ini, semakin tinggi keutamaan proses. Bagaimana dengan NI? Inilah nilai bagus yang kita bincangkan, yang mewakili nilai diubah suai keutamaan di mana proses itu boleh dilaksanakan. Seperti yang dinyatakan sebelum ini, lebih kecil nilai PRI, lebih cepat ia akan dilaksanakan Selepas menambah nilai bagus, PRI akan menjadi: PRI(baru)=PRI(lama)+bagus.

Setakat ini, apa yang perlu ditekankan ialah nilai bagus sesuatu proses bukanlah keutamaan proses itu, tetapi nilai bagus proses itu akan mempengaruhi perubahan keutamaan proses.

Tukar keutamaan proses dengan melaraskan nilai bagus Julat pelarasan yang bagus ialah -20~19.

Faktor dan prinsip yang mempengaruhi keutamaan dan perubahan proses

Strategi penjadualan: Penjadualan RR dan proses penjadualan FIFO ialah proses masa nyata . Proses yang dijadualkan dengan perkongsian masa (OTHER) ialah proses bukan masa nyata.

FIFO (masuk dahulu, keluar dahulu) dan RR (putaran kepingan masa) digunakan untuk proses masa nyata, LAIN (penjadualan perkongsian masa) digunakan untuk proses bukan masa nyata; -proses masa akan mendahului proses biasa; FIFO akan menyebabkan proses masa Nyata serentak dengan keutamaan sentiasa menduduki CPU, dan RR akan memastikan proses masa nyata dengan keutamaan yang sama dilaksanakan secara bergilir-gilir mengikut kepingan masa.

Proses masa nyata mempunyai keutamaan yang lebih tinggi daripada proses masa nyata menggunakan penjadualan keutamaan statik, dan proses bukan masa nyata menggunakan penjadualan keutamaan dinamik proses diselaraskan dengan bagus dan mungkin dipengaruhi oleh bonus.

Proses Linux mempunyai dua keutamaan: keutamaan proses biasa (menggunakan dasar penjadualan SCHED_NORMAL) dan keutamaan proses masa nyata (menggunakan dasar penjadualan SCHED_FIFO atau SCHED_RR)

Dasar penjadualan yang berbeza Nyata- proses masa boleh dibandingkan hanya apabila mereka mempunyai keutamaan yang sama Pada bila-bila masa, keutamaan proses masa nyata adalah lebih tinggi daripada proses biasa

Linux menggunakan penjadualan keutamaan statik untuk proses masa nyata, dan untuk proses biasa (Proses bukan masa nyata), dijadualkan mengikut keutamaan dinamik.

Proses masa nyata hanya mempunyai keutamaan statik (antara 0~MAX_RT_PRIO-1, MAX_RT_PRIO lalai ialah 100), dan kernel tidak lagi akan melaraskan keutamaan statiknya berdasarkan faktor seperti tidur

Setiap tahap keutamaan proses masa nyata No. 0-99 sepadan dengan baris gilir keutamaan (senarai terpaut yang sepadan dengan nilai yang lebih tinggi dilaksanakan terlebih dahulu (nombor 0 adalah yang paling rendah). diubah suai oleh chrt dan fungsi sepadan yang diterangkan kemudian;

Keutamaan statik proses bukan masa nyata boleh dilaraskan melalui nilai bagus (-20~19): static_prio=MAX_RT_PRIO + nice + 20.

bagus hanya mempengaruhi proses bukan masa nyata (keutamaan statik adalah antara 100 dan 139 Lebih besar bagus, lebih besar nilai keutamaan statik dan lebih rendah keutamaan).

Keutamaan dinamik proses bukan masa nyata dikira berdasarkan keutamaan statik dan bonus: dynamic_prio = maks (100, min (static_prio - bonus + 5, 139))

bonus mencerminkan purata masa tidur proses (Julat 0~10), lebih banyak masa tidur, lebih besar kemungkinan ia adalah proses interaktif, dan lebih besar kemungkinan ia tidak akan menghabiskan potongan masa sebelum melepaskan CPU setiap kali ia adalah miliknya. berpusing untuk berlari.

Cadangan berkaitan: "Tutorial Video Linux"

Atas ialah kandungan terperinci Adakah proses mempunyai keutamaan dalam linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn