This is an old revision of the document!
Pentru parcurgerea demo-urilor, folosim arhiva aferentă. Demo-urile rulează pe Linux. Descărcăm arhiva folosind comanda
wget http://elf.cs.pub.ro/so/res/cursuri/curs-04-demo.zip
și apoi decomprimăm arhiva
unzip curs-04-demo.zip
și accesăm directorul rezultat în urma decomprimării
cd curs-04-demo/
Acum putem parcurge secțiunile cu demo-uri de mai jos.
Dorim să vedem numărul de schimbări de context (voluntare sau nevoluntare) ale unei comenzi. Pentru aceasta rulăm comanda
/usr/bin/time -v find /var/log
Din output-ul comenzii de mai sus, extragem numărul de schimbări de context. Numărele de schimbări de context se găsesc, respectiv, pe liniile care încep cu Voluntary context switches, respectiv Involuntary context switches.
Rulăm din nou comanda
/usr/bin/time -v find /var/log
Observăm că acum, la a doua rulare, este semnificativ mai mic numărul schimbărilor voluntare. Aceasta se întâmplă deoarece se realizează, la prima rulare a comenzii, caching în memorie pentru date. Adică nu se mai execută operații blocante la dispozitivele de I/O, rezultând într-un număr mai mic de schimbări voluntare.
Dorim să comparăm numărul de schimbări de context pentru o comandă față de varianta acesteia cu redirectarea ieșirii standard la /dev/null
. Pentru aceasta rulăm comanda
/usr/bin/time -v find /var/log > /dev/null
Ce valori sunt acum afișate pentru cele două tipuri de schimbări de context?
Întrucât nu se mai lucrează cu terminalul aferent ieșirii standard, nu se execută multe operații blocante și nu se tranferă date generate de comandă în fișier. Rezultă direct un număr și mai mic de schimbări de context (atât voluntare cât și nevoluntare) și o durată de execuție mai mică a procesului.
Dorim să analizăm impactul configurării priorității statice (nice) a sistemului. Pentru aceasta vom porni același proces cu diverse valori pentru nice și vom observa durat de rulare.
Intrăm în directorul nice/
din arhiva cu demo-uri a cursului și parcurgem fișierele cpu.c
și start-all
. Fișierul cpu.c
execută operații care țin procesorul ocupat; fișierul start-all
este un script care pornește 6 procese cu diverse valori pentru nice.
Pentru a putea rula, începem prin compilarea programului cpu.c
folosind comanda
make
Pentru a testa scenariul rulăm scriptul:
./start-all
Scriptul va porni 6 procese cu valori diferite pentru nice
:
nice = -20
);nice = 0
, implicit);nice = 19
).Pentru fiecare proces, este reținut output-ul într-un fișier. Pentru a afla timpul a fiecărui proces în fișierul rezultat, folosim comanda:
grep -H 'Elapsed' pri*
Observăm că procesele prioritare au avut cel mai scurt timp de rulare iar cele subprioritare cel mai lung timp. Planificatorul a ținut, așadar, cont de valoarea priorității statice (nice
).