|
Planificarea lucrarilor
In acest caz ne referim la notiunea de batch-processing (preluarea pe laturi) in care planificatorul de job-uri primeste controlul pentru a selecta, din multimea lucrarilor (job-urilor) prezente in sistem, urmatoarea lucrare care va incepe. Sa fie executata, in acest caz, se creaza procesele corespunzatoare lucrarii si apoi sunt trecute in starea "pregatit pentru executie" dupa ce lucrarea respectiva primeste resursele de care are nevoie. Planificatorul tine gestiunea lucrarilor din sistem. Pentru aceasta au nevoie de structuri de date - blocul de control al job-urilor.
identificator lucrare
stare curenta
prioritate
timp estimat
nr de benzi
alte resurse
pointer la alta structura
(Job Control Block)
Structurile de acest fel se creaza in mod dinamic atunci cand lucrarile vin in sistem. Ori de cate ori anumite resurse sunt cerute concurent din mai multe locuri este necesara aplicarea unei politici de planificare. In acest caz, obiectivele urmarite pot fi contradictorii:
Sistemul sa ruleze cat mai multe job-uri (deci se vor rula si vor fi favorizate job-uri scurte)
Procesul sa fie cat mai mult folosit si cat mai optim (in acest caz sunt favorizate job-urile lungi)
Toata lumea sa fie multumita in egala masura, deci trebuie sa se ruleze toate procesele
Obiectivele politicilor de planificare
Disponibilitatea utilizarii in sistem a unor resurse sarace sau scumpe (de ex sunt prioritare lucrarile ce folosesc plotter-ul)
Disponibilitatea resurselor fundamentale ale sistemului (cu cat o lucrare va cere mai multa memorie si mai mult timp pentru ea, va astepta mai mult)
Asigurarea echilibrului sistemului (trebuie sa fie mixate in multiprogramare lucrari ce utilizeaza procesorul intens cu lucrari ce utilizeaza dispozitivile de I/O pentru ca nici procesorul si nici dispozitivele de I/O sa nu fie nefolosite)
Asigurarea unui pret optim al serviciilor
Garantarea serviciilor asigurate de sistem (de ex. daca sistemul dispune de 4 benzi magnetice si se primesc mai multe lucrari care folosesc fiecare o banda magnetica, se va refuza o lucrare care necesita 4 banzi magnetice, dar cand este rulata ca nu se poate rula o alta in sistem, odata acceptata sistemul trebuie sa garanteze executia lucrarilor - indiferent de timpul de asteptare)
Garantarea termenelor de executie a lucrarilor
Monoprogramarea
In acest caz nu se partajeaza resurse cu nimeni. Una din cele mai simple politici de planificare este FCFS (first come, first save).
Se considera urmatorul caz:
Job(lucrare)
Timpul de sosire in sistem
Tsi
Timpul de rulare
Tri
1
2
3
0
2
4
20
10
4
Rezultatele sunt sintetizate in tabelul:
Job
Tsi
Timpul de inceput Tii
Timul de terminate TTi
Timpul de raspuns
Ti= Tti-Tii
1
2
3
0
2
4
0
20
30
20
30
34
20
28
30
In aces caz: TFCFS=26 ; TA=1/A* ΣTi ; ΣTi=78.
Operatiile de I/O ale unei lucrari nu pot fi suprapuse cu calculele altei lucrari ca in cazul multiprogramarii. In acest caz procesorul sta. Un criteriu de performante al algoritmului il reprezinta fluxul prin sistem (numarul de job-uri pe unitatea de timp).
Timpul de raspuns poate fi vazut ca o suma intre timpul cat lucrarea a asteptata pana cand a fost luata in considerare si timpul de rulare in unitatea centrala (procesorul a rulat), cat si timpul operatiilor de I/O (cat procesorul a stat blocat).
Media timpului de raspuns reprezinta aprecierea medie a algoritmului de planificare folosit, adica in exemplul nostru:
TA=1/n * ΣTi = 78/3 = tmediu =26
Sa consideram un alt algoritm care are scopul cresterii fluxului prin sistem, in care se ruleaza cel mai scurt job primul (Shortest Job First - SJF). Consideram aceeasi colectie de lucrari ca si in primul caz. Modul de planificare va fi urmatorul:
Job
Tsi
Tii
TTi
Ti=TTi-Tsi
1
2
3
0
2
4
0
24
20
20
34
24
20
32
20
ΣTi=72 TA=72/3=24<TFCFS
Sa consideram si cazul in care se presupune ca se cunosc lucrarile care vor veni pentru rulare, caz in care se asteapta 4 unitati de timp pentru sosirea tuturor joburilor in sistem si apoi se ruleaza job-urile cele mai scurte:
Job
Tsi
Tii
TTi
Ti
1
0
18
38
38
2
3
2
4
8
4
18
80
16
4
TSJFFK=19,33<TSJF
Mediul cu multiprogramarea
In acest caz rezultatele vor fi mult mai bune, rulandu-se mai multe programe in paralel. Cand unul face operatii de I/O si se blocheaza, un altul foloseste procesorul. Pe termen scurt algoritmul de planiicare este Round-Robin in care fiecare proces primeste o cuanta de executie si apoi trece in coada. Pe un interval mai mare de timp, toate programele au rulat si si-au impartit timpii in mod egal.
Consideram o colectie de 5 lucrari. Avem:
Job
Tsi
Ri
Mem(kb)
Imprimanta
1
2
3
4
5
0
2
4
6
9
9
1
4
2
3
256(2B)
128(1B)
256(2B)
245(2B)
128(1B)
DA
DA
NU
NU
NU
B=BLOC
Ri=timpul de rulare in monoprogramare
Daca presupunem ca lucrarile ar fi pregatite in ordinea FCFSin monoprogramare avem:
TFCFS=9,4; WFCFS=4,06
Job
Tsi
Tii
TTi
Ti=TTi-Tsi
Wi=Ti/Ri
1
2
3
4
5
0
2
4
6
9
0
9
10
14
18
9
10
14
16
19
9
8
10
10
10
1
8
2.5
5
3.66
Σ = 47
Σ = 20.16
Atentie! Timpul de raspuns nu este un parametru foarte corect in aprecierea performantelor planificarii. O lucrare care a fost rulata imediat si a durat o ora are timpul de raspuns 1h, o lucrare servita imediat si care a durat 4h are timpul de raspuns 4h dar nu este un parametru corect. Pentru aceasta se foloseste timpul de raspuns ponderat definit ca raportul dintre timpul de raspuns si timpul de rulare.
In cazul multiprogramarii Round-Robin se considera urmatoarele ipoteze:
a) Resursele sunt infinite (cum vine o lucrare va fi executata imediat)
b) Operatiile de I/O nu se suprapun cu cele de calcul
Datorita planificarii Round-Robin, daca intr-o ora lucreaza o singura lucrare, ea consuma 1h din timp, daca sunt planificate 2 lucrari, fiecare consuma cate o jumatate de ora.
Head-way = fractiune din timp utilizata efectiv de fiecare lucrare
Rezultatele din diagrama se regasesc in urm tabel:
Job
Si
Tii
TTi
Ti=TTi-Tsi
Wi=Ti/Ri
1
2
3
4
5
0
2
4
6
9
0
2
4
6
9
19
4
16
13
18
19
2
12
7
9
2.11
2
3
3.5
3
Σ =49
Σ = 13.66
tM de raspuns = 9.8; wM=2.73
Lucrarile cu w mic au fost tratate mai bine
In continuare analizam cazul multiprogramarii cu suprapunere a operatiilor de I/O. Sa consideram 2 lucrari, fiecare ruland in monoprogramare 16 unitati de timp, din care 25% din timp este pierdut cu operatiile de I/O. In acest caz, prima lucrare are timpul de raspuns 16, a doua 32, iar tM=24 si w=1,5. Daca lucrarile sunt reluate in multiprogramare Round-Robin, vor exista momente cand procesorul va fi nefolosit. Daca pe masina punem sa ruleze un singur job, procesorul va sta nefolosit 25% din timp, daca sunt 2 job-uri, procesorul sta nefolosit 4%, pentru 3 joburi avem 0,4%, iar pentru 5 joburi avem 0%. In procent de 96% procesorul ruleaza 2 lucrari in mod egal, deci fiecare avanseaza cu 48%.
Daca timpul total de unitate centrala este 12 pt fiecare job, atunci timpul de terminare este 12/0,48 = 25; w=1,56.
In monoprogramare, fiecare job are 16 unitati de timp, 4 unitati de I/O si 12 de calcul, deci timpul mediu este 24.
Concluzia este ca multiprogramarea este rea pentru utilizator, dar aduce performante in utilizarea sistemului.
Daca masina are resurse finite acestea se reflecta in timpul de raspuns, performantele scazand. In exemplul de mai sus, presupunem ca imprimanta este virtualizata, iar problemele apar datorita memoriei. Daca consideram ca exista 5 blocuri de memorie disponibila, vom avea:
Job
Ri
Tsi
Tii
TTi
Ti
Wi
1
2
3
4
5
9
1
4
2
3
0
2
4
6
9
0
2
4
13.5
9
19
4
13.5
19
18
19
2
9.5
13
9
2.11
2
2.37
6.5
3
Σ =52.5
Σ =15.98
TM=10.5
WM=3.19