Sunteți pe pagina 1din 12

CAPITOLUL 2

TEHNICI DE GESTIUNE A LUCRĂRILOR LA


SISTEMELE DE CALCUL

2.1. Obiectivele urmărite în gestiunea lucrărilor

Una dintre funcţiile majore ale unui sistem de operare este de a optimiza utilizarea tuturor
resurselor unui sistem de calcul: timp unitate centrală de prelucrare, spaţiu de memorie internă,
canale, registre, dispozitive periferice de intrere/ieşire, biblioteci, programatori, utilizatori,
rezultate ale prelucrării.
Cu o planificare foarte riguroasă este posibilă apropierea de încărcarea maximă a unităţii
centrale de prelucrare şi a procesoarelor de intrare/ieşire (canale). Chiar şi în acest caz însă, sunt
menţinute neocupate alte resurse ale sistemului de calcul: memoria internă, memoria externă,
dispozitivele periferice de intrare/ieşire.
La stabilirea unei modalităţi de planificare a lucrărilor trebuie cunoscute foarte precis
obiectivele- uneori subiective şi contradictorii- de realizare simultană a următoarelor activităţi:
- execuţia unui volum cât mai mare de lucrări în unitatea de timp - dacă se rulează lucrări cu timp
redus de execuţie;
- reducerea timpilor de aşteptare ai unităţii centrale de prelucrare - dacă se execută lucrări cu
volum mare de calcule şi număr redus de operaţii de intrare/ieşire;
- încărcarea dispozitivelor periferice la capacitate maximă - când se execută lucrări cu volum
mare de operaţii de intrare/ieşire şi volum redus de calcule.
Se observă că unele obiective se exclud prin natura lor.
Se poate aprecia în general, că pentru stabilirea unei strategii de planificare a execuţiei
unor lucrări în condiţiile impuse de limitările hardware, se vor urmări obiectivele:
- maximizarea ratei de ieşire a lucrărilor;
- minimizarea timpului mediu de răspuns;
- servirea unui număr cât mai mare de utilizatori, într-un timp acceptabil;
- reducerea costurilor pentru serviciile prestate;
- posibilitatea execuţiei unor lucrări cu prioritate (printr-un cost mai ridicat);
- încărcarea echilibrată a unităţii centrale de prelucrare şi a sistemului de intrare/ieşire;
- folosirea cu un randament ridicat a spaţiului de memorie internă şi externă;
- distribuirea prelucrării unui program, prin împărţirea acestuia în sarcini mai mici (taskuri) ce se
pot executa în paralel (multitasking);
- integrarea unui număr cât mai mare de utilizatori (clienţi) în jurul unui procesor central
(server).

13
2.2. Monoprogramarea

Monoprogramarea este o tehnică de gestiune a lucrărilor ce presupune execuţia


secvenţială a lucrărilor solicitate a se prelucra pe un sistem de calcul.
Caracteristicile acestei tehnici se concretizează în următoarele aspecte:
- planificarea lucrărilor se realizează strict secvenţial într-o ordine prestabilită;
- fiecare lucrare are la dispoziţie toate resursele sistemului de calcul în momentul execuţiei;
- fiecărei lucrări i se asociază un singur proces la un moment dat, astfel că pe durata operaţiilor
de intrare/ieşire (care durează mult comparativ cu durata de execuţie a unităţii centrale de
prelucrare), unitatea centrală de prelucrare aşteaptă terminarea acestor operaţii, conducând la
creşterea duratei de execuţie a lucrărilor.
Obiectivul urmărit în cadrul acestei tehnici îl constituie reducerea timpului mediu
petrecut de lucrare în sistem.
Execuţia lucrărilor în monoprogramare
Un program solicită pe parcursul execuţiei operaţii de intrare/ieşire; operaţiile sunt
supervizate de către un procesor de comunicaţii numit canal, care transferă conţinutul între
memoria internă şi dispozitivele periferice de intrare/ieşire.
Dacă unitatea centrală de prelucrare întâlneşte o instrucţiune de citire, atunci iniţiază
execuţia unui proces de intrare către procesorul de comunicaţie, continuând-şi activitatea de
prelucrare fără a se interfera cu activitatea canalului.
Procesele de intrare/ieşire fiind mai lente, unitatea centrală de prelucrare va aştepta
transferul datelor solicitate în vederea prelucrării lor ulterioare; dacă procesul de intrare s-a
încheiat, unitatea centrală de prelucrare va fi sesizată de canal printr-o întrerupere.
Sincronizarea activităţilor dintre unitatea centrală de prelucrare şi procesorul de
comunicaţie este redată în fig. 2.1.

Fig.2.1. Sincronizarea activităţilor dintre unitatea centrală de prelucrare ( CPU ) şi


procesorul de comunicaţie ( DMAC ) în monoprogramare

14
t1 - momentul iniţierii de către CPU a unei operaţii de intrare;
t2 - momentul în care CPU are nevoie de datele solicitate de la dispozitivul periferic de intrare, pe
care nu le are deoarece nu s-a terminat operaţia de citire;
t3 - se termină operaţia de citire şi se reia execuţia programului de către CPU cu datele solicitate;
t4 - momentul încheierii execuţiei programului.
Pentru aprecierea eficienţei utilizării acestor procesoare ( CPU, DMAC), se calculează
randamentul de utilizare (în % ):

Deşi prezenţa canalului ameliorează productivitatea sistemului datorită simultaneităţii


activităţii acestuia cu activitatea CPU (parţial sau total), există intervale de timp impuse de
necesitatea sincronizării activităţilor în care CPU este în starea de aşteptare.

2.3. Multiprogramarea

Timpul de inactivitate al CPU impus de perioadele de aşteptare poate fi redus substanţial


dacă în memoria internă ar putea coexista simultan mai multe programe ce pot solicita CPU
atunci când aceasta aşteaptă terminarea unei operaţii de intrare/ieşire pentru lucrarea curentă în
execuţie.
Multiprogramarea este o tehnică de gestiune a lucrărilor pe sistemele de calcul prin care
sunt plasate mai multe lucrări simultan în memoria internă iar CPU comută între ele; din punct
de vedere conceptual, multiprogramarea implică simultaneitatea a "n" procesoare pe un singur
processor sau existenţa a "n" procesoare virtuale în cadrul unui singur procesor.
Caracteristicile de bază ale acestei tehnici constă în:
- existenţa simultană a mai multor lucrări în memoria internă;
- existenţă unui mecanism de trecere de la un program la altul astfel ca randamentul sistemului să
fie ridicat;
- existenţa unui mecanism de protecţie între lucrări care să permită execuţia fiecăreia, fără
afectarea celorlalte lucrări existente în memoria internă;
- existenţa unui mecanism pentru gestiunea resurselor fizice şi logice solicitate de către lucrările
în execuţie (echipamente periferice, informaţii, etc.).
Obiectivul urmărit în multiprogramare îl constituie maximizarea volumului de lucrări
care trec prin sistem şi minimizarea timpului petrecut de o lucrare în sistem.
Multiprogramarea se poate aprecia ca o dezvoltare a sistemului de operare, iar folosirea
partajată a CPU de către lucrări, ca o execuţie concurentă (în realitate, partajarea este realizată pe
intervale distincte).

15
2.3.1. Planificarea execuţiei lucrărilor
Sistemele de calcul ce utilizează tehnica multiprogramării sunt prevăzute cu o
componentă a sistemului de operare numită monitor de planificare a lucrărilor, care alege dintr-
un grup de programe în ordinea sosirilor, pe acelea potrivit cărora timpul neocupat al CPU să fie
minim; există o limită pentru numărul de lucrări ce pot fi executate simultan (dacă acest număr
este depăşit, este invocată o procedură pentru selecţia lucrărilor, iar cele neselectate rămân în
aşteptare) funcţie de memoria afectată utilizatorilor.
Procesul de planificare are două funcţii distincte:
- asigurarea priorităţii;
- alocarea resurselor care utilizează prioritatea.
Algoritmii de planificare presupun că lucrările sunt ordonate pe bază de prioritate, sub
forma firelor de aşteptare. Alegerea unui anumit algoritm se va face după obiectivele urmărite;
dintre algoritmii frecvent utilizaţi în multiprogramare se menţionează:
-STF Shortest proccessing Time First - lucrarea cu cel mai scurt timp de prelucrare este prima
executată, urmăreşte minimizarea timpului de trecere prin sistem a lucrărilor ce durează puţin;
-LTF Longest proccessing Time First - lucrarea cu cel mai lung timp de prelucrare este prima
executată, urmăreşte reducerea timpului total de execuţie a lucrărilor;
-SMF Smallest Memory requirment First - lucrarea ce necesită cel mai mic spaţiu de memorie
este prima executată;
-LMF Largest Memory requirment First - lucrarea ce necesită cel mai mare spaţiu de memorie
este prima executată;
-FIFO First Input First Output - lucrările sunt executate în ordinea lansării în execuţie;
-LIFO Last Input First Output - lucrările sunt executate în ordinea inversă lansării în execuţie;
-Round-Robin sau planificarea circulară, fiecare lucrare având alocată o cuantă de timp (interval
de 1-10 ms), după care controlul este comutat la următoarea lucrare.

2.3.2. Sincronizarea activităţii CPU cu activitatea procesorului de comunicaţie


Sincronizarea activităţii CPU cu activitatea procesorului de comunicaţie este redată în fig.
2.2. presupunând existenţa a trei programe încărcate în memoria internă (P1,P2,P3) la un moment
dat, ce sunt executate de CPU conform algoritmului Round-Robin.

16
Fig.2.2. Sincronizarea activităţilor dintre CPU şi procesorul de comunicaţie în multiprogramare

t1 - momentul iniţierii unei operaţii de intrare/ieşire de către CPU pentru P1;


t2 - momentul când P1 are nevoie de transferul datelor solicitate la t 1 care nu sunt disponibile
deoarece nu s-a terminat operaţia de intrare/ieşire, comutând astfel la execuţia programului
următor P2;
t3 - terminarea operaţiei de intrare/ieşire pentru P1 (CPU este ocupată cu P2);
t4 - iniţierea operaţiei de intrare/ieşire pentru P2; canalul fiind liber, trece la execuţia solicitată;
t5 - momentul când P2 necesită datele solicitate; operaţia de intrare/ieşire nu s-a încheiat, deci
CPU comută la P3;
t6 - iniţierea unei operaţii de intrare/ieşire de către P3; canalul este ocupat, trece operaţia în
aşteptare;
t7 - se termină operaţia de intrare/ieşire iniţiată de P2 şi poate fi lansată operaţia de intrare/ieşire
iniţiată de P3 (t8);
t9 - momentul când CPU devine liberă de la P3 şi având datele solicitate de P1 încă de la
momentul
t3, reia execuţia P1;
t10 - se încheie execuţia P1 şi CPU comută la P2;
t11 - se încheie execuţia P2 şi CPU aşteaptă deoarece nu s-a încheiat operaţia de intrare/ieşire
iniţiată de P3;
t12 - se încheie operaţia de intrare/ieşire şi se redă controlul CPU pentru P3;
t13 - sfârşit P3.

17
2.4. Sistemul spooling (Simultaneous Peripheral Operations On Line)

Activitatea de suprapunere a operaţiilor de intrare, prelucrare şi ieşire prin intermediul


tehnicii spooling, are ca principal obiectiv îmbunătăţirea randamentului sistemului de calcul şi
lărgirea gamei de facilităţi oferite utilizatorilor.
Tehnica dispune de următoarele caracteristici:
- disponibilitatea unei memorii externe de capacitate mare şi cu acces direct (discuri magnetice),
care asociată cu tehnica multiprogramării permite manipularea unor succesiuni continue de
operaţii de intrare, ieşire şi alte prelucrări, ameliorând astfel diferenţa dintre timpul de execuţie al
operaţiilor de intrare/ieşire şi timpul de execuţie al operaţiilor de către CPU;
- asigurarea unei încărcări la întreaga capacitate a dispozitivelor periferice de intrare/ieşire;
- esenţialul acestei tehnici constă în organizarea de zone tampon de memorie (buffere) în care se
creează dispozitive periferice de intrare/ieşire virtuale ce permit:
* introducerea de lucrări înainte ca acestea să fie executate;
* redarea rezultatelor la imprimante în timpul execuţiei altor lucrări;
* planificarea execuţiei lucrărilor în ordinea priorităţilor fără a ţine seama de disciplina de
introducere a acestora în sistem;
* schimbarea ordinii de execuţie a lucrărilor prin priorităţi asociate.
Organizarea unui sistem spooling este redată în fig. 2.3.

Fig. 2.3. Organizarea unui sistem spooling


P1, P2 se introduc de la tastatură;
P3, P4 aşteaptă încărcarea în memoria internă;
P5, P6, P7, P8 sunt active în memoria internă;
P9, P10 sunt executate şi aşteaptă tipărirea;
P11, P12 se tipăresc.

18
2.5. Sisteme TIME – SHARING (Sisteme cu timp divizat)

Tehnica de gestiune a lucrărilor time-sharing este caracterizată de utilizarea concurentă a


resurselor unui sistem de calcul de către "n" utilizatori prin intermediul staţiilor de lucru (work
stations) plasate local sau la distanţă; elementele globale ce definesc aceste sisteme sunt tehnica
divizării timpului şi multiplexarea resurselor între mai mulţi utilizatori independenţi; termenul de
multiplexare semnifică partajarea resurselor sistemului astfel încât se creează mai multe procese,
fiecare utilizator având senzaţia că sistemul îi aparţine integral (practic, se comută sau se
multiplexează în timp, de la un utilizator la altul).
În time-sharing CPU este partajată pe bază de cerere, planificarea execuţiei urmărind
obţinerea unui timp de răspuns minim; lucrările nu au priorităţi prestabilite, astfel că acestea
trebuie să fie executate într-o manieră dinamică.
Multiplexarea resurselor între procese necesită existenţa unei componente a programelor
de comandă-control capabilă să trateze o largă gamă de întreruperi.
Utilizatorii sunt aleatori, se schimbă în orice moment, lucrează programe diferite, se
conectează/deconectează la/din sistem independent unii de alţii utilizând perioade de timp
diferite pentru execuţia lucrărilor.
Trăsăturile esenţiale ale acestei tehnici constă în:
- protecţia memoriei, prin care programele utilizatorilor trebuie să fie protejate între ele pentru a
nu permite accesul neautorizat, fiecare program fiind limitat la spaţiul său de memorie;
- independenţa utilizatorilor, prin care se stabileşte o cuantă de timp pentru fiecare utilizator;
dacă programul nu s-a terminat în acest interval de timp, este returnat în memoria externă şi
plasat la sfârşitul firului de aşteptare, încărcându-se alt program în memoria internă, ş.a.m.d.
- alocarea resurselor pentru programele utilizatorilor este efectuată de monitorul rezident în
memoria internă (monitor de time-sharing): spaţiu de memorie internă, timp CPU, tratarea
cererilor de întrerupere de la terminale, etc.;
- alocarea memoriei interne se realizează printr-o tehnică de alocare şi control a mişcării
paginilor între memoria internă şi cea externă.
Caracteristici hardware solicitate implică:
- memorie internă de capacitate mare şi CPU rapidă pentru asigurarea unui timp minim de
răspuns (volum mic de migrări între memoria internă şi cea externă, respectiv comutarea rapidă
între programe);
- ceas de timp real care să genereze întreruperi pentru comutarea CPU de la un program la altul;
- memorie externă cu acces direct în care o soluţie ar fi cuplarea în paralel a memoriei externe la
CPU şi terminale, ceea ce implică transferul între memoria externă şi terminale independent de
activitatea CPU;
- sistem de comunicaţie transferul informaţiilor între CPU şi terminale, linii de comunicaţii,
modemuri, concentratoare şi multiplexoare;
- terminale şi CPU adecvate.
Caracteristici software
Caracteristici software sunt realizate în principal de monitorul de time-sharing care
gestionează resursele întregului sistem:
- alocarea şi comutarea CPU după timpul alocat pe baza unui algoritm de planificare a execuţiei
stabilit astfel încât să se asigure:
- reducerea timpului de răspuns;

19
- minimizarea timpului necesar comutării între procese;
- posibilitatea lansării în execuţie a oricărui proces care aşteaptă, lansare ce se execută în funcţie
de priorităţi;
- încărcarea echilibrată a sistemului;
- stabilirea locului fiecărui program în firul de aşteptare, în funcţie de prioritate;
- alocarea spaţiului de memorie internă: zona de memorie şi adresa unde se încarcă fiecare
program;
- tratarea întreruperilor prin analiza motivului întreruperii care va determină acţiunea ce se
întreprinde în continuare;
- gestiunea fişierelor prin care se determină locul unde sunt memorate colecţiile de date,
regăsirea lor rapidă, parola de protecţie ş.a..
Modul de lucru al unui sistem time-sharing este redat în fig. 2.4.

Fig. 2.4. Modul de lucru al unui sistem time-sharing

2.6. Multiprelucrarea

Dacă mai multe programe se găsesc în acelaşi timp în memoria internă şi partajează
resursele sistemului de calcul atunci sistemul utilizează tehnica multiprogramării; dacă în
multiprogramare se folosesc mai multe procesoare, atunci sistemul utilizează tehnica de gestiune
denumită în multiprelucrare. Se poate aprecia că multiprogramarea este un concept software, iar
multiprelucrarea un concept hardware.
Un sistem de calcul utilizează tehnica multiprelucrării dacă cel puţin două CPU
lucrează în paralel; unităţile centrale de prelucrare pot executa instrucţiunile unui singur program
sau pot executa instrucţiuni din programe diferite.
Oportunitatea multiprelucrării constă în :

20
- încărcarea partajată a programelor pentru execuţie, fiecare procesor având acces la firul de
aşteptare alcătuit din lucrările solicitate a se executa;
- separarea diverselor funcţii ale sistemului, existând câte un program responsabil pentru fiecare
funcţie;
- creşterea fiabilităţii sistemului, pentru care există două posibilităţi:
- duplexarea sistemelor, prin care una sau mai multe componente hardware sunt dublate, una
fiind în activitate iar cealaltă va fi activată la apariţia unui defect al primei componente; pe durata
funcţionării corecte a procesorului principal, procesorul secundar poate fi folosit pentru alte
operaţii;
- sisteme duale, sunt sistemele în care două procesoare centrale prelucrează simultan acelaşi
program de aplicaţie, periodic verificându-se reciproc privind validarea rezultatelor.

2.6.1. Sisteme master/slave


Unul din obiectivele multiprelucrării este de a degreva o CPU, de sarcini specifice ca:
tabelări de date, editări de texte, gesţiunea colecţiilor de date (fişiere, baze de date); pentru a
realiza acest deziderat, la o CPU - denumită slave, este cuplată o CPU care este destinată
coordonării activităţilor din sistem - denumită master (fig.2.5.).
Master-ul poate să coordoneze toate operaţiile de intrare/ieşire în timp ce slave-ul execută
operaţii complexe; în acest caz masterul este referit ca "front-end processor" având rol de
interfaţă între slave şi dispozitivele periferice de intrare/ieşire.

Fig. 2.5. Front-end processor

Dar masterul se poate utiliza şi ca interfaţă între slave şi colecţii voluminoase de date
existente în memoria externă, situaţie în care este referit ca "back-end processor" fiind
responsabil de gestiunea colecţiei de date (fig.2.6.)

21
Fig.2.6. Back-end processor

Prin urmare, în multiprelucrarea sistemelor organizate în varianta master/slave, fiecare


CPU fi dedicată unor sarcini specifice sau poate fi utilizată în mod alternativ pentru execuţia unei
aceleiaşi sarcini, în vederea furnizării unor răspunsuri mai rapide.

2.6.2. Planificarea execuţiei lucrărilor


În funcţie de gradul de planificare al lucrărilor şi al sistemului de comunicaţie, se disting
următoarele clase de sisteme (fig.2.7.):
1) sisteme cu CPU identice care sunt determinate de modul în care CPU partajează memoria:
* memorie unică pentru CPU cuplate în care mai multe CPU partajează o memorie;
* memorie proprie pentru fiecare CPU din sistem.
De remarcat este faptul că se pot include şi variante master/slave.

Fig.2.7.b) memorie proprie şi CPU identice

Fig.2.7.c) memorie unică şi CPU master/slave

22
Fig.2.7.d) memorie unică şi CPU master/slave

Legăturile dintre memoria internă şi CPU se pot realiza în următoarele variante:


- legătură matriceală (cross bar) prin intermediul unui sistem de comunicaţie, cererile neservite
fiind plasate într-un fir de aşteptare gestionat prin hardware sau software;
- legătură prin canale multiple când procesoarele partajează o cale unica pentru fiecare modul de
memorie;
- legătură printr-un singur canal folosit partajat acesta constituind interfaţa dintre toate CPU şi
memoria internă.
2) sisteme cu CPU diferite care presupun existenţa unui număr de CPU periferice care lucrează
în paralel cu CPU principală; pot fi organizate sub formă de:
- arie de procesoare (processor array) care implică divizarea unui program în activităţi
independente ce se pot executa simultan pe CPU existente în configuraţie;
- conductă (pipe) ceea ce permite operarea directă asupra unui şir de vectori (pipeline)
elementele şirului fiind reprezentate de CPU;
- puternic conectate, caracterizate de o creştere a volumului de lucrări executate datorită
controlului direct exercitat de CPU din configuraţie asupra resurselor;
- slab conectate, care pot partaja: sistemul de comunicaţie, volumele de memorie cu acces direct,
programele de servici prin care componenta software dintr-un sistem comunică cu componenta
software din alt sistem, pentru cereri de partajare a resurselor; nu există un control asupra
resurselor unui procesor exercitat de alt procesor.
Planificarea execuţiei lucrărilor în multiprelucrare depinde de modul de conectare al
sistemelor, existând următoarele variante:
1) planificarea în cazul sistemelor diferite se poate realiza:
- manual, fără nici o planificare, doar cu comutarea de la un procesor la altul;
- prin urmărirea încărcării echilibrate a sistemelor, dacă acestea sunt slab conectate şi dispun de
CPU proprie;
2) planificarea în cadrul sistemelor master/slave în care toate resursele sunt disponibile tuturor
CPU; în acest caz, memoria internă şi dispozitivele periferice de intrare/ieşire sunt alocate la
procese nu la CPU, iar CPU sunt asigurate să execute procesele de către modulul de planificare a
execuţiei proceselor (sisteme puternic conectate).
În cazul tehnicii de planificare master/slave, o CPU master reţine starea tuturor
proceselor din sistem şi planifică activitatea tuturor CPU slave.
3) planificarea în cazul sistemelor omogene. În această situaţie, CPU sunt tratate ca CPU slave,
având loc o planificare descentralizată; se crează o listă în memoria internă ce conţine numele
proceselor şi starea lor, fiind permis oricărei CPU să acceseze această listă.
În momentul întreruperii execuţiei unui proces, CPU căreia i-a fost atribuit merge la lista
proceselor şi găseşte procesul pe care îl va lansa în execuţie (va folosi acelaşi algoritm de
planificare pentru alegerea următorului proces de executat din lista proceselor gata pentru
execuţie).

23
EXERCIŢII

1. Enumeraţi obiectivele urmărite în planificarea lucrărilor de către sistemele de operare.


2. Care sunt avantajele multiprogramării comparativ cu monoprogramarea ?
3. Se consideră un sistem de calcul cu trei grade de multiprogramare. Pentru programele
respective se cunosc următoarele:
- duratele de execuţie estimate pentru programele P1, P2, P3 sunt:
t1ex=7c
t2ex=6c
t3ex=9c
- momentele iniţierii operaţiilor de intrare/ieşire:
t1i=4c
t2i=3c
t3i=5c
- duratele operaţiilor de intrare/ieşire:
t1i/o=6c
t2i/o=5c
t3i/o=10c
Între momentul iniţierii operaţiilor de intrare/ieşire şi momentul când programele
respective solicită datele citite o cuantă de timp (1c).
Se cere: să se calculeze randamentele de utilizare a CPU şi canalului pentru următoarele
discipline:
a. Round-Robin;
b. planificare cu priorităţi astfel:
prioritatea lui P3 > prioritatea lui P1 > prioritatea lui P2;
c. algoritmul SJNE (Short Job Next Executed).
4. În ce constă sistemul Spooling şi ce avantaje oferă ?
5. Care sunt asemănările şi deosebirile dintre multiprogramare şi sistemele time-sharing ?
6. Specificaţi obiectivele urmărite de către fiecare variantă de organizare master/slave în
multiprelucrare.

24

S-ar putea să vă placă și