Grozav

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 5 ianuarie 2016; verificările necesită 7 modificări .

Utilitarul nice  este un program de calculator în sisteme de operare asemănătoare UNIX , conceput pentru a porni procese cu o prioritate nice schimbată. Prioritatea nice ( întreg ) a unui proces este utilizată de planificatorul de procese a nucleului sistemului de operare atunci când alocă timpul CPU între procese , poate fi numită cpu_nice [1] pentru a o distinge de prioritatea io_nice [2] utilizată de planificatorul I/O și modificat de utilitatea ionică [3] . Frumosul utilitar a apărut în a 4-a versiune a sistemului de operare UNIX , dezvoltat de AT&T [4] . Descris în IEEE Std 1003.1-2001 ( POSIX .1) [4] [5] . O implementare frumoasă este inclusă în pachetul coreutils .

Ar trebui să se distingă termenii „utilitate” și „comandă”. Un utilitar  este un program de calculator care rulează într-un proces separat . Comanda  este o comandă încorporată a interpretului de comenzi (shell) , executată în interiorul procesului shell .

Comanda nice este o comandă  încorporată în shell care îndeplinește aceleași funcții ca și utilitarul nice , dar rulează în interiorul procesului shell . Implementat, de exemplu, de interpreții de comenzi csh și tcsh .

Prioritatea plăcută  este un număr care îi spune programului de procesare a nucleului sistemului de operare prioritatea pe care utilizatorul ar dori să o atribuie procesului .

Descriere

Utilitarul nice , rulat fără argumente, scoate prioritatea plăcută moștenită de la procesul părinte . nice preia un argument offset care variază de la -20 (prioritatea cea mai mare) la +19 (prioritatea cea mai scăzută). Dacă specificați offset-ul și calea către executabil , nice își va primi prioritatea de proces , o va schimba la offset-ul specificat și va folosi apelul de familieiexec() pentru a înlocui codul de proces cu codul din executabilul specificat Comanda plăcută va face același lucru, dar mai întâi va efectua un apel de sistem de familie pentru a porni procesul copil ( eng. sub-shell ). Dacă nu este specificat nicio compensare, se va folosi offset +10. Un utilizator privilegiat ( root ) poate specifica un offset negativ. fork() 

Prioritatea plăcută și prioritatea programatorului de procese a nucleului sistemului de operare  sunt numere diferite. Numărul frumos este prioritatea pe care utilizatorul ar dori să o atribuie procesului . Prioritatea planificatorului  este prioritatea reală atribuită procesului de către planificator . Planificatorul poate dori să atribuie unui proces o prioritate apropiată de bună, dar acest lucru nu este întotdeauna posibil, deoarece pot exista multe procese care rulează pe sistem cu priorități diferite. Prioritatea plăcută este un atribut de proces și, ca și alte atribute, este moștenită de procesele copil . În ieșirea utilităților top , ps , htop , etc., prioritatea nice se numește „NI” - prescurtare pentru „nice”, iar prioritatea planificatorului  este „PRI” - prescurtare pentru „priority”. De obicei NI = PRI - 20 , dar acest lucru nu este întotdeauna adevărat. Implicit NI=0 , respectiv PRI=20 .

Programul de procesare a nucleului Linux acceptă priorități de la 0 ( în timp real ) la 139 inclusiv [6] . Prioritățile −20…+19 ale utilitarului sau comenzii nice corespund priorităților 100…139 ale planificatorului de proces . Alte priorități ale planificatorului de procese pot fi setate cu comanda chrt din pachetul util-linux .

Programul de procesare a nucleului FreeBSD acceptă priorități de la -20 la +20.

Pe Linux , apelul de sistem este folosit pentru a obține prioritatea actuală bună a unui proces și [7] pentru a o modifica . getpriority()setpriority()

Planificatorul de proces poate funcționa în conformitate cu o politică selectată de utilizator ( de exemplu , politica de programare ) .  Unele politici pot ignora prioritatea bună.

În Linux , folosind un apel de sistem, puteți afla politica de planificare a proceselor aplicată procesului curent și o puteți utiliza  pentru a-l schimba [8] . sched_getscheduler()sched_setscheduler()

Utilitarul renice este folosit pentru a schimba prioritatea proceselor care rulează deja .

Sintaxă

frumos [ -n offset ] [ --adjustment = offset ] [ comandă [ argument ... ]]

Opțiuni

-n offset --adjustment=offset Setați prioritatea nice la suma priorității nice curente și a numărului „offset” specificat. Dacă acest argument nu este specificat, se va folosi numărul 10.

Note

  1. CPU - engleză.  unitate centrală de procesare , unitate centrală de procesare .
  2. IO _  intrare-ieșire , intrare-ieșire .
  3. ionice este un program din pachetul util-linux . Consultați ionice(1) pagina de manual pentru comenzile utilizatorului GNU/Linux  .
  4. 1 2 nice(1)  - Pagina de manual pentru comenzile utilizatorului FreeBSD  .
  5. Utilul frumos . Grupul Deschis . — Specificațiile de bază ale grupului deschis, problema 7. IEEE Std 1003.1, ediția 2013. Preluat la 8 august 2015. Arhivat din original la 12 septembrie 2015.
  6. Vezi codul sursă al nucleului Linux :
  7. getpriority(2) -  Pagina de manual pentru apeluri de sistem GNU/Linux  
  8. sched_getscheduler(2) -  Pagina de manual pentru apeluri de sistem GNU/Linux  

Link -uri