Sunteți pe pagina 1din 13

GESTIUNEA RESURSELOR UNUI SISTEM DE CALCUL -

FUNCŢIE A SISTEMULUI DE OPERARE

Componenta hardware a sistemelor de calcul necesită existenţa unui sistem de operare


care să poată gestiona resursele hardware, concomitent cu asistarea utilizatorului pe timpul
pregătirii şi lansării în execuţie a lucrărilor sale. Programele de comandă-control ale sistemului
de operare sunt constituite din programe care coordonează şi controlează resursele hardware
(memoria, CPU, canalele, dispozitivele periferice) şi informaţiile (programe, date), îndeplinind
astfel rolul sistemului de operare de a asigura utilizarea eficientă a resurselor şi de a rezolva
conflictele apărute în competiţia dintre utilizatori.
Pentru gestionarea resurselor programele de comandă-control ale sistemului de operare
trebuie să realizeze următoarele activităţi:
- evidenţierea fiecărei resurse;
- adoptarea unei strategii pentru determinarea în orice moment cărui proces să-i aloce
resursa, cât din resursă, la ce moment de timp şi cuanta de timp alocată;
- să aloce resursele, iar la terminarea activităţii să le dezaloce.
În acest scop, programele de comandă-control ale sistemului de operare au fost grupate
în 4 categorii, corespunzător funcţiilor îndeplinite:
1) funcţia de gestiune a memoriei care constă în:
- evidenţa acestei resurse: câtă memorie este alocată şi pentru care programe;
- ce proces primeşte memorie, la ce moment şi în ce cantitate - în cazul
multiprogramării;
- alocă părţi din memorie şi asigură metode de acces şi protecţie pentru procesele
solicitante;
- dezalocă zonele de memorie alocate.
2) funcţia de gestiune a procesorului (CPU) se referă la:
- evidenţa procesoarelor şi stărilor acestora ("traffic controller");
- decide cine poate să utilizeze procesorul ("proccesor scheduler"), la ce moment de timp
şi pentru cât timp;
- alocă procesorul la un proces prin pregătirea şi încărcarea unor registre hardware;
- retrage alocarea când procesul renunţă la utilizarea procesorului, s-a terminat sau a
depăşit cuanta de timp alocată.
3) gestiunea dispozitivelor periferice realizează următoarele activităţi:
- evidenţa dispozitivelor, a unităţilor de control şi a canalelor ("I/O Traffic Controller");
- decide metoda cea mai eficientă de alocare a dispozitivelor periferice; dacă are loc o
utilizare simultană, decide cine foloseşte resursa şi cât timp ("schedulering I/O");
- alocarea dispozitivelor periferice şi iniţiază operaţia de intrare/ieşire;
- dezalocarea dispozitivelor periferice la terminarea execuţiei operaţiilor de intrare/ieşire.
4) gestiunea informaţiei care se materializează în:
- evidenţierea resursei (informaţia), localizarea ei, utilizarea, starea, etc. (File System);
- decide cine utilizează informaţia, impune protecţia cerută şi oferă rutine de acces
necesare;
- alocă resursele prin deschiderea fişierului (OPEN);
- dezalocă resursele prin închiderea fişierului (CLOSE).
Sisteme operaţionale

3.1. Gestiunea proceselor şi procesoarelor

Utilizarea partajată a resurselor unui sistem de calcul este determinată de insuficienţa la un


moment dat a resurselor necesare execuţiei simultane a proceselor create de utilizatori. Gestiunea
procesoarelor are ca scop asigurarea procesoarelor la procesele create. Fiecărui program de
aplicaţie, sistemul de operare îi asociază o serie de procese.
Procesul reprezintă un program în execuţie (program de serviciu, de aplicaţie sau rutină a
sistemului de operare).
Procesorul reprezintă componenta capabilă să execute un program (CPU sau canal).
Programul este o secvenţă de instrucţiuni, iar procesul o serie de activităţi (taskuri)
executate prin program.
Activitatea (task) este o unitate de lucru internă creată de sistemul de operare, atunci când
o etapă din lucrare este acceptată de sistemul de calcul.
Lucrarea reprezintă o colecţie de activităţi (taskuri) ce se execută de către sistemul de
calcul.

3.1.1. Procese concurente şi coordonarea proceselor


Procesele concurente numite şi procese paralele, presupun că la un moment dat, mai multe
programe pot fi urmărite între punctul de începere şi terminare a execuţiei; în acest caz procesele
interacţionează în două moduri:
- indirect, prin concurarea la aceiaşi resursă a sistemului;
- direct, prin utilizarea simultană a aceloraşi resurse.
Tranziţia stărilor unui proces este redată în fig.3.1.

Lansare Activare
Inactiv Pregătit
Dezactivare Activ
nelansat întrerupt

Blocat în
aşteptare

Fig.3.1. Tranziţia stărilor unui proces

Oportunitatea programării concurente constă în necesitatea reducerii timpului de răspuns la


solicitările la care este supus sistemul de calcul concomitent cu utilizarea eficientă a resurselor
precum şi în necesitatea utilizării partajate a informaţiei şi comunicaţiei între programele în curs de
execuţie, ceea ce implică şi o sincronizare specifică la nivelul software-ului de bază.
Coordonarea proceselor concurente implică următoarele aspecte:
1) determinarea proceselor potrivit cărora sistemul de activităţi trebuie să fie independent de
vitezele relative de execuţie ale activităţilor componente, conducând la un rezultat unic; dacă acest
rezultat depinde de ordinea şi viteza de execuţie a activităţilor, sistemul este nedeterminat şi în acest
caz se vor introduce restricţii de prioritate (grad de precedenţă);
2) interblocarea proceselor apare atunci când două sau mai multe procese aşteaptă un timp nedefinit
într-un fir de aşteptare circular, ca alt proces să renunţe la pretenţiile de utilizare a unei resurse;
interblocarea poate fi înlăturată prin mecanisme cum sunt:
- prealocarea resurselor partajate;
- alocarea controlului în avans de execuţie;
Capitolul 3 – Gestiunea resurselor unui sistem de calcul – funcţie a sistemului de operare
- organizarea secvenţială a cererilor şi ierarhizarea resurselor pe nivele astfel încât atunci
când un proces a dobândit resursele de la un anumit nivel, poate solicita resurse numai de la un nivel
superior;
- excluderea mutuală a proceselor prin care anumite activităţi vor fi programate astfel încât
să nu poată fi în execuţie în acelaşi timp (de exemplu, READ şi WRITE).

3.1.2. Sincronizarea proceselor


Sincronizarea proceselor include mecanisme prin care anumite procese vor fi oprite la un
moment dat, până ce apar anumite evenimente ce se află sub controlul altei activităţi. Problema
sincronizării apare datorită partajării resurselor în legătură cu alocarea proceselor pentru execuţie
şi comunicaţia între procese care generează două aspecte:
- apariţia condiţiei de competiţie între procese care se iveşte atunci când planificarea unor
procese pentru execuţie devine critică deoarece parametrii pentru planificarea execuţiei provin din
calcule diferite;
- tendinţa de a obţine resursa de către procese ar putea genera interblocarea acestora.
Mecanismele de sincronizare pentru coordonarea şi comunicarea între procese includ
următoarele posibilităţi:
1) biţi de atenţie
Prin această modalitate, orice resursă partajată de "n" procese va dispune de un bit de atenţie
"lock-bit" folosindu-se convenţia:
lock-bit = 0 - resursa este disponibilă;
lock-bit = 1 - resursa este în folosinţă.
Înainte ca un proces să aibă acces la un procesor, acesta va verifica starea lock-bit-ului: dacă
lock-bit = 0 atunci este permis acestui proces să aibă acces la procesor, iar la terminarea execuţiei
va trece lock-bit-ul în starea iniţială 0; dacă pe parcursul execuţiei un alt proces va solicita
procesorul, acesta va găsi lock-bit-ul în starea 1, el fiind trecut în starea de aşteptare până când
lock-bit-ul devine 0.
2) mecanisme de aşteptare şi semnalizare
Inconvenientul sincronizării proceselor prin lock-bit constă în continuarea secvenţei de testare a
lock-bit-ului pentru comutarea din starea 1 în starea 0; în acest sens, o variantă de utilizare mai
eficientă a procesorului în sensul reducerii timpului de aşteptare şi de ciclare o constituie plasarea
procesului într-o listă de procese blocate alături de alte procese. Atunci când procesorul alocat unui
proces încheie execuţia, acesta va introduce un semnal de legătură (pointer) prin care unul din
procesele blocate din lista celor care aşteaptă, este sesizat că resursa pentru care a fost blocat a
devenit liberă; în acest moment, procesul care câştigă competiţia este trecut din lista de procese
blocate, în lista proceselor gata de execuţie, urmând să fie din nou planificat pentru reluarea execuţiei
din punctul în care a fost întrerupt.
3) calculul semafoarelor prin operaţiile P şi V
P şi V sunt primitive care operează pe semafoarele S constituite din variabile ce iau valori întregi
(nu numai 0 şi 1). Mecanismul se desfăşoară astfel:
P(S): decrementează valoarea lui S cu 1 şi dacă S <= 0 atunci aşteaptă;
V(S): incrementează valoarea lui S cu 1 şi dacă S <= 0 atunci semnal.
4) comunicarea directă de tip SEND/RECEIVE
Mecanismele de sincronizare anterioare realizează comunicaţii indirecte. Sincronizarea se
poate realiza şi într-o manieră directă, prin intermediul primitivelor SEND (Proces1, mesaj) şi
RECEIVE(Proces2, mesaj).
5) cutii poştale
Cutiile poştale sunt constituite din zone tampon din memoria dinamică, tratată ca dispozitiv
periferic de intrare/ieşire. Fiecare activitate creează o cutie poştală cu informaţii ce pot fi extrase de
celelalte activităţi înainte de lansarea în execuţie.
Sisteme operaţionale

3.1.3. Gestiunea procesoarelor


Gestiunea procesoarelor presupune asigurarea procesoarelor la procesele create; această
activitate se desfăşoară la două nivele:
1) planificarea lucrărilor, la care se decide care lucrări vor fi executate şi care va fi prima
lansată în execuţie;
2) alocarea procesorului la procese.
În acest scop există module specializate ale programelor de comandă-control ale sistemului de
operare, ce realizează o serie de activităţi:
Modulul pentru planificarea lucrărilor îndeplineşte următoarele activităţi:
- evidenţierea stării tuturor lucrărilor sesizând care dintre lucrări solicită servicii;
- alegerea disciplinei prin care vor intra lucrările în sistem: priorităţi, resurse solicitate,
încărcarea echilibrată, etc.;
- alocarea resurselor necesare lucrării planificate: memorie internă, externă, dispozitive
periferice, CPU;
- dezalocarea resurselor la terminarea execuţiei lucrării.
Modulul de planificare a lucrărilor creează unul sau mai multe procese pentru lucrarea
considerată în momentul trecerii din starea de pregătire în starea de execuţie, stabilind totodată şi
modul de comunicaţie între procese; cu alte cuvinte, alocă resursele fizice disponibile la procese, în
scopul utilizării eficiente a sistemului de calcul, prin simularea unei maşini virtuale pentru fiecare
proces şi un sistem de facilităţi ce permit proceselor concurente să realizeze o excludere mutuală din
regiunile critice şi să comunice cu alte procese.
Modulul pentru planificarea procesoarelor decide care dintre procese va dispune de
procesor, în ce moment şi care este cuanta de timp alocată:
- evidenţiază starea tuturor proceselor (componenta traffic controller);
- decide procesul care va dispune de procesor şi pentru cât timp (processor scheduller);
- alocă procesorul la procese, ceea ce implică actualizarea conţinutului registrelor
procesorului care să reflecte starea curentă;
- dezalocarea procesorului atunci când cuanta de timp acordată a expirat sau procesul trebuie
să aştepte datorită unei întreruperi cum ar fi solicitarea unei operaţii de intrare/ieşire. În acest caz e
necesară salvarea conţinutului registrelor procesorului, în vederea păstrării stării la care a fost
întrerupt, pentru reîncărcarea la reluarea execuţiei din punctul în care a fost întrerupt.
Se poate astfel aprecia că modul de planificare a procesoarelor alocă maşini virtuale la procesele
create, în conformitate cu strategia adoptată.
Pentru planificarea lucrărilor la nivelul procesorului se întâlnesc două tipuri de sisteme:
1) sisteme nepreemptive în care fiecare activitate se execută până la execuţia completă; în
acest caz, procesorul va executa cererea cea mai prioritară din sistem până la terminarea execuţiei,
chiar dacă pe durata execuţiei apar cereri mai prioritare în sistem;
2) sisteme preemptive sunt sistemele în care cererile se pot afla în diverse etape ale execuţiei;
la un moment dat sistemul execută o singură activitate, dar dacă apare o cerere cu prioritate mai
mare, execuţia curentă este întreruptă şi trecută în aşteptare.

3.2. Gestiunea memoriei

Sistemele de calcul includ diverse dispozitive de memorare organizate în final pe două


nivele: memoria internă şi memoria externă. Gestiunea memoriei are rolul de a decide cum trebuie
organizată informaţia pe cele două nivele şi când trebuie transferată informaţia între acestea;
tehnicile de gestiune a lucrărilor (multiprogramare, multitasking, time-sharing,etc) implică existenţa
unor metode eficiente pentru gestiunea memoriei: tehnici de alocare dinamică şi memoria virtuală.
Obiectivul activităţii de gestiune a memoriei este de a furniza o viteză de execuţie sporită
Capitolul 3 – Gestiunea resurselor unui sistem de calcul – funcţie a sistemului de operare
a programelor, prin menţinerea în memoria internă a acelor părţi din programe care sunt referite cu
o frecvenţă mare de către CPU (de regulă, programe independente între ele); deoarece în memoria
internă există simultan mai multe programe independente între ele, pentru a utiliza eficient CPU apar
următoarele aspecte:
- introducerea în memoria internă a programului ce urmează a fi executat necesită un spaţiu
de memorie determinat de dimensiunea sa, de spaţiul liber din memoria internă în acel moment şi
de modul de ocupare al memoriei interne de către alte programe;
- pentru zonele de memorie alocate diferitelor programe, trebuie să se asigure protecţia
acestora faţă de anumite interferenţe şi adresări cu alte programe.
Alocarea spaţiului din memoria internă se realizează în funcţie de disponibilitatea memoriei
în acel moment, fapt care nu permite cunoaşterea adreselor reale ocupate de program la momentul
execuţiei (numite şi adrese fizice) în etapele scrierii şi translatării programelor a căror adrese de
memorie, sunt simbolice (numite adrese logice). Translatarea adreselor logice în adrese fizice se
realizează printr-o funcţie de translatare care precede execuţia instrucţiunii respective.
Activitatea de gestiune a memoriei are la bază trei algoritmi (fig.3.2.):
1) algoritmul de transfer care determină când un bloc trebuie transferat din memoria externă
în memoria internă - înaintea execuţiei sau în timpul execuţiei;
2) algoritmul de plasare care determină ce zonă nealocată din memoria internă este folosită
pentru plasarea blocului încărcat din memoria externă;
3) algoritmul de reamplasare care determină care blocuri şi la ce moment trebuie reîncărcate
în memoria internă.
Adrese
Procesor Memorie
internă

Canale de transfer

Comenzi de Memorie
deplasare externă

Fig.3.2. Activitatea de gestiune a memoriei

3.2.1. Alocarea dinamică a memoriei


Alocarea memoriei interne se poate realiza:
- static când programul este încărcat iniţial în orice zonă liberă din memoria internă. În
momentul solicitării unei întreruperi, acesta este transferat în memoria externă urmând a fi reluat
după tratarea întreruperii. Reîncărcarea sa în memoria internă se va face obligatoriu în acelaşi spaţiu
de adrese fizice în care a fost încărcat iniţial, ceea ce reprezintă un mare neajuns în cazul
multiprogramării şi multitasking-ului;
- dinamic când adresele relative ale instrucţiunilor programului după editarea de legături, nu
sunt translatate în adrese fizice în faza de încărcare a programului în memoria internă, ci doar în
momentul execuţiei instrucţiunilor. Adresele relative se păstrează pentru o deplasare a programului
dintr-o zonă în alta a memoriei interne şi o reîncărcare a programului din memoria externă, într-o
altă zonă din memoria internă.

3.2.2. Memoria virtuală


Conceptul unui singur nivel de memorie- denumită memorie virtuală- oferă utilizatorului
iluzia că memoria internă are o capacitate foarte mare, partea de hardware realizând automat
transferul informaţiei din memoria internă în memoria externă şi invers.
Unitatea de transfer între memoria internă şi cea externă este pagina, aceasta reprezentând o entitate
Sisteme operaţionale
a memoriei de dimensiune fixă de 512, 1024, 2048 sau 4096 kbytes; procesul de deplasare al
paginilor între memoria internă şi memoria externă este referit ca transfer de pagini.
O adresă folosită de programator se numeşte adresă virtuală, iar adresa reală unde este
memorată se numeşte adresă fizică (dimensiunea spaţiului de adrese virtuale este mult mai mare
decât dimensiunea spaţiului de adrese reale).
Funcţia de translatare a unei adrese virtuale ai în adresă reală bj se poate defini astfel:
ft = 0 dacă informaţia de la adresa virtuală solicitată (ai) nu este în acel moment rezidentă în
memoria internă;
ft = bj dacă adresa virtuală ai găseşte rezidentă adresa reală bj în memoria internă.
Dacă ft(ai) = 0 se emite un semnal de nerezidenţă şi se generează o întrerupere care are ca efect
plasarea din memoria externă în memoria internă, a informaţiei referite de procesor prin adresa
virtuală ai. La terminarea întreruperii (care lansează în execuţie algoritmii de transfer, plasare şi
reamplasare) ft(ai) va fi nenulă, având loc o nouă iniţiere a activităţii întrerupte. Dispozitivul de
translatare este redat în fig.3.3.

Procesor
ai Tabelă
bj Memorie
funcţie de internă
translatare
Canale de transfer

Comenzi de Memorie
deplasare externă

Fig.3.3. Mecanismul de translatare a adreselor virtuale în adrese fizice

Din punct de vedere al modului de organizare, există implementate următoarele variante


pentru memoria virtuală:

1) organizarea la nivel de adresă (fig.3.4.)

RV
ai Tabelă
Procesor ai funcţie de
translatare RM
bj bj Memorie
bj
internă

Acces
Rezident
Depăşire
Memorie
externă

Fig. 3.4. Organizarea la nivel de adresă a memoriei virtuale

Dacă procesorul referă adresa virtuală ai, aceasta se introduce în registrul de adrese virtuale
RV, registrul REZIDENT este resetat (pus pe 0), iar registrul de ACCES setat (pus pe 1),
iniţializându-se procesul de translatare:
- dacă se găseşte cu ai o intrare în tabela ft, atunci conţinutul găsit se introduce în registrul
de adrese fizice al memoriei interne RM, având loc extragerea din memoria internă a informaţiei
Capitolul 3 – Gestiunea resurselor unui sistem de calcul – funcţie a sistemului de operare
solicitată de procesor de la adresa reală bj;
- dacă nu se găseşte o intrare în ft, atunci RM = 0, registrul REZIDENT este setat şi are loc
iniţierea celor 3 algoritmi care vor aduce din memoria externă în memoria internă informaţia referită
de procesor, actualizând totodată şi tabela de descriere a funcţiei de translatare ft.
Acest mod de organizare are dezavantajul că spaţiul de memorie ocupat de tabela ft este prea
mare, aceasta conţinând adresele de bază ale blocurilor d; ft determină adresa bj astfel:
bj= f(d)+c
unde c este adresa relativă de la adresa de bază (d) a blocului.

2) organizarea la nivel de pagină

Organizarea la nivel de pagină conduce la reducerea necesarului de informaţie conţinut în


tabela ft deoarece spaţiul de adrese este divizat în blocuri de dimensiune constantă numite pagini.
Dimensiunea paginii virtuale coincide cu dimensiunea paginii reale ceea ce implică netranslatarea
adresei cuvântului de pagină. Dispozitivul de translatare construieşte o tabelă a paginilor organizată
în memoria internă (MTP) cu informaţii necesare procesului de translatare din adrese virtuale în
adrese fizice (fig. 3.5.).

RV RM

Procesor
ai C MTP C bj Memorie
P Q internă

Memorie
Acces externă
Rezident
Depăşire

Fig.3.5. Organizarea la nivel de pagină a memoriei virtuale

Pentru orice adresă virtuală ai se asociază perechea (P,C) unde P reprezintă numărul
cuvintelor din pagină, iar C numărul unui cuvânt referit din P. Prin P se intră în tabela de pagini, la
unul din cuvintele de la 0 la 2p, de unde se extrage componenta Q de o anumită dimensiune; dacă:
- RM (Q) are conţinut nenul, atunci adresa solicitată de procesor are drept corespondent o
pagină de memorie rezidentă în memoria internă;
- RM (Q) = 0 atunci adresa virtuală solicitată nu are adresă de pagină reală în memoria
internă, ceea ce conduce la declanşarea celor 3 algoritmi ca urmare a setării registrului de
REZIDENT. Algoritmii vor determina transferul paginii corespunzătoare din memoria externă în
memoria internă, actualizând totodată şi MTP, după care procesorul referă din nou adresa.
Organizarea la nivel de pagină oferă avantajul că un program se poate executa fără a avea toate
paginile încărcate în memoria internă, ele putând fi încărcate pe măsură ce devin necesare în
prelucrare, deci o utilizare mai eficientă a memoriei şi totodată, o protecţie mai sigură a informaţiei.

3) organizarea la nivel de segment

Organizarea la nivel de segment împarte spaţiul de memorie în blocuri de dimensiune


variabilă, numite segmente (pot fi module de program sau anumite structuri de date)- fig. 3.6.
Sisteme operaţionale

RV RM
Comparator
Procesor
ai C
MTS C bj Memorie
S R internă

D
R D
R

buffer Memorie
externă
Acces
Rezident
Depăşire

Fig.3.6. Organizarea la nivel de segment a memoriei virtuale


Adresa virtuală referită de procesor constă din numele segmentului S şi numele cuvântului
din segment C; adresa de memorie unde începe segmentul S reprezintă adresa de bază R, iar prin D
se specifică dimensiunea segmentului.
Adresa reală determinată prin R+C se obţine dacă registrul de buffer conţine adresa extrasă
din memoria tabelei de segmente, efectuându-se şi comparaţia dintre C şi D; dacă R = 0, atunci se
vor declanşa cei trei algoritmi.
4) organizarea la nivel de segment-pagină
Organizarea la nivel de segment-pagină divide adresele virtuale şi adresele fizice în
segmente, iar segmentele în pagini, în vederea fructificării avantajelor celor două metode de
organizare:
- paginarea, care oferă implementarea simplă şi cel mai sigur mijloc de protecţie a
informaţiei;
- segmentarea, care satisface într-o mai mare măsură cerinţele programatorului prin
divizarea în segmente, deci ţinând seama de logica programului (fig.3.7.).

RV RM
CC
ai CC
Procesor CP bj Memorie
MTS CP MTP Q internă
S
R
R D RA
D
Q Memorie
R
externă
buffer

Depăşire Acces
segment pagină

Rezident Acces
segment

Fig. 3.7. Organizarea la nivel de segment-pagină a memoriei virtuale


Capitolul 3 – Gestiunea resurselor unui sistem de calcul – funcţie a sistemului de operare
În cadrul acestui mod de organizare, există o singură tabelă de segmente şi un număr de
tabele de pagini egal cu numărul de segmente.
Atunci când procesorul referă o adresă virtuală, acesteia i se asociază:
- adresa virtuală a segmentului S;
- adresa virtuală a paginii în segment CP;
- adresa virtuală a cuvântului din cadrul paginii CC; iar registrul de acces segment este setat.
Prin S din RV se caută în MTS; dacă se găseşte o adresă, aceasta este reprezentată prin:
- R - adresa tabelei de pagini;
- D - dimensiunea segmentului exprimată în pagini şi introdusă apoi în registrul de buffer.
Prin intermediul lui R din registrul de buffer se selectează o tabelă de pagini din MTP;
componenta CP din registrul de adrese şi R din registrul de buffer, permit extragerea din tabela de
pagini a cuvântului indicat prin CP din RV; cuvântul selectat are Q biţi şi reprezintă una din paginile
reale din memoria internă, fiind introdus în RM unde vine şi componenta CC care indică adresa reală
a cuvântului în pagină.
Dacă nu se găseşte prin S din RV nici o intrare în MTS, atunci segmentul virtual adresat nu
are corespondent în memoria internă, deci registrul de REZIDENT este setat şi se declanşează
algoritmii de transfer din memoria externă în memoria internă a segmentului solicitat actualizându-se
şi memoria tabelei de segmente.
Dacă CP din RV este mai mare decât D din registrul de buffer, registrul de depăşire
semnalizează o eroare de adresare poziţionându-se pe 1.
Accesul în MTP se realizează prin poziţionarea registrului de acces la pagină pe 1, iar
componentele Q şi CC sunt introduse în RM.
În cazul proceselor concurente, gestiunea memoriei între mai multe procese poate fi analizată
prin
- limitarea frecvenţei transferului de date şi programe;
- conservarea execuţiei programelor din memoria internă, în timp ce alte programe sunt în
aşteptare în memoria externă;
- transferul datelor şi programelor din memoria internă atunci când procesele le solicită.

3.3. Gestiunea dispozitivelor periferice

O mare pondere din arhitectura sistemelor de calcul este deţinută de echipamentele de


intrare/ieşire (denumite dispozitive periferice), fapt care implică o atenţie deosebită acordată
utilizării lor eficace. Deşi evoluţia continuă în domeniul facilităţilor (mai ales a vitezelor de execuţie)
a condus la multe îmbunătăţiri, continuă să existe diferenţe mari între viteza dispozitivelor periferice
şi vitezele la care operează CPU şi memoria internă, ceea ce motivează introducerea canalelor de
intrare/ieşire şi a procesoarelor specializate în operarea cu unităţile de control ale dispozitivelor
periferice.

3.3.1. Unităţi de control şi canale de transfer


Unităţile de control ale dispozitivelor periferice sunt prevăzute cu circuite electronice
destinate controlului automat al citirii/scrierii efective pe mediile fizice, îndeplinind următoarele
funcţii:
- recunoaşterea adreselor dispozitivelor periferice pe care le controlează;
- conversia comenzilor primite de la canal în forma acceptată de mecanismele şi circuitele
perifericului comandat;
- transmiterea către canal a secvenţelor de semnale standard ce indică desfăşurarea operaţiilor
de intrare/ieşire solicitate;
- efectuarea controlului de paritate asupra datelor şi informaţiilor de control;
- urmărirea îndeplinirii condiţiilor de execuţie a comenzii;
Sisteme operaţionale
- generarea informaţiei de stare a dispozitivelor periferice şi a unităţilor de control care se
prezintă canalului la iniţierea şi respectiv, prelucrarea modului în care s-a terminat transferul de date;
- conversia formatului datelor din codul acceptat de dispozitivul periferic, în codul acceptat
de CPU la citire sau invers la scriere.
Există unităţi de control ce permit conectarea la canal a unui singur dispozitiv periferic sau
mai multor dispozitive periferice, numărul acestora fiind limitat de debitul canalului şi de numărul
de periferice admis de acesta.
Canalele de transfer dirijează fluxul de informaţie între memoria internă şi dispozitivele
periferice degrevând CPU de sarcina tratării proceselor de intrare/ieşire îndeplinind ca principale
funcţii:
- transformarea informaţiei de comandă primită de la CPU în semnale acceptate de către
unităţile de control ale dispozitivelor periferice;
- prelucrarea controlului transferului de date şi eliberarea CPU pentru alte lucrări;
- asamblarea sau dezasamblarea datelor transferate între dispozitivele periferice şi memoria
internă;
- sincronizarea transferului de date cu activitatea CPU;
- controlul adresei care reprezintă sursa sau destinaţia transferului de date în memoria
internă, inclusiv verificarea protecţiei memoriei;
- generarea informaţiei de stare a canalului, pe care o ţine la dispoziţia CPU.
Transferul de informaţii între dispozitivele periferice şi memoria internă, se poate realiza:
- continuu - când un dispozitiv periferic se conectează logic la canal până la terminarea
transferului de date, nepermiţând altui dispozitiv periferic să comunice cu canalul în acest interval
de timp;
- multiplex - când mai multe dispozitive periferice pot transmite simultan prin interfaţă.

3.3.2. Activitatea de gestiune a dispozitivelor periferice


O operaţie de intrare/ieşire este iniţiată de CPU prin executarea unei instrucţiuni ce specifică
canalul, adresa dispozitivului periferic şi adresa locaţiei din memoria internă unde începe programul
de transfer numit driver, care specifică operaţiile de intrare/ieşire ce se vor executa; în timpul
execuţiei driver-ului, CPU poate executa alte operaţii în mod concurent; totodată CPU controlează
modul în care se desfăşoară execuţia procesului de intrare/ieşire prin instrucţiuni specifice.
Procesul de intrare/ieşire cunoaşte starea CPU prin cercetarea conţinutului registrelor de
stare. Comunicaţia dintre canalul de intrare/ieşire şi CPU se realizează, de obicei, prin intermediul
întreruperilor (o întrerupere constituie o facilitate hardware care poate suspenda execuţia operaţiei
curente de către CPU, memorarea stării curente şi transferul la o locaţie specifică unde se găseşte un
program pentru tratarea întreruperii respective).
CPU şi canalele de intrare/ieşire sunt proiectate pentru a opera în mod concurent în
următoarea ierarhie: CPU controlează activitatea canalelor de intrare/ieşire, canalele de intrare/ieşire
controlează activitatea unităţilor de control ale dispozitivelor periferice iar acestea controlează
activitatea dispozitivelor periferice ataşate.
Un sistem de intrare/ieşire poate fi organizat în următoarele moduri:
- un canal de intrare/ieşire poate fi utilizat în mod partajat de două CPU folosind un
controller pentru canalul de intrare/ieşire- situaţie întâlnită la sistemele de calcul exploatate în
multiprelucrare;
- o unitate de control poate fi partajată între mai multe canale, situaţie în care pentru acelaşi
dispozitiv periferic există mai multe căi de acces, iar doua CPU partajează aceeaşi unitate de control;
- dispozitivele periferice de intrare/ieşire pot fi partajate între mai multe unităţi de control
ataşate la diferite canale de intrare/ieşire ale aceleiaşi CPU sau la canalele mai multor CPU. În acest
caz, este solicitată aceeaşi unitate de control, existând mai multe căi prin care dispozitivul periferic
poate transmite sau recepţiona date (fig.3.8.).
Capitolul 3 – Gestiunea resurselor unui sistem de calcul – funcţie a sistemului de operare
În toate cazurile, dispozitivele periferice pot fi conectate printr-un dispozitiv de comutare.

Canal de
intrare/ieşire

Unitate de
control
... Unitate de
control

Unitate de
comutare

Dispozitiv
periferic
... Dispozitiv
periferic

Fig. 3.8. Variantă de organizare a unui sistem de intrare/ieşire

Sistemele de operare dispun de drivere pentru controlul sistemului de intrare/ieşire şi pentru


gestiunea datelor, care degrevează utilizatorii de scrierea programelor pentru procesele de
intrare/ieşire din programele lor de aplicaţie.
Gestiunea dispozitivelor periferice trebuie să îndeplinească următoarele funcţii:
- evidenţa stării tuturor dispozitivelor periferice sub forma blocurilor unităţilor de control
asociate pentru fiecare dispozitiv periferic;
- introducerea unei discipline pentru a determina cărui proces îi este alocat dispozitivul
periferic, pentru cât timp şi la ce moment, în funcţie de natura proceselor, de viteza dispozitivului
periferic şi modul lui de funcţionare;
- alocarea dispozitivului periferic, a unităţii de control şi a canalului pentru proces;
- dezalocarea la nivelul procesului.
Utilizarea eficientă a dispozitivelor periferice se realizează cu ajutorul unor metode hardware
şi a unor module specializate ale sistemului de operare.
Gestiunea dispozitivelor periferice prin metode hardware se poate realiza prin:
1) operarea dispozitivului periferic independent, fără asistenţa canalului sau unităţii de
control;
2) disciplina buffer care implică existenţa unui buffer pentru date în dispozitivul periferic sau
al unităţii de control, ce ar permite unui dispozitiv periferic lent să lucreze independent de canal;
3) căi de acces multiple, concretizate în mai multe căi de acces pentru fiecare dispozitiv
periferic. În acest caz, driverele pentru gestiunea dispozitivelor periferice vor ţine evidenţa căilor de
acces şi vor determina ruta liberă pentru servirea unei cereri de intrare/ieşire la dispozitivul periferic
solicitat;
4) multiplexarea canalului prin execuţia unor programe de canal multiple, ceea ce înseamnă
o implementare hardware a multiprogramării pentru programele de canal.
Gestiunea dispozitivelor periferice de către sistemul de operare este realizată de următoarele
module specializate:
Sisteme operaţionale
1) controlorul traficului de intrare/ieşire (I/O Traffic controller) care are rolul de a evidenţia
informaţiile de stare pentru fiecare dispozitiv periferic, furnizând informaţii mecanismului prin care
un dispozitiv periferic poate fi alocat sau nu. În acest scop, construieşte un bloc de control pentru
dispozitivul periferic, unul pentru unitatea de control şi unul pentru canal (fig.3.9.);

Bloc de control Bloc de control


dispozitive periferice canale

Identificare unitate dispozitiv periferic Identificarea canal

Starea dispozitivului periferic Stare canal

Unităţi de control la care este cuplat Unităţi de control cuplate la canal


dispozitivul periferic
Procese care aşteaptă accesul la Procese care aşteaptă accesul la canal
dispozitivul periferic

Bloc de control pentru


unităţile de control

Identificarea unităţi de control

Stare unităţi de control

Dispozitive periferice conectate la


unitatea de control

Console conectate la unitatea de


control

Console conectate la unitatea de


control

Procese care aşteaptă accesul la


unitatea de control

Fig. 3.9. Informaţia de stare a dispozitivelor periferice

2) planificatorul operaţiilor de intrare/ieşire (I/O Scheduller) care conţine algoritmul privind


strategia utilizată pentru alocarea canalului, a unităţilor de control şi a dispozitivelor periferice; are
funcţii similare cu planificatorul proceselor, cu deosebirea că un program de canal odată lansat în
execuţie nu va putea fi întrerupt înainte de execuţia lui completă;
3) manipulatorul dispozitivelor periferice de intrare/ieşire (I/O Devices Handler) are rolul
de a crea programul de canal pentru execuţia funcţiei dorite, executând fizic operaţia respectivă;
4) dispozitive periferice utilizate partajat (Shared Devices) sunt partajate între mai multe
procese concurente, ceea ce implică:
- interferenţa cererilor din partea proceselor;
- protecţia împotriva acceselor neautorizate.
5) dispozitive periferice virtuale sunt dispozitive periferice ce pot fi convertite pentru a putea
fi utilizate partajat prin sistemul Spooling.
Capitolul 3 – Gestiunea resurselor unui sistem de calcul – funcţie a sistemului de operare

EXERCIŢII

1. Ce reprezintă procesele concurente şi care sunt stările de tranziţie prin care poate trece un proces
?

2. Cum se poate preveni interblocarea proceselor ?

3. Care sunt mecanismele de sincronizare între procese şi prin ce se caracterizează fiecare dintre ele
?

4. Specificaţi activităţile desfăşurate de modulele sistemului de operare care asigură alocarea


procesoarelor.

5. Ce se înţelege prin multitasking preemptiv ?

6. Ce se urmăreşte prin mecanismul memoriei virtuale şi în ce constă diferitele moduri de organizare


ale acesteia ? Menţionaţi avantajele oferite de către fiecare mod de organizare.

7. Se consideră un sistem de calcul având implementată memorie virtuală organizată la nivel de


pagină. Capacitate unei pagini este 512 K, capacitatea memoriei reale este de
4 G, iar a memoriei virtuale este de 4 T.
Se cere să se determine:
a) dimensiunea registrului de adrese virtuale;
b) dimensiunea registrului de adrese reale;
c) capacitatea memoriei tabelei de pagini.

8. Se consideră un sistem de calcul având implementată memorie virtuală organizată la nivel de


segment lungimea segmentului variind între 256 k şi 1024 K. Capacitatea memoriei reale este de 4
G iar a memoriei virtuale este de 4 T.
Se cere să se determine:
a) dimensiunea registrului de adrese virtuale;
b) dimensiunea registrului de adrese reale;
c) dimensiunea registrului buffer;
d) capacitatea memoriei tabelei de segmente.

9. Se consideră un sistem de calcul având implementată memorie virtuală organizată la nivel de


segment-pagină. Capacitate unei pagini este 512 K, iar lungimea segmentului variază între
256 K şi 1024 K.Capacitatea memoriei reale este de 4 G, iar a memoriei virtuale este de 4T.
Se cere să se determine:
a) dimensiunea registrului de adrese virtuale;
b) dimensiunea registrului de adrese reale;
c) dimensiunea registrului buffer;
d) dimensiunea registrului de adrese;
e) capacitatea memoriei tabelei de segmente;
f) capacitatea memoriei tabelei de pagini.

10. Specificaţi activităţile desfăşurate de modulele sistemului de operare care asigură gestiunea
dispozitivelor periferice de intrare/ieşire.

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