Sunteți pe pagina 1din 65

1.

Noiuni de baz i clasificri


Un calculator const dintr-un ansamblu de componente funcionale fizice i logice, care coopereaz
pentru a satisface cerinele utilizatorilor privind introducerea, stocarea, prelucrarea, cutarea i
transmiterea informaiilor. Aceste componente funcionale sunt structurate pe niveluri, care
interacioneaz prin interfee bine definite. Prin noiunea de sistem de operare nelegem modulele
program ale unui SO, care administreaz resursele tehnice. Modulele n cauz soluioneaz situaiile de
conflict, optimizeaz productivitatea sistemului, sporesc eficiena utilizrii lui.
Valorile concrete ale atributelor sistemelor de operare i combinaii ale acestora determin diverse tipuri
de SO. Conform acestor atribute pot fi evideniate urmtoarele tipuri de sisteme de operare:
secveniale,
cu multiprogramare,
cu prelucrare multipl,
n timp real, etc.

2. Noiuni i termeni din domeniul resurselor tehnice


Pentru a trece la noiunile principale, legate de hardware, vom face cunotin mai nti cu funciile de
baz ale unui calculator. Pot fi evideniate cinci funcii eseniale :
stocarea datelor i extragerea rezultatelor:
iniializarea implic testarea prilor importante ale calculatorului, rularea fiierelor de pornire i
ncrcarea altor fiiere necesare, cum ar fi driverele dispozitivelor periferice;
introducerea reprezint transferul datelor dintr-o surs extern n calculator. Surse externe pot fi
tastatura, mouse-ul, discheta, discul mobil, memory stick-ul, aparatul digital de fotografiat etc.;
procesarea se refer la manipularea datelor introduse n scopul producerii unui rezultat (ieirea);
stocarea constituie procesul salvrii informaiilor (date sau programe) ntr-un dispozitiv de
pstrare, de exemplu discul fix, pentru recuperarea ulterioar.

3. Noiuni i termeni din domeniul sistemelor de operare


Un sistem de operare este un ansamblu de programe de control i de serviciu care ghideaz un calculator
n execuia sarcinilor sale, asist programele de aplicaie i interacioneaz cu utilizatorul prin intermediul
anumitor funciuni. Natura funciilor i modul n care acestea sunt realizate determin atributele care
caracterizeaz un sistem de operare: timpul de rspuns- exprim durata intervalului delimitat de lansarea
unei cereri de serviciu i achitarea acesteia de ctre sistem, simultaneitatea utilizrii- msoar gradul n
care un sistem poate s execute n acelai timp mai multe lucrri., eficiena- msoar proprietatea unui
sistem de a folosi n mod optim resursele de care dispune, partajarea resurselor i protecia informaiei n
calculator-caracterizeaz nivelul la care utilizatorii au posibilitatea s utilizeze n comun informaia
prezent n sistem i nivelul la care pot s comunice ntre ei, n deplin siguran, generalitatea,
flexibilitatea, extensibilitatea, fiabilitatea i disponibilitatea, transparena i vizibilitatea. Un sistem de
operare este obligat:
s pstreze informaia despre starea fiecrei resurse,
s ia decizia crui proces s i se aloce resursa, n ce cantitate, cnd, cum i unde,
s aloce resursa i, la momentul oportun, s o retrag.

1
4. Tipuri de sisteme de operare, obiective i funcii
Valorile concrete ale atributelor sistemelor de operare i combinaii ale acestora determin diverse tipuri
de SO. Conform acestor atribute pot fi evideniate urmtoarele tipuri de sisteme de operare:
Un sistem secvenial (tratare pe loturi, engl. batch processing, fr. traitement par lots) execut la un
moment dat un singur program, care trebuie terminat nainte de a ncepe execuia unui alt
program.
Sistemele cu multiprogramare accept la un moment dat mai multe programe n memoria central,
acestea aflndu-se n diferite stadii de execuie.
Un sistem de calcul cu prelucrare multipl dispune de mai multe procesoare, care pot s execute
simultan unul sau mai multe programe. Sistemele de timp real funcioneaz, de obicei, n cadrul
unor sisteme de comand i este necesar ca valorile anumitor atribute s se ncadreze n limite
destul de restrictive, dictate de dinamica proceselor comandate.

5. Exemple de sisteme de operare


Windows, Unix, MS DOS

6. Exemple de sisteme de operare. Cazul calculatoarelor personale


Cea mai simpl configuraie a unui calculator personal (PC) include o unitate central, o memorie
principal, un display, o tastatur i un mouse. Aceast configuraie, de regul, este completat de o
memorie secundar i o imprimant.
Utilizatorul unui astfel de sistem va cere minimum urmtoarele dou tipuri de servicii: identificarea i
crearea unor fiiere sau mulimi structurate de informaii;
Stocarea acestor fiiere n memoria secundar; transferarea informaiilor ntre fiiere i dispozitivele de
intrare/ieire; execuia unor programe existente sau introduse sub form de fiiere n PC;

7. Exemple de sisteme de operare. Comanda unor procese industriale


Procesul de producere este comandat de un calculator care ndeplinete urmtoarele funcii:
Reglare. Pentru o derulare bun a procesului de fabricaie parametrii de funcionare (temperatura,
presiunea, concentraia, etc.) trebuie s se afle ntr-o plaj de valori predefinite. Pentru aceasta va
fi acionat debitul de intrare a materiilor prime A sau B. Parametrii de funcionare sunt msurai cu
ajutorul unor captoare. Calculatorul preia aceste msurri i, n dependen de algoritmul de
comand, acioneaz robinetele de intrare.
nregistrare. Rezultatele msurrilor sunt periodic nregistrate; valorile lor sunt afiate pe un
tablou de bord i recopiate ntr-un fiier ("jurnal de bord") n scopul unor prelucrri ulterioare
(date statistice).
Securitate. n cazul n care unul dintre parametrii msurai depete o valoare critic predefinit
reactorul trebuie oprit imediat.

8. Exemple de sisteme de operare. Sisteme tranzacionale


sistemul gestioneaz un set de informaii sau baze de date, care pot atinge volume importante de
informaie;
asupra acestor informaii pot fi executate un anumit numr de operaii predefinite sau tranzacii,
adesea interactive;
sistemul este dotat cu un mare numr de puncte de acces i un mare numr de tranzacii se pot
derula simultan. Caracteristicile obligatorii ale unui astfel de sistem tranzacional sunt
disponibilitatea i fiabilitatea; pentru unele sisteme poate fi important i tolerana la defeciuni. O
caracteristic important ale sistemelor tranzacionale este multitudinea activitilor paralele, iar n
multe cazuri i repartizarea geografic a componentelor.
2
9. Exemple de sisteme de operare. Sisteme n timp partajat
Destinaia principal a unor astfel de sisteme este furnizarea serviciilor necesare unei mulimi de
utilizatori, fiecare dintre ei beneficiind de servicii:
echivalente serviciilor unui calculator individual;
legate de existena unei comuniti de utilizatori: partajarea informaiilor, comunicaii ntre
utilizatori.
Problemele care apar datorit conceptului de partajare a timpului sunt o combinaie a problemelor
existente n cazul unui calculator individual cu cele din sistemele tranzacionale. Caracteristicile
obligatorii ale unui astfel de sistem mbin, n egal msur, calitile unui sistem de operare al unui
calculator individual i al unui sistem tranzacional, cum ar fi: disponibilitatea, fiabilitatea, securitatea,
exploatarea optim a caracteristicilor resurselor fizice, calitatea interfeei i serviciilor utilizatorului,
facilitatea adaptrii i extensibilitii.

10. Sistemul de operare i procesele


Noiunea de proces este asociat conceptului de lucrare i poate fi definit ca o suit temporal de execuii
de instruciuni, considerat ca fiind o entitate de baz n descrierea sau analiza funcionrii unui sistem.
Evoluia n timp a unui proces presupune un consum de resurse, dictat de natura i complexitatea
instruciunilor de execuie. n particular, rezult c ori de cte ori se execut procedurile de sistem,
resursele, pe care le utilizeaz acesta, intr n administrarea procesului, care a cerut serviciul. Resursele
alocate unui proces variaz n timp.

11. Main ierarhic i main extins


Setul de instruciuni realizat hardware mpreun cu instruciunile suplimentare ale sistemului de operare
formeaz sistemul de comenzi al mainii extinse.
Nucleul sistemului de operare va fi executat pe maina goal, iar programele utilizatorului pe maina
extins.

3
12. Alte puncte de vedere asupra sistemelor de operare. Abordare funcional.
Abordare din punctul de vedere al interfeei cu utilizatorul
Sistemele de operare pot fi abordate din diferite puncte de vedere, cum ar fi SO i procesele, SO
i maina extins sau SO i maina ierarhic. Exist i alte puncte de vedere asupra sistemelor de
operare pe care un specialist ar trebui s le cunoasc.
Abordare funcional
Abordare funcional-Pentru un utilizator obinuit, convins c un calculator este doar un
instrument care l ajut n soluionarea unor probleme din domeniul su de activitate, noiunile,
cum ar fi administrarea memoriei cu paginaie sau driverele dispozitivelor, nu semnific prea
multe. Destinaia principal a unui sistem de operare pentru aceast categorie de utilizatori este
punerea la dispoziie a unui set de programe care l-ar ajuta n formularea i soluionare
problemelor concrete ce in de domeniul su de activitate.
Abordare din punctul de vedere al interfeei cu utilizatorul
Interfaa sistemului de operare cu utilizatorul prezint un interes aparte. Progresul n acest
domeniu este spectaculos, dac vom lua n consideraie c n primele sisteme de operare
utilizatorul era obligat s indice n mod explicit i manual (n regim textual) fiecare pas, orict de
nesemnificativ ar fi prut. Formularea pailor cu ajutorul unui limbaj specializat, cum ar fi Job
Control Language (JCL), nu a schimbat substanial situaia.

13. Evoluia sistemelor de operare. Multiprogramarea i partajarea timpului.


Organizarea intrrilor - ieirilor n memorii tampon. Multiprogramarea. Sisteme cu
timp partajat.
4
Primele sisteme erau caracterizate prin prelucrarea secvenial a taskurilor. Timpul de execuie a
programelor era relativ mare, instrumentele de depanare primitive, fiecare programator i
ncrca n mod individual programul (pachetul de cartele perforate), apsa butoane, controla
coninutul locaiunilor de memorie, etc. (1950 1956). Au fost propuse programe de
monitorizare (monitoare), care treceau de la o lucrare la alta n mod automat, utilizatorul fiind
responsabil de organizarea corect a programelor n cadrul unui pachet primele ncercri de
prelucrare pe loturi (1956 1959).
Dup 1965 au aprut primele sisteme cu partajare a timpului (time sharing), au fost propuse
sisteme sofisticate de administrare a informaiei Memoria virtual i mainile virtuale sunt nite
principii care nici pn astzi nu au fost exploatate pn la capt. Progresele ultimilor ani n
domeniul resurselor tehnice au permis implementarea acestor principii nu numai n cadrul
sistemelor de calcul mari, ci i pentru calculatoarele personale.
Multiprogramarea i partajarea timpului
Utilizarea principiului multiprogramrii sau partajarea memoriei ntre mai muli utilizatori a
permis o utilizare i mai bun a procesorului central. Exploatarea unui calculator conform
principiului timpului partajat ofer utilizatorilor posibiliti analogice unui calculator individual,
permind beneficiul unor servicii comune la un pre redus.
Organizarea intrrilor - ieirilor n memorii tampon
Multiprogramarea
Multiprogramarea este un termen utilizat n cazul unui sistem n care pot exista simultan cteva
procese n stare de execuie. Un proces se consider n stare de execuie, dac calculele au
nceput, dar la momentul considerat nu au fost terminate sau ntrerupte. Multiprogramarea
permite meninerea unitii centrale n stare activ pentru perioada ncrcrii programelor sau
operaiilor de intrare-ieire. Acest mod de funcionare este adaptat tratrii pe loturi pe un
calculator, care nu dispune de un mecanism de reamplasare dinamic.
Sisteme cu timp partajat
Destinaia principal a unor astfel de sisteme este furnizarea serviciilor necesare unei mulimi de
utilizatori, fiecare dintre ei beneficiind de servicii:
echivalente serviciilor unui calculator individual;
legate de existena unei comuniti de utilizatori: partajarea informaiilor, comunicaii
ntre utilizatori.
Problemele care apar datorit conceptului de partajare a timpului sunt o combinaie a
problemelor existente n cazul unui calculator individual cu cele din sistemele tranzacionale i
pot fi clasificate dup cum urmeaz:
definirea mainii virtuale oferite fiecrui utilizator;
partajarea i alocarea resurselor fizice comune: procesoare, memorii, dispozitive de
comunicaie;
gestionarea informaiilor partajate i a comunicaiilor.

14. Windows, Unix i alte sisteme. S UNIX i standardele sistemelor deschise

5
Paralel cu evoluia tehnic i funcional a sistemelor de operare a avut loc i o important
evoluie conceptual, care a permis o mai bun nelegere a funcionrii sistemelor de operare i
a condus la elaborarea unor metode proprii de concepere.
Debutul unei cercetri tiinifice a sistemelor de operare poate fi considerat anul 1964, care a
succedat o etap important de dezvoltare tehnic: primele sisteme cu partajare a timpului (Thor,
CTSS). Sistemul de operare UNIX, primul sistem mobil care asigur un mediu fiabil de
dezvoltare i utilizare a softului de aplicaie, este fundamentul practic de elaborare a sistemelor
fizico-logice deschise.
S UNIX i standardele sistemelor deschise
Sistemul de operare UNIX, primul sistem mobil care asigur un mediu fiabil de dezvoltare i
utilizare a softului de aplicaie.
Implementarea larg a sistemului de operare UNIX a permis trecerea de la declararea sistemelor
deschise la dezvoltarea practic a acestui concept. Variantele SO UNIX, propuse de compania
SCO i destinate exclusiv platformelor Intel, sunt bazate pe modulele iniiale ale System V 3.2,
fiind total compatibile cu toate standardele de baz

15. OSF-1 i alte variante UNIX. Standarde UNIX


Open Software Foundation (OSF) a fost prima companie comercial, care a ncercat elaborarea
SO UNIX n baza micronucleului Mach. A fost creat sistemul de operare OSF-1, care nu era n
sens de liceniere curat, deoarece folosea o parte a modulelor iniiale din SVR 4.0.
Nu putem s nu amintim aici i de realizarea original a SO UNIX pentru platformele Intel,
propus de Torvald Linus LINUX
Prin standard al unei interfee al SO subnelegem un set de proprieti, mai mult sau mai puin
formale, sintactice sau semantice ale componentelor sistemului de operare.
Standarde UNIX
Unul dintre primele standarde de-facto a fost cel publicat de USL pentru versiunea SO UNIX
System V Release 4 - System V Interface Definition (SVID).
Mai menionm standardul de-facto SPARC Complience Definition, propus de organizaia
SPARC International.
Pentru lumea UNIX este foarte important i standardul limbajului de programare C, adoptat mai
nti de ANSI i apoi de ISO. n acest standard sunt specificate, n afara limbajului C, bibliotecile
necesare ntr-o realizare standard. Deoarece chiar de la apariie limbajul C i sistemele de
programare respective erau strns legate de UNIX, componentele bibliotecilor standard
corespundeau exact mediului standard al SO UNIX.

16. Sisteme de operare cu micronucleu


Micronucleul este partea minim principal a unui sistem de operare, folosit pentru asigurarea
modularitii i transportabilitii. Noiunea de micronucleu a fost introdus de compania Next
prin sistemul de operare cu micronucleul Mach.
Urmtorul SO cu micronucleu a fost MS Windows NT, n care momentul principal declarat era,
n afara modularitii, transportabilitatea. Acest sistem de operare poate fi utilizat n sistemele
mono- i miltiprocesor, bazate pe procesoarele Intel, Mips, i Alpha
Au aderat la tehnologia micronuclear i companiile Novell/USL, Open Software Foundation
(OSF), IBM, Apple i altele. Unul din concurenii principali ai lui NT n domeniul SO cu
micronucleu sunt Mach 3.0, creat n Universitatea Carnegy-Mellon, i Chorus 3.0 al companiei
Chorus Systems.

17. Modul de secvenial de execuie a unui program. Noiuni fundamentale. Starea i


contextul procesorului

6
Un program secvenial = o mulime de proceduri, care se pot apela reciproc. Fiecrei proceduri i
este asociat un segment distinct de procedur. Datele sunt reprezentate prin segmente, pot fi
proprii unei proceduri sau partajate ntre mai multe proceduri.
Numim activitate fenomenul care rezult din execuia nentrerupt a unei proceduri unice.
!!Execuia unui program secvenial const dintr-un lan de activiti!!!!
Numim context al unei activiti mulimea informaiilor accesibile procesorului n cursul acestei
activiti. Contextul activitii este compus din contextul procesorului (registrele programabile i
interne) i contextul memoriei (segmentul procedurii i segmentul datelor). Trecerea de la o
activitate la alta este realizat de instruciuni speciale: apelarea i returul din procedur, care
realizeaz comutarea contextului.
Starea i contextul procesorului
Starea procesorului este determinat de coninutul registrelor acestuia. Registrele pot fi:
adresabile, numite registre generale, manipulate de programe, registre speciale - cuvnt de stare
program (program status word, PSW). PSW conine informaii:
Referitoare la starea procesorului:
Starea de execuie. Procesorul se poate afla n starea activ n care ndeplinete instrucii, sau n
starea de ateptare, cnd execuia este suspendat. Modul de funcionare:
Protecie - se permite doar programelor SO executarea unor instruciuni anumite (speciale),
programele utilizatorilor neavnd acces la aceste instruciuni.
Masca ntreruperilor.
Referitoare la contextul accesibil al memoriei i drepturile de acces asociate: tabele de segmente,
indicatori de protecie a memoriei, etc. Referitoare la derularea activitii curente: codul
condiiei, contorul operaiei urmtoare (contor ordinal).

18. Activiti asincrone. Mecanisme de comutare a contextului.


Pentru cazuri mai generale sunt necesare mecanisme suplimentare, cum ar fi conceptele de
asincronism sau de protecie reciproc ntre activiti.
Prin asincronism nelegem efectul care l pot avea asupra derulrii unei activiti anumite
evenimente exterioare.
Numim protecie reciproc ntre activiti o modificare mai profund a contextului, atunci cnd
se trece de la o activitate la alta, n comparaie cu ceea ce are loc n cazul unei simple apelri de
procedur.
Un caz tipic de asincronism este executarea intrrilor-ieirilor simultan cu execuia unui
program. Trebuie s fie asigurat posibilitatea informrii programului despre terminarea unui
transfer de informaii.
Mecanisme de comutare a contextului
Comutarea contextului unui procesor permite executarea ntr-o manier indivizibil (atomar) a
urmtoarelor dou operaii: trecerea cuvntului de stare ntr-un amplasament specificat al
memoriei, ncrcarea n cuvntul de stare a coninutului unui alt amplasament specificat al
memoriei. Comutarea contextului poate fi necesar din mai multe cauze distincte. Presupunem
c fiecrei cauze i-a fost asociat un numr de ordine. Pot fi ntlnite dou scheme de comutare a
contextului.
Salvare n amplasamente fixe.
Salvare ntr-o stiv.

19. ntreruperi.

20. Devieri i apelarea supervizorului.


O deviere semnalizeaz o anomalie n derularea unei instruciuni, care prohibiteaz executarea
instruciunii. Originile pot fi diverse: date incorecte, instruciune neexecutabil . Devierile pot fi
7
clasificate, ca i ntreruperile, conform cauzelor care le genereaz. O deviere poate fi suprimat,
dar nici intr-un caz retardat. Un apel al supervizorului (supervisor call, prescurtat SVC, eng.,
appel au superviseur, fr.) este o instruciune chemat s provoace o comutare a contextului
procesorului. Acest efect este analogic apelrii unei proceduri, ns modificarea contextului este
mai profund.
Destinaia unui apel al supervizorului este de a permite apelarea unei proceduri a sistemului de
operare, pretinznd la drepturi mai mari

21. Exemple de sisteme de ntreruperi


Sistemul de ntreruperi are 5 nivele (n ordinea de descretere a prioritilor): eroare hardware,
deviere, apelare supervizor, extern i intrare-ieire. Fiecrui nivel i corespunde n memoria
operativ un cuplu de amplasamente rezervate cuvintelor de stare vechi i nou. Fiecare nivel
conine mai multe cauze de ntrerupere.

22. Implementarea mecanismelor de comutare a contextului.


Implementarea mecanismelor este ilustrat prin exemple, legate de utilizarea lor. Vom preciza
notaia utilizat n schemele programelor:
coninutul unui cuvnt de stare este reprezentat prin notaia <activitate, mod, mascare,
contor ordinal>. Dac csp desemneaz un cuvnt de stare, cmpurile sale vor fi
desemnate de csp.act, csp.mod, csp.masc i csp.co.
operatorul adr aplicat unui identificator de variabil sau de procedur, desemneaz adresa
amplasamentului unde se afl variabila sau prima instruciune a procedurii,
notaia Mp[adr] desemneaz coninutul amplasamentului cu adresa adr.
notaiile svc_vechi, dev_vechi, intr_x_vechi, svc_nou, dev_nou, intr_x_nou desemneaz
amplasamentele unde sunt plasate i de unde sunt ncrcate cuvintele de stare.
Vom mai presupune c
apelarea supervizorului este de forma SVC <cod>, unde <cod> reprezint un numr care
permite identificarea funciei cerute,
un indicator <cauz> permite stabilirea cauzei care provoac o deviere.

23. Utilizarea devierilor i apelrii supervizorului

24. Exemple de utilizare a ntreruperilor


Principala utilizare a ntreruperilor este msurarea timpului i administrarea operaiilor de
intrare-ieire. Prezentm mai jos cteva exemple de utilizare a ceasului calculatorului.
procedura iniializare;
intr_ceas_nou:=<activ,master,mascat,adr

8
intr_ceas>; svc_nou
:=<activ,master,mascat,adr tratare_svc >;
dezarmare(intr_ceas);
procedura tratare_svc;
save(zon);
case cod of

apel_lim_timp_ex: -- parametrii p, q, tratare_eroare
ceas:=q;
cspretur:=svc_vechi; -- salvare pentru retur
csplucrare:= <activ,slave,demascat,adr p>;
csperoare:= <activ,slave,demascat,adr
tratare_eroare>; armare(intr_ceas);
restabilete(zon);
ncarc_csp(csplucrare);

retur: -- datorat terminrii procedurii p
dezarmare(intr_ceas);
ncarc_csp(cspretur);

endcase
procedura intr_ceas; -- expirarea timpului limit
dezarmare(intr_ceas);
ncarc_csp(csperoare);

25. Programarea operaiilor de intrare- ieire. Organizarea general


Prin noiunea de intrare-ieire numim orice transfer de informaii din sau spre nucleul
calculatorului. Operaiile de I/E semnific: transferurile de informaii dintre diferite nivele
ierarhice ale memoriei, transferurile de informaii din sau spre mediul exterior (organe periferice
locale sau la distan, captoare sau dispozitive de acionare, alte calculatoare, etc.).
Organizarea general
Un organ de intrare-ieire este un dispozitiv capabil s transfere informaii ntre procesorul sau
memoria calculatorului i un suport extern de informaie. Acest transfer este comandat de ctre
procesorul central.
Un canal este un procesor specializat n operaiile de intrare-ieire. El poate fi lansat doar de un
procesor central, nu posed ntreruperi, dar poate ntrerupe un procesor central.
Un contrler este un dispozitiv de comand adaptat la un tip concret de echipament periferic.
Autonomia sa este limitat de operaii foarte elementare. Destinaia principal a unui controler
este de a permite conectarea a mai multor periferice de acelai tip la un singur controler.
Un periferic este un organ capabil s transfere informaii din sau spre un suport extern.
Controlerul este legat de periferic printr-o interfa, care conine un set de funcii
i o linie de comunicaie, care servete la transferul informaiilor.

26. Programarea operaiilor de intrare- ieire. Metode de comand a perifericelor


Programul, care controleaz funcionarea elementar a unui dispozitiv periferic se numete
driver. Driverul gestioneaz n mod direct interfaa controlerului perifericului, trateaz
ntreruperile generate de acesta, detecteaz i trateaz cazurile de eroare. Modurile principale de
control ale perifericelor
Intrri-ieiri programate pe canal sau acces direct la memorie Intrri-ieiri asincrone cu
ntreruperi
Intrri-ieiri sincrone
9
27. Programarea operaiilor de intrare- ieire. Intrri-ieiri buferizate n memorie
Diferena considerabil dintre viteza de lucru a unitii centrale i cea a organelor periferice
impune "buferizarea" intrrilor-ieirilor, adic introducerea unei zone-tampon de memorie ntre
periferic i programul utilizatorului. Scopul este de a reduce timpul de inactivitate a unitii
centrale, dezlegnd funcionarea acesteia de periferice.
Programul utilizatorului va transfera informaiile din sau spre zona-tampon, iar aceast zon-
tampon va servi, n mod paralel, drept surs sau destinaie la schimbul de date cu perifericul.
Dezlegarea unitii centrale de periferic este cu att mai bine realizat cu ct este mai mare
capacitatea zonei-tampon. Adesea, pentru a nu suprancrca memoria principal, zona-tampon
este situat pe discul fix.

28. Gestionarea activitilor paralele. Exemple introductive

29. Gestionarea activitilor paralele. Administrarea tamponat a intrrilor-ieirelor


Analiza acestui mod de funcionare (fig.3.1) pune n eviden patru activiti, care pot avea loc
simultan:
primitiva scriere_linie SL (unitatea central)
scriere pe disc SD (canal 1)
citire de pe disc CD (canal 2)
imprimare fizic IF (canal 3)
Pot fi evideniate dou tipuri de condiii, care trebuie respectate:
Condiii, care stabilesc posibilitatea existenei unor activiti
Condiii de validitate a informaiilor partajate.

30. Gestionarea activitilor paralele. Comanda unui proces industrial

31. Noiune de proces secvenial


Executarea unui program se traduce ntr-o suit de aciuni a1, a2,..., ai,..., cu
nceput(ai)<sfrit(ai) **
O astfel de suit este numit proces secvenial sau simplu proces.
Un proces poate, deci, fi descris cu ajutorul succesiunii evenimentelor nceput(a1), sfrit(a1),
nceput(a2), sfrit(a2),...

32. Proces unic. Context


Noiunea de proces pune la dispoziie un model pentru reprezentarea unei activiti, care rezult
din executarea unui program pe calculator. , contextul unui proces rezultant din executarea unui
program conine:
Contextul procesorului (cuvntul de stare i registrele),
Un context n memorie, sau spaiul de lucru (segmente procedur, date, stiv de execuie), O
mulime de atribute ataate procesului i care specific diferite proprieti:
10
Nume. Numele unui proces, care servete pentru identificarea lui. Prioritate. Prioritatea
proceselor permite ordonarea lor pentru alocarea procesorului.
Dac toate procesele au aceeai prioritate, alocarea se face conform ordinii primul sosit, primul
servit.
Drepturi. Drepturile unui proces specific operaiile care i sunt permise, n scopul asigurrii
proteciei informaiei .

33. Relaii ntre procese. Mulimi de procese. Paralelism


Vom cerceta n continuare execuia unei mulimi de procese i interaciunea reciproc a acestora.
Noiunile, introduse mai sus, pot fi extinse pentru o mulime de procese:
traiectoria temporal a unei mulimi de procese este irul evenimentelor formate de nceputurile
i sfriturile aciunilor rezultante din executarea programelor acestor procese.
contextele unor procese diferite pot avea pri comune. Dou procese, contextele crora sunt
disjuncte, se numesc independente; ele nu pot avea interaciuni reciproce. Partea contextului,
care aparine unui singur proces, se numete context privat al procesului dat.
Mulimi de procese. Paralelism
S considerm dou programe distincte P i Q, fiecare avnd n memorie un segment cod i un
segment de date. Numim p i q procesele rezultante din executarea respectiv a acestor dou
programe. Executarea setului (p, q) poate s se produc n diferite moduri, caracterizate de forma
particular a traiectoriei sale temporale.

schema 3 are loc un paralelism real, iar n schema 2 un pseudo-paralelism. Paralelismul real
necesit dou procesoare distincte. Dou observaii importante sunt necesare:
Diferena acestor scheme de execuie este legat de alegerea nivelului de observare. Astfel, la
nivelul de baz, diferena dintre schemele 1 i 2 dispare: ambele sunt secveniale.

34. Concurena proceselor. Resurse virtual. Excluderea mutual


Funcionarea corect a unei mulimi de procese, care particip la ndeplinirea unei lucrri
comune, implic relaii logice de cooperare. Este comod s se separe aceast cooperare de
concurena pentru resursele fizice cu scopul de a simplifica nelegerea i aplicarea celor dou
tipuri de relaii. Pentru aceasta este folosit noiunea de resurse virtuale:
fiecrei resurse fizice critice i se asociaz tot attea copii imaginare (sau virtuale) ale acestei
resurse cte procese concurente solicit utilizarea ei.
Excludere mutual

11
Excluderea mutual const n extinderea pentru secvena de aciuni a proprietii de
indivizibilitate a aciunilor nivelului de baz (aciuni atomare). Posibilitatea executrii unor
aciuni atomare se afl la baza mecanismelor care realizeaz sincronizarea.

35. Sincronizarea proceselor

36. Exprimarea i implementarea restriciilor de precedare


succesiune sfrit(scriere(a)) < nceput(citire(a))
Aceast relaie exprim restricia, c citirea lui a de ctre q nu poate ncepe nainte de terminarea
scrierii lui a de ctre p. Dac programul procesului pi are
forma
<debut_i>; <rendez-vous> <continuare_i>;
atunci restriciile de sincronizare se vor exprima dup cum urmeaz:
" pentru orice i, j din [1..N]: sfrit(debut_i) < nceput(continuare_j)
Restriciile de sincronizare pot fi exprimate prin urmtoarele dou forme echivalente:
Se va impune o ordine de succesiune n timp logic pentru unele puncte ale traiectoriei temporale
ale procesului,
Se va impune unor procese o condiie de autorizare a depirii acestor puncte ale traiectoriei lor
temporale.

37. Probleme de realizare a sincronizrii


Un eveniment memorizat este o variabil, care poate lua dou valori: sosit i non_sosit, valoarea
iniial este non-sosit. Asupra evenimentului memorizat sunt posibile dou operaii, care sunt
aciuni indivizibile:
e:=<valoare> -- atribuirea imediat a unei valori ateptare(e).
Operaia ateptare(e), executat de un proces p, are urmtoarea specificaie: if e = non_sosit then
starea(p) := blocat -- p este trecut n ateptarea lui e endif
Cnd e ia valoarea sosit, toate procesele care ateptau e trec n starea activ.

38. Monitorul mecanism de sincronizare. Definiii. Exemple de utilizare


Un monitor este constituit dintr-o mulime de variabile de stare i o mulime de proceduri, care
utilizeaz aceste variabile. Unele dintre aceste proceduri, numite externe, sunt accesibile
utilizatorilor monitorului; numele acestor proceduri sunt numite puncte de intrare ale
monitorului. Procesele, care utilizeaz monitorul pentru a se sincroniza, nu au acces direct la
variabilele de stare. Monitorul poate fi utilizat doar prin apelarea procedurilor sale externe;
acestea permit blocarea sau deblocarea proceselor conform specificaiilor problemei.
Un monitor conine un fragment de cod de iniializare, executat o singur dat la crearea
monitorului.
Exemple de utilizare
Monitorul este utilizat dup cum urmeaz:
12
procesul p procesul q
scriere(a); <debut_q>
sinc.terminare_scriere; sinc.debut_citire;
<continuare_p> citire(a);

39. Implementarea sincronizrii. Probleme-tip


Experiena demonstreaz, c problemele de sincronizare logic ntlnite n practic pot fi reduse,
n marea lor majoritate, la combinaia unui numr mic de situaii elementare, schemele de
soluionare ale crora sunt cunoscute.
Probleme-tip
Problemele-tip sunt urmtoarele:
accesarea de ctre o mulime de procese a unei resurse partajate comune, comunicarea ntre
procese, gestionarea perifericelor i intrrilor-ieirilor tamponate, sincronizare temporal.

40. Implementarea sincronizrii. Administrarea unei resurse partajate


Considerm o resurs (fizic sau logic) partajat de o mulime de procese. Utilizarea acestei
resurse trebuie s respecte nite reguli de utilizare, destinaia crora const n garantarea unor
proprieti specificate sau restricii de integritate. Aceste restricii sunt specificate pentru fiecare
resurs.
O modalitate de garantare a respectrii regulilor de utilizare a unei resurse const n adoptarea
urmtoarei scheme:
modul de folosire a resursei presupune utilizarea obligatorie a procedurilor de acces asociate
resursei; orice tentativ de utilizare, care nu respect acest mod este detectat automat,
procedurile de accesare sunt grupate ntr-un monitor, sau mai multe, programul cruia impune
respectarea restriciilor de integritate.

41. Implementarea sincronizrii. Alocarea resurselor banalizate


Considerm o resurs pentru care exist un numr fix de N exemplare. Un proces poate accesa la
cerere n uniti din cele N, le poate utiliza i apoi elibera. Toate unitile sunt echivalente din
punctul de vedere al proceselor utilizatoare, se mai zice c resursa este banalizat.
Utilizarea resursei are loc conform schemei de mai jos.
ps:resurse.cerere(n); -- cerere pentru n uniti
<utilizarea unitilor primite> -- ateptare n caz de eec
resurse.eliberare(n) -- eliberarea resurselor
Condiia de sincronizare se va scrie pentru orice proces: aut(ps) : n nlibere

42. Modelul cititorului i redactorului


S considerm un fiier manipulat de procese din dou clase diferite: cititori, care consult
fiierul fr a modifica coninutul lui i scriitori, care pot modifica acest coninut. Fie pentru un
moment arbitrar de timp ncit i nscr numrul de cititori i de scriitori, respectiv, care folosesc o
procedur de acces la fiier. Cererea de asigurare a coerenei fiierului ne impune s respectm
urmtoarele restricii:
(nscr=0) i (ncit0) -- fiier n citire
sau (nscr =1) i (ncit=0) -- fiier n scriere

43. Comunicarea ntre procese


Procesele pot comunica prin accesarea unei mulimi de variabile comune. Acest mod de
comunicare este slab structurat i ineficient - cere excluderea reciproc a variabilelor.
Comunicarea prin mesaje - modelul productorului i consumatorului, realizat cu ajutorul
13
monitoarelor . O alt posibilitate, const n a considera operaiile de comunicare ca un fel de
mecanisme primitive de sincronizare.

44. Modelul productorului i consumatorului


Un proces (productorul) trimite mesaje unui alt proces (consumatorul), utiliznd o zon tampon
n memoria comun. Mesajele sunt de lungime fix i capacitatea tamponului este de N mesaje.
Specificaiile comunicaiei:
un mesaj dat poate fi preluat doar o singur dat dup ce a fost depozitat n tampon,
un mesaj nu poate fi pierdut; dac tamponul conine N mesaje nepreluate, nu pot fi depozitate
alte mesaje, o operaie imposibil blocheaz procesul, care ncearc s o execute.

45. Primitive de comunicare


Operaiile de schimb de mesaje pot fi definite ca nite mecanisme primitive i s le utilizm
pentru sincronizarea proceselor. Primitivele de baz n comunicarea prin mesaje sunt:
emitere(mesaj,destinaie) recepie(mesaj,origine)
Specificrile acestor primitive trebuie s precizeze: natura i forma mesajelor,
modul de adresare a proceselor emitoare i destinatare, modul de sincronizare a acestor
procese, tratarea erorilor.

47. Aplicaii : relaia client-server


46.
O aplicaie curent a comunicrilor ntre procese este relaia client-server. Un proces server are
n arj ndeplinirea unor servicii (executarea unor programe predefinite) proceselor client.
Pentru aceasta este utilizat urmtoarea schem:
Procesul server este asociat unei pori, unde clienii i depun cererile; el este blocat atta timp
ct nu exist cereri de servicii n ateptare.
modelul client-server sunt reprezentative pentru dou scheme de obinere a unui serviciu cu
ajutorul proceselor ntr-un sistem de operare: apelarea unei procedure de monitor sau activarea
unui proces server ciclic prin emiterea mesajelor. Alegerea ntre aceste dou scheme este dictat
de considerente de eficacitate.

47. Implementarea sincronizrii. Administrarea intrrilor-ieirilor


Pentru un proces care execut o intrare-ieire apelnd o procedur de schimb a acestui monitor,
totul se petrece ca i cum schimbul este sincron: la returul din procedur, informaia a fost
efectiv transferat (sau o eroare a fost detectat i semnalizat). Mecanismul de blocare evit
ateptarea activ i procesorul poate fi utilizat n timpul transferului de un alt proces.

48. Implementarea sincronizrii. Administrarea unui periferic


Fiecrui periferic i este asociat un monitor procedurile externe ale cruia permit executarea
intrrilor-ieirilor la acest periferic. Acest monitor are urmtoarea form general (pentru un
sistem mono-utilizator):
perif: monitor;
var ..., sfr_schimb_i,...: condiie;
<declaraiile variabilelor de stare ale perifericului>
...

49. Implementarea sincronizrii. Buferizarea imprimrii


Trei zone-tampon tm1 i tm2 de capacitate N1 i N2 n memoria central i unul pe disc, td, de
lungime Ndisc. Pentru simplitate presupunem, c transferurile se fac cu blocuri constante egale
cu o linie. Fiecare bufer este comandat de un monitor cu aceeai structur care are rolul de a
asigura excluderea mutual i sincronizarea condiiilor tampon plin i tampon vid.

14
Definind tm1, tm2 i td ca tablouri de elemente de lungimea unei linii i pointerii top i coad
locali fiecrui monitor, procedurile de depozitare i preluare pot fi:
<pentru tm 1> <pentru tm 2>
procedura intrare(l:linie); procedura intrare(l:linie);
tm1[coad] := l; tm2[coad] := l;
coad := coad+1 mod N1 coad := coad+1 mod N2
procedura ieire(var l:linie); procedura ieire(var l:linie);
l := tm1[top]; l := tm2[top];
top := top+1 mod N1 top := top+1 mod N2

50. Implementarea sincronizrii. Sincronizarea temporal


Sincronizarea temporal face ca timpul s intervin nu numai ca mijloc de ordonare a
evenimentelor, dar i ca msur de durat absolut. Acest mod de sincronizare este utilizat n
aplicaiile de timp real, care conin interaciuni cu organe externe (comanda proceselor
industriale, de exemplu).
Sincronizarea temporal solicit folosirea unui ceas, realizat prin intermediul generatorului de
sincronizare, care emite impulsuri la intervale regulate.
Aceste impulsuri pot fi utilizate pentru a declana o ntrerupere la fiecare impuls sau
pentru a decrementa n mod automat coninutul unui registru contor, o ntrerupere este declanat
atunci cnd coninutul acestui registru atinge valoarea 0.

1. Gestionarea dinamic a proceselor


n sistemele performante, mai ales n cele interactive, procesele sunt comandate dinamic. Crearea
unui proces presupune alocarea resurselor i iniializarea contextului. Distrugerea unui proces
elibereaz toate resursele care i-au fost alocate. Primele primitive, propuse pentru gestionarea
dinamic a proceselor, au fost fork i join. Istoric i cronologic, aceste operaii au fost introduse
pentru organizarea executrii paralele a programelor pe un sistem multiprocesoral, noiunea de
proces nefiind nc clar.

2. Sincronizarea n Windows
Platforma pe 32 de bii pune la dispoziia programatorului instrumente evoluate pentru
multiprogramare, att la nivelul unei mulimi de lucrri, ct i a unei lucrri singulare. Poate s
apar ntrebarea CND s fie utilizat multiprogramarea n cadrul unei singure aplicaii.
Rspunsul este foarte simplu: atunci cnd dorim ca mai multe fragmente de cod s fie executate
simultan. De exemplu, dac dorim ca unele activiti s fie ndeplinite n regim de fond sau
programul s continue s reacioneze la unele evenimente exterioare n timpul ndeplinirii unor
calcule foarte costisitoare

3. Procese i fire n Windows


Numim proces n Windows o instan (un exemplar) a programului, ncrcat n memoria
operativ. Aceast instan poate crea fire (thread) - secvene de instruciuni, care urmeaz a fi
executate
n cadrul sistemului de operare Windows exist dou tipuri de fire fire interactive, care execut
un ciclu propriu de prelucrare a mesajelor (de exemplu, firul principal al unei aplicaii) i fire de
lucru, care sunt funcii simple. n ultimul caz execuia firului se ncheie atunci cnd calculele,
generate de funcia respectiv, iau sfrit.

4. Necesitatea sincronizrii n Windows


n realitate, din cauza multitaskingului controlat se poate ntmpla ca un fir s nu fi terminat nc
lucrul cu o resurs comun oarecare, iar sistemul s treac la un alt fir, care utilizeaz aceeai
resurs. Rezultatele pot fi imprevizibile. Asemenea conflicte se pot produce i n cazul unor fire,
care aparin chiar unor procese diferite. Problema poate s apar ntotdeauna cnd dou sau mai
15
multe fire folosesc o resurs comun. Este necesar un mecanism de coordonare a lucrului firelor
cu resurse comune. n Windows acest mecanism se numete sincronizarea firelor .

5. Structura mecanismului de sincronizare n Windows


Mecanismul de sincronizare este un set de obiecte ale sistemului de operare Windows, create i
gestionate program, comune pentru toate firele sistemului i utilizate pentru coordonarea
accesului la resurse. n calitate de resurse pot fi toate obiectele, care pot fi accesate de dou i
mai multe fire un fiier pe disc, un port, un articol al unei baze de date, o variabil global a
unui program
Sensul mecanismelor de sincronizare const n faptul, c fiecare poate s fie n starea set. Pentru
fiecare mecanism de sincronizare aceast stare poate s aib sens propriu. Firele pot s testeze
starea curent a mecanismului de sincronizare i/sau s atepte modificarea acestei stri,
coordonndu-i n acest fel aciunile proprii
Mecanismele de sincronizare nu pot interzice accesul nedorit la o resurs, ele doar indic firului
momentul cnd acesta poate accesa resursa, sau cnd acesta trebuie s atepte .

6. Administrarea obiectelor de sincronizare n Windows


Crearea unui obiect de sincronizare se produce prin apelarea unei funcii speciale din WinAPI de
tipul Create (de exemplu, CreateMutex). Acest apel returneaz descriptorul obiectului
(handle), care poate fi folosit de toate firele procesului dat. Un obiect de sincronizare poate fi
accesat i dintr-un alt proces, dac acest proces a motenit descriptorul obiectului dat, sau
folosind funcia de deschidere a unui obiect (Open).
Dac n parametrul timp este indicat constanta simbolic INFINITE, funcia va atepta pn
cnd starea obiectului va deveni set, fr vre-o restricie Starea mai multor obiecte poate fi aflat
cu ajutorul funciei WaitForMultipleObjects. Pentru ncheierea lucrului cu un obiect de
sincronizare i eliberarea
descriptorului se apeleaz funcia CloseHandle. Este important de tiut, c apelarea unei funcii
de ateptarea blocheaz firul curent, adic atta timp ct un fir se afl n starea de ateptare el nu
are acces la procesor.

7. Excluderea mutual n Windows


Mecanismele de excludere mutual (mutex-ele, de la MUTual EXclusion) permit coordonarea
accesului la o resurs partajat. Starea set a obiectului corespunde momentului de timp n care
obiectul nu aparine nici unui fir i poate fi utilizat, iar starea reset momentului cnd un fir
oarecare controleaz deja mutex-ul. Accesarea va fi permis doar dup eliberare.
Pentru a lega mutex-ul de firul curent trebuie apelat una din funciile de ateptare. Firul, cruia
i aparine mutex-ul, l poate ocupa de mai multe ori, fr autoblocare, ns mai apoi acesta va
trebui eliberat tot de attea ori cu ajutorul funciei ReleaseMutex.

8. Evenimentele n Windows
Obiectele-evenimente sunt utilizate pentru a informa firele, care sunt n ateptare, despre
producerea unui eveniment. n Windows exist dou tipuri de evenimente cu resetare manual
i automat. Resetarea manual se execut cu funcia ResetEvent. Aceste evenimente sunt
folosite pentru informarea mai multor fire, iar evenimentele cu resetare automat sunt utilizate
pentru informarea unui anumit fir, celelalte rmnnd n ateptare.
16
Funcia CreateEvent creaz un obiect-eveniment, funcia SetEvent seteaz evenimentul n starea
set, iar funcia ResetEvent reseteaz evenimentul. Funcia PulseEvent seteaz evenimentul, iar
dup semnalizarea firelor, care erau n ateptare reseteaz obiectul

9. Semafoarele n Windows
Un obiect-semafor este n ultim instan un mutex cu contor. Acest obiect permite s fie
ocupat de un numr anume de fire, dup care ocuparea va fi posibil numai dac unul din
fire va elibera semaforul. Semafoarele sunt utilizate pentru a limita numrul de fire, care
lucreaz simultan cu resursa.

10. Seciunile critice n Windows


Obiectul-seciune critic permite programatorului s evidenieze un fragment de cod n care firul
obine acces la o resurs partajat, prentmpinnd utilizarea resursei de mai muli utilizatori.
Pentru a utiliza resursa firul va intra mai nti n seciunea critic (apelarea funciei
EnterCriticalSection).
Diferena de mutex const n faptul c seciunea critic este utilizat numai pentru firele unui
singur proces. Cu ajutorul funciei TryEnterCriticalSection se poate stabili, dac seciunea critic
este liber.

11. Protejarea accesrii variabilelor n Windows


Exist o serie de funcii, care permit lucrul cu variabilele globale ale tuturor firelor, fr a ne
preocupa de sincronizare, deoarece aceste funcii singure rezolv problema sincronizrii. Aceste
funcii sunt InterlockedIncrement, InterlockedDecrement, InterlockedExchange,
InterlockedExchangeAdd i
InterlockedCompareExchange. De exemplu, funcia InterlockedIncrement incrementeaz
valoarea unei variabile pe 32 bii cu o unitate.

12. Sincronizarea n MFC


Biblioteca MFC conine clase speciale pentru sincronizarea firelor (CMutex, CEvent,
CCriticalSection i CSemaphore). Aceste clase corespund obiectelor de sincronizare WinAPI i
sunt derivate de la clasa CSyncObject. Pentru utilizarea acestor clase trebuie consultai
constructorii i metodele lor Lock i Unlock.
Obiectul de sincronizare MFC este inclus n aceast clas n calitate de membru privat i toate
funciile clasei, care realizeaz accesarea resursei, i coordoneaz lucrul cu acest membru.
Utiliznd funciile Lock i Unlock clasele de sincronizare MFC pot fi utilizate direct, iar n mod
indirect prin funciile CSingleLock i CmultiLock.

13. Exemplu de sincronizare n Windows


#include <windows.h>
#include <iostream.h>
void main()
{
DWORD res;
HANDLE mutex = CreateMutex(NULL, FALSE, "NUME_APLICATIE-MUTEX01");
cout<<"ncerc s ocup obiectul...\n";
cout.flush();
res = WaitForSingleObject(mutex,20000);
if (res == WAIT_OBJECT_0)
{
cout<<"L-am prins! Ateptare 10 secunde...\n"; cout.flush(); Sleep(10000);
cout<<"Acum eliberm obiectul\n"; cout.flush(); ReleaseMutex(mutex);
}
17
CloseHandle(mutex);
}

14. Utilizarea seciunilor critice n Windows


n acest caz seciunile critice sunt utilizate pentru a permite la un moment de timp dat accesul la
unele date importante unui singur fir al aplicaiei, celelalte fire fiind blocate
Seciunile critice nu sunt obiecte ale nucleului sistemului de operare. Practic, tot lucrul cu
seciunile critice are loc in procesul care le-a creat. Din aceasta rezult, c seciunile critice pot fi
utilizate numai pentru sincronizare n cadrul unui proces.

15. Structura RTL_CRITICAL_SECTION n Windows


Este definit dup cum urmeaz:
typedef struct _RTL_CRITICAL_SECTION
{
PRTL_CRITICAL_SECTION_DEBUG DebugInfo; // Folosit de sistemul de operare
LONG
LockCount; // Contorul de utilizri
LONG // Contorul accesrii repetate din
RecursionCount; firul utilizatorului
HANDLE
OwningThread; // ID firului utilizatorului (unic)
HANDLE LockSemaphore; // Obiectul nucleului
folosit pentru ateptare
ULONG_PTR // Numrul de cicluri goale naintea
SpinCount; apelrii nucleului
}
RTL_CRITICAL_SECTION, *PRTL_CRITICAL_SECTION;
ntr-adevr, seciunile critice sunt destinate s protejeze datele la accesarea din cteva fire.
Utilizarea multipl a uneia i aceeai seciuni critice de un singur fir nu va genera eroare, ceea ce
este normal.

16. Funcii API pentru seciunile critice n Windows


Mai nti funciile BOOL InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
i BOOL
InitializeCriticalSectionAndSpinCount(LPCRITICAL_SECTION lpCriticalSection, DWORD
dwSpinCount).
Funcia DWORD SetCriticalSectionSpinCount(LPCRITICAL_SECTION lpCriticalSection,
DWORD dwSpinCount) seteaz valoarea cmpului SpinCount i returneaz valoarea precedent
a acestuia.
VOID DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection ) elibereaz resursele,
ocupate de seciunea critic.
VOID LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection) elibereaz seciunea
critic.

17. Clase de seciuni critice n Windows


Clasele CLock i CAutoLock sunt utilizate, de obicei, pentru sincronizarea accesrii variabilelor
clasei, iar CScopeLock este destinat, n special, pentru a fi utilizat n proceduri. Compilatorul
singur va avea grij s apeleze ::LeaveCriticalSection() prin intermediul destructorului. Urmeaz
un exemplu de folosire a CScopeLock.
18
class CLock
{
friend class CScopeLock; CRITICAL_SECTION m_CS;
public:
void Init() { ::InitializeCriticalSection(&m_CS); } void Term() {
::DeleteCriticalSection(&m_CS); }
void Lock() { ::EnterCriticalSection(&m_CS); }
BOOL TryLock() { return ::TryEnterCriticalSection(&m_CS); } void Unlock() {
::LeaveCriticalSection(&m_CS); }
};

18. Depanarea seciunilor critice n Windows


Depanarea seciunilor critice este o ocupaie foarte interesant, dar i dificil. Poi cuta ore i
chiar zile n ir cauza apariiei unei probleme. Erorile, legate de seciunile critice sunt de dou
tipuri: de realizare i de arhitectur. Erorile de realizare pot fi depistate relativ uor i, de regul,
sunt generate de utilizarea incorect (lipsa perechii) a apelurilor ::EnterCriticalSection() i
::LeaveCriticalSection().
Dintre erorile de arhitectur cea mai frecvent este mbriarea fatal , cnd dou fire ncearc
s acceseze dou i mai multe seciuni critice. -seciunile critice sunt executate relativ repede i
nu cer multe resurse de sistem;
-pentru sincronizarea accesrii a mai multor variabile independente este mai bine s fie utilizate
cteva seciuni critice
-nu este recomandat s fie apelate metode ale unor obiecte strine dintr-o seciune critic.
-codul unei seciuni critice va fi redus la minimum;

19. Administrarea proceselor. Realizarea excluderii mutuale. Specificarea problemei


Acest capitol este consacrat implementrii noiunilor proces i sincronizare n cadrul unui sistem
de operare. Mecanismele utilizate sunt bazate pe realizarea principiul excluderii mutuale.
Principiile directoare ale reprezentrii i gestiunii proceselor (contexte, alocarea procesorului)
Realizarea excluderii mutuale
Mecanismele care realizeaz excluderea mutual pentru un set de programe sunt bazate pe un
principiu comun: utilizarea mecanismului de excludere mutual existent deja la un nivel inferior.
Drept rezultat, sunt utilizate variabile comune ale proceselor concurente, iar coerena acestor
variabile trebuie ea nsi s fie garantat. La nivelul de baz exist dou mecanisme elementare:
excluderea mutual la accesarea unui amplasament de memorie i masca ntreruperilor. Aceste
dou mecanisme sunt, n principiu, suficiente pentru toate necesitile.
Specificarea problemei
Vom preciza mai nti problema excluderii mutuale. Fie {p1, p2,...,pn} o mulime de procese pe
care le vom considera ciclice; programul fiecrui proces conine o seciune critic. Excluderea
mutual este asigurat prin dou fragmente de program (prolog i epilog), care ncadreaz
seciunea critic a fiecrui proces.Soluia trebuie s posede urmtoarele proprieti:
-excludere mutual: la fiecare moment de timp cel mult un proces execut seciunea critic,
19
absena blocajelor intempestive dac n seciunea critic nu se afl vreun proces, nici un proces
nu trebuie s fie blocat de mecanismul excluderii mutuale, toleran la defecte: soluia trebuie s
rmn valid i n cazul unor defecte n unul sau n mai multe procese, care se afl n afara
seciunii critice, absena privaiunilor: un proces, care a cerut intrarea ntr-o seciune critic nu
trebuie s atepte un timp infinit simetrie: prologul i epilogul trebuie s fie identice pentru toate
procesele i independente de numrul lor.

20. Excluderea mutual prin ateptare activ


nainte de a descrie implementarea excluderii mutuale prin operaii elementare de blocare i
deblocare a proceselor prezentm un mecanism, care permite simularea efectului acestor operaii,
meninnd procesele n stare activ. Un proces n ateptare activ simuleaz blocarea efectund o
testare repetat a condiiei de depire, care poate fi actualizat de alte procese.

21. Algoritmul lui Dekker


O soluie (algoritmul lui Dekker) poate totui fi construit fr a folosi alte mecanisme de
excludere mutual, n afar de indivizibilitatea accesrii n citire sau actualizarea unui
amplasament de memorie. Prezentm algoritmul pentru dou procese, dei el poate fi extins
pentru un numr arbitrar de procese. Programul folosete trei variabile comune celor dou
procese:
var c : array [0..1] of boolean;
tur : 0..1;
iniializare: c[0]:=c[1]:=false;
tur:=0;
prolog :- pentru procesul i; se va pune j=1-i (cellalt proces)
c[i]:=true;
tur:=j;
test: if c[j] and tur=j then
go to test
endif;
...
epilog : -- pentru procesul i
c[i]:=false;

22. Ateptarea activ n sisteme multiprocesorale: Test & Set


Pentru tratarea cu ajutorul ateptrii active a cazului n care mai multe procese actualizeaz i
consult variabile comune, unele maini au o instruciune, care realizeaz ntr-o manier
indivizibil consultarea i actualizarea unui amplasament de memorie. Aceast instruciune,
adesea numit Test And Set (tas), este utilizat n sistemele multiprocesorale
Efectul lui Test And Set este descris mai jos (Mp[m] desemneaz amplasamentul de memorie cu
adresa m): tas R, m : <blocare acces la Mp[m]>
R:=Mp[m]
Mp[m]:=1
<eliberare acces la Mp[m]>

23. Semaforul instrument elementar pentru excluderea mutual. Definiii


Un semafor s este constituit prin asocierea unui contor cu valori ntregi, notat s.c., i a unui fir de
ateptare, notat s.f. La crearea semaforului contorului i se atribuie o valoare iniial s0 (s00), i
firul de ateptare s.f. este vid. Un semafor servete la blocarea proceselor ateptnd s se produc
o condiie pentru deblocarea lor; procesele blocate sunt plasate n s.f. Proprietile principale ale
sincronizrii cu ajutorul semafoarelor pot fi deduse din cteva relaii invariante: relaii verificate
iniial i care rmn neschimbate dup executarea primitivelor P i V un numr arbitrar de ori.
20
s.c. = s0 np(s) + n v(s) (1)
nbloc(s) = if s.c. 0 then 0 else s.c. endif (2)
nf(s) = min(np(s), s.c.+nv(s)). (3)

24. Semaforul Proprieti

25. Realizarea excluderii mutuale cu ajutorul semafoarelor


Fie nc numrul de procese, care se afl n seciunea critic la un moment concret de timp. Avem:
nc = nf(mutex) nv(mutex) (4)
Proprietile n cauz pot fi verificate aplicnd semaforului mutex relaia (3) din 4.1.3.2:
nf(mutex) = min(np(mutex),
1+nv(mutex)) (5)
Excluderea mutual
Din (5) avem:
nf(mutex) 1+nv(mutex)
i, utiliznd (4), obinem nc 1: excluderea mutual este asigurat.

1. Funcionarea i structura unui nucleu de sincronizare. Strile unui proces. Fire de


ateptare
n cadrul descrierii unui sistem de operare cu ajutorul mainilor abstracte ierarhice (v. cap.9),
nucleul constituie nivelul cel mai inferior, realizat direct pe maina fizic. Maina abstract,
realizat astfel poate fi numit o main a proceselor, care posed, n afara setului de instruciuni
de baz, primitivele care permit crearea, distrugerea i sincronizarea proceselor. Primitivele de
sincronizare, realizate de nucleu, ascund mecanismele fizice de comutare a contextului, de
exemplu, cele oferite de ntreruperi.
Structura unui nucleu de sincronizare depinde, printre altele, de specificaiile mainii fizice i de
specificaiile mainii abstracte care trebuie realizate, ndeosebi de mecanismul de sincronizare
ales.
Strile unui proces. Fire de ateptare
Am considerat pn acuma c un proces se poate afla n dou stri: activ sau blocat. Luarea n
consideraie a alocrii fizice a unui procesor ne impune s descompunem starea activ n dou
stri noi. Un proces activ se numete ales, dac el este n curs de execuie pe un procesor fizic; el
se numete eligibil dac nu poate fi executat din cauza lipsei unui procesor disponibil.
Administrarea proceselor face apel la fire de ateptare. Astfel, fiecrei cauze distincte de blocare
i se asociaz un fir de ateptare pentru a stabili o ordine a proceselor blocate. Mai mult, procesele
eligibile sunt meninute ntr-un fir special de ateptare

2. Administrarea contextelor i schemele primitivelor


Operaia de alocare a procesorului fizic impune pstrarea pentru fiecare proces a unei copii a
contextului. Aceast copie a contextului descrie starea procesorului pentru procesul considerat.
21
n acest scop fiecrui proces i se asociaz o mulime de informaii rezidente n memorie i
numit vector de stare, bloc de control al procesului sau blocul contextului,
Organizarea nucleului
Execuia programelor nucleului este declanat n dou moduri
prin apelarea unei primitive de administrare a proceselor (creare, distrugere, sincronizare, etc.);
aceste primitive sunt realizate sub form de apel al supervizorului,printr-o ntrerupere:
programele de tratare a ntreruperilor fac parte din nucleu, deoarece ntreruperile sunt traduse n
operaii de sincronizare i sunt invizibile la nivelurile superioare.
n ambele cazuri, mecanismul de intrare n nucleu conine salvarea automat a cuvntului de
stare i, eventual, a registrelor procesorului Programul unei primitive a nucleului are urmtoarea
schem general:
prolog; - salvarea contextului i intrarea n seciunea critic
control; -- verificarea drepturilor i a parametrilor
<corpul programului>-- manipuleaz firele proceselor
alocare_procesor; -- programul dispecer i ieirea din seciunea critic

3. Realizarea unui nucleu de sincronizare. Organizarea general


Procesele pot fi create i distruse n mod dinamic i sunt organizate ierarhic conform relaiei de
paternitate. Un proces este creat cu ajutorul primitivei: creare(p, context iniial, atribute)
Atributele unui proces conin prioritatea i drepturile de a executa anumite operaii. Contextul
iniial specific starea iniial a cuvntului de stare, a registrelor procesorului i a spaiului de
lucru asociat procesului. Procesul este creat n starea eligibil.

4. Realizarea unui nucleu de sincronizare. Interfeele


Procesele sunt sincronizate cu ajutorul monitoarelor. Gestiunea ntreruperilor este integrat n
mecanismul monitoarelor: o ntrerupere este asociat unei condiii.
Monitoarele sunt declarate n programele proceselor; un monitor este creat la compilarea
programului, unde el este declarat, i este mai apoi utilizat conform regulilor, definite de limbajul
de programare utilizat.
Procesele pot fi create i distruse n mod dinamic i sunt organizate ierarhic conform relaiei de
paternitate. Un proces este creat cu ajutorul primitivei: creare(p, context iniial, atribute)
Utilizarea primitivelor creare, distrugere, suspendare i reluare este condiionat de un drept,
care figureaz n atributul drepturi al procesului.

5. Realizarea unui nucleu de sincronizare. Structuri i algoritmi


Din momentul crerii sale unui proces i se asociaz un numr fix (nume intern, process handler),
care servete la desemnarea lui i permite accesarea blocului su de context. Blocul de context
conine urmtoarele cmpuri:
Csp: zona de salvare a cuvntului de stare a programului,
Reg : zona de salvare a registrelor generale ale procesorului,
Stare : valoarea strii procesului (eligibil, blocat, ...),
Prio : prioritatea procesului,
Drepturi : drepturile procesului,
Fire : legturi de nlnuire n ierarhia proceselor,
Suc : legturi de nlnuire n firele de ateptare (FA).

22
6. Realizarea unui nucleu de sincronizare. Realizarea monitoarelor.
Monitorul, descris mai jos, n raport cu noiunea clasic de monitor, prezint urmtoarele
diferene: Semantica primitivei semnalizare. Specificarea iniial a primitivei c.semnalizare
precizeaz c unul din procesele care sunt n ateptarea condiiei c (dac exist) este imediat
deblocat, ceea ce implic trecerea temporar n starea blocat a procesului, care execut
semnalizare. Verificarea validitii monitorului este simplificat, deoarece condiia de depire
este consultat n timpul deblocrii: procesul care execut semnalizare poate s se mulumeasc
cu garantarea unei condiii mai slabe dect condiia de depire.

7. Realizarea unui nucleu de sincronizare. Algoritmi de baz


Programul monitorului trebuie s asigure dou funcii:
excluderea mutual pentru procedurile monitorului, blocarea i deblocarea asociate
primitivelor ateptare i semnalizare.
Fiecrui monitor M i sunt asociate urmtoarele structuri de date:
un dispozitiv de excludere mutual M.disp (lact), care poate lua dou valori liber sau ocupat,
un fir de ateptare M.fir asociat acestui dispozitiv. Iniial M.disp=liber, M.fir=<vid>.
Fiecrei condiii c de M i este asociat un fir M.c.fir, un contor de gard M.c.ntrziere i, pentru
condiiile asociate unei ntreruperi, un indicator boolean M.c.ntr_sosit.. Firul proceselor
eligibile este determinat de f_eligibil.

8. Realizarea unui nucleu de sincronizare. Tratarea ntreruperilor


Pentru asigurarea uniformitii mecanismelor de sincronizare fiecrei ntreruperi i se asociaz: o
condiie ntr-un monitor, un proces ciclic care realizeaz tratarea ntreruperilor, n stare de repaus
acest proces este n ateptarea condiiei. O condiie poate fi asociat unui singur nivel de
ntrerupere. Sosirea unei ntreruperi provoac executarea funciei semnalizare pentru condiia
asociat. Prioritatea relativ a ntreruperilor este tradus n prioritatea proceselor, care trateaz
ntreruperile.
9. Realizarea unui nucleu de sincronizare. Tratarea erorilor
Principiul de tratare a erorilor const n blocarea procesului care a provocat eroarea i expedierea
unui mesaj procesului printe, care va putea lua msurile necesare. Pentru aceasta este folosit un
fir special f_eroare
Presupunem c o eroare care are loc n cursul execuiei unui proces provoac o deviere,
tratarea creia se va scrie astfel:
prolog;
p:=<proces apelant>;
intrare(p, f_eroare);
<tratare specific>;
stare[p]:=suspendat; alocare_procesor;

10. Operaii asupra proceselor

12. Crearea i distrugerea proceselor


11.
Problema principal, condiionat de gestiunea dinamic a proceselor, este alocarea contextelor
i numelor proceselor. Pentru aceasta sunt utilizate dou metode principale:
pentru blocurile contextelor sunt rezervate un numr fix de amplasamente; amplasamentele
neutilizate sunt determinate de o valoare special (nil) a cmpului stare al lor; fiecare bloc este
desemnat printr-un numr, care este numrul utilizat pentru desemnarea procesului asociat;
amplasamentele rezervate blocurilor de context sunt alocate dinamic n memorie; numerele sunt
alocate proceselor de asemenea n mod dinamic i un tabel de coresponden, asociaz numrului
fiecrui proces adresa n memorie a blocului su de context.

23
Distrugerea unui proces trebuie s implice eliberarea resurselor, care i fuseser alocate. Printre
aceste resurse, doar numele i contextul sunt gestionate direct de nucleu; celelalte resurse, cum ar
fi fiierele, sunt preluate de mecanisme specifice.
Distrugerea unui proces, care se afl n seciunea critic poate conduce la o blocare.

1. Suspendarea i reluarea
Primitiva suspendare permite procesului-printe s controleze activitatea unui proces
descendent, ntrerupnd n mod forat execuia acestuia. O utilizare curent este suspendarea
unui proces, angajat ntr-o bucl infinit. Procesul ntrerupt n acest mod este transferat ntr-un
fir de ateptare special,
Efectul primitivei suspendare poate fi ca i al unei devieri i programul de tratare poate fi
analogic. Suspendarea unui proces pune o problem analogic celei de distrugere. Primitiva de
reluare permite unui proces s deblocheze un fir suspendat, dup modificarea eventual a
contextului su.

2. Excluderea mutual i alocarea procesorului


Excluderea mutual este realizat prin mascarea ntreruperilor. Pentru aceasta trebuie pregtit
masca ntreruperii n cuvntul de stare, care ar specifica programele asociate primitivelor de
tratare a ntreruperilor. Dac notm prin proces_ales o variabil global, care conine numrul
procesului ales, iar prin salv_csp locaiunea n care a fost salvat cuvntul de stare a procesorului
la apelarea supervizorului sau la ntrerupere, prologul va fi de forma:
prolog:
<mascarea ntreruperilor> -- masca n cuvntul de stare
csp[proces_ales] := salv_csp;
salv_registre(Reg[proc_al]);

3. Realizarea pentru cazul monoprocesor


Excluderea mutual este realizat prin mascarea ntreruperilor. Pentru aceasta trebuie pregtit
masca ntreruperii n cuvntul de stare, care ar specifica programele asociate primitivelor de
tratare a ntreruperilor. Dac notm prin proces_ales o variabil global, care conine numrul
procesului ales, iar prin salv_csp locaiunea n care a fost salvat cuvntul de stare a procesorului
la apelarea supervizorului sau la ntrerupere, prologul va fi de forma:
prolog:
<mascarea ntreruperilor> -- masca n cuvntul de stare
csp[proces_ales] := salv_csp; salv_registre(Reg[proc_al]);

4. Realizarea pentru cazul unui sistem multiprocesoral


Regimului de funcionare multiprocesor i sunt specifice dou instruciuni:
Test and Set(R, m) :asigur excluderea mutual
ntrerupere(k) :provoac o ntrerupere a procesorului k.
O ntrerupere sau un apel de supervizor provoac introducerea cuvntului de stare i a registrelor
procesorului n cauz ntr-o stiv n memorie, proprie acestui procesor.

5. Procese i fire n Linux.


n Linux procesele se nmulesc prin clonare: apelul de sistem, care creaz un proces nou, se
numete clone, iar procesul fiu este o copie aproape exact a procesului printe, doar c mai
departe va executa codul su, iar procesul printe ceea ce este scris dup apelarea lui clone.

24
6. Crearea i distrugerea proceselor. Demoni n Linux. Obinerea informaiilor despre
procese
Crearea proceselor
Procesele sunt create prin utilizarea funciilor din familia exec ale bibliotecii Linux standard:
execl, execlp, execle, execv, execve, execvp. Dei formatul de apelare este diferit, n ultim
instan execut acelai lucru: nlocuiesc codul din procesul curent cu codul, care se afl n
fiierul indicat. Fiierul poate fi un fiier binar executabil Linux, un script al interpretorului
limbajului de comand, un fiier binar de un alt format.
Distrugerea proceselor
La terminarea execuieia unui proces , el este distrus elibernd toate resursele, care fusese alocate
anterior. Dac procesul printe se termin naintea procesului descendent, ultimul devine orfan
. Toi orfanii sunt nfiai n mod automat de programul init, executat de procesul cu numrul
1, care duce evidena terminrii execuiei lor. Dac a fost terminat deja execuia procesului
descendent, iar procesul printe nu este gata s recepioneze de la sistem semnalul despre acest
eveniment, descendentul nu dispare total, ci este transformat n Zombie; n cmpul Stat aceste
procese sunt notate cu litera Z. Procesele
Zombi nu cer timp de procesor, dar n tabelul proceselor este pstrat linia lor i structurile
respective ale nucleului nu sunt eliberate. Dup terminarea execuiei procesului printe, procesul
Zombi orfan devine pentru o perioad scurt de timp descendentul lui init, ca mai apoi s
moar definitiv.
Demoni n Linux
Demon n Linux este numit procesul predestinat s lucreze n regim de fond fr terminal i care
execut anumite operaii pentru alte procese
De obicei, demonii i ndeplinesc n linite lucrul i ne amintim de ei doar n cazul unor situaii
ieite din comun: spaiu insuficient demonul singur informnd utilizatorul despre aceasta, sau
refuz s lucreze i suntei ntrebat de ef cnd se vor termina problemele cu imprimant .
Obinerea informaiilor despre proce
Pentru obinerea informaiilor despre procese, vizualizate de programele ps i top, Linux-ul
utilizeaz un sistem special de fiiere, numit procfs. n majoritatea distributivelor el este
25
iniializat la lansarea sistemului de operare cu titlul de catalog /proc. Datele despre procesul cu
numrul 1 se afl n subcatalogul /proc/1, despre procesul cu numrul 182 - n /proc/182, etc.
Toate fiierele, deschise de un proces, sunt reprezentate sub forma unor referine simbolice n
catalogul /proc/<pid>/fd, iar referina la catalogul rdcin este pstrat ca /proc/<pid>/root.

7. Gestiunea informaiei. Principii. Definiii generale. Interpretarea numelor


Suportul fizic al informaiei este memoria. La acest nivel memoria poate fi considerat un ir de
amplasamente caracterizate printr-un coninut. Un proces desemneaz un amplasament printr-un
nume folosit de unitatea central pentru a citi i la necesitate a modifica coninutul acestui
amplasament. Coninutul unui amplasament poate fi interpretat ca un ntreg, o instruciune .
Reprezentarea extern este convertit n cuplul
numele amplasamentului devenind numele obiectului. Numim durat de existen sau de via a
unui obiect perioada de timp n care acesta este accesibil.
Sistemul de operare i tipul obiectului determin durata de existen a obiectului. Numim obiect
accesibil un obiect cruia i s-a asociat o cale de acces. Numim obiect partajat orice obiect care
este accesibil mai multor utilizatori
Interpretarea numelor
La nivelul SO obiectele sunt memorate n amplasamente, iar procesele le pot accesa prin nume.
Stabilirea cii de acces la un obiect prin compunerea funciilor de acces ataate se numete
legare. Se spune c un obiect este legat atunci cnd pentru el este stabilit calea de acces.

8. Gestiunea informaiei. Construirea cii de acces


Fie F1 i F2 doua funcii de acces, F1 permind accesul de la o1 la o2, iar F2 de la o2 la o3: o1F1o2
i o2F2o3, accesul de la o1 la o3 fiind realizat prin compunerea acestor funcii. Calea de acces de
la o1 la o3 poate fi construit prin metoda substituiei sau prin metoda nlnuirii.
Metoda substituiei stabilete o nou funcie de acces F3, o3 fiind accesat direct de la o1: o1F3o3.
Metoda are avantajul c accesul este rapid, dar i dezavantajul c o2 este iremediabil pierdut.
Metoda nlnuirii cere ca la fiecare accesare a obiectului o3 pornind de la o1 s fie parcurs calea
o1F1o2F2o3. Nu se pierde nici o informaie, dar accesul este mai lent.

9. Gestiunea informaiei. Structura reprezentrilor. Descriptori


Numele obiectului compus se afl ntr-un amplasament al crui coninut este un descriptor.
Utilizarea unui descriptor pentru a accesa un obiect impune trecerea printr-un program de
accesare care va interpreta acest descriptor i prezint urmtoarele avantaje:
n cazul n care obiectul este pasat ca parametru unei proceduri este suficient s fie transmis
descriptorul sau adresa acestuia: este mult mai simplu s administrezi informaii de volum fix i
cunoscut,
descriptorul constituie un punct de trecere impus pentru accesarea reperat a obiectului i, ca
rezultat, poate servi la implementarea unor controale ale accesrii, de msurare, etc.,
descriptorul asigur un acces indirect la obiectul reperat, ceea ce permite modificarea dinamic a
cii de acces (substituirea unui obiect printr-un alt obiect) sau deplasarea unui obiect n memorie
fr recompilarea modulului surs,
partajarea obiectelor ntre mai muli utilizatori cu drepturi sau proceduri de accesare diferite
poate fi realizat construind tot atia descriptori, ci utilizatori exist; aceti descriptori
repereaz acelai obiect i au aceleai informaii de localizare fizic.

10. Gestiunea informaiei. Contexte i medii


Vom numi lexic o mulime de identificatori. Mulimea obiectelor, desemnate de identificatorii
lexicii la un moment de timp dat, se numete context asociat la aceast lexic. Starea de execuie
a unui context este starea mulimii obiectelor, care constituie acest context.
Fiind dat doar lexica nu putem defini un context: mai trebuie s fie specificate regulile de
interpretare, care vor fi aplicate identificatorilor din cadrul lexicii.
26
Vom numi mediu mulimea format dintr-o lexic i informaiile (programe, date, reguli de
interpretare) necesare la utilizarea acestei lexici. Aceste informaii pot lua diferite forme n
dependen de limbajul utilizat.

11. Gestiunea informaiei. Legarea


Numim legare procesul construirii unei ci de acces. Legarea obiectelor unui program poate fi
efectuat la diferite momente de via a programului n sistem:
n momentul scrierii programului.- Un atare program poate fi imediat executat, dar orice
modificare este dificil i conine un risc ridicat de eroare.
La una din fazele de translatare
La o faz de ncrcare i editare a legturilor- ncrcarea i editarea legturilor pot fi combinate
ntr-o singur operaie sau realizate separat.
n timpul execuiei; legtura este numit n acest caz dinamic.

12. Gestiunea informaiei. Protecia


Vom nelege prin termenul protecie mulimea metodelor i mecanismelor, care vizeaz
specificarea regulilor de utilizare a obiectelor i garanteaz respectarea acestor reguli.
Protecia este asigurat de o combinaie de dispozitive fizice i logice. Exist legturi strnse
ntre desemnarea obiectelor i protecia lor. Trei observaii, legate de protecie:
O modalitate simpl de a interzice unui proces orice acces la un obiect const n suprimarea
tuturor cilor de acces la acest obiect, altfel spus, de a le retrage din contextul procesului.
Atunci cnd operaiile permise asupra unui obiect sunt specificate prin apartenena la o clas sau
un tip, este posibil verificarea prealabil execuiei n cazul n care verificarea este fcut n
momentul execuiei, o procedur de acces faciliteaz implementarea verificrii i reduce riscul
unor erori.

13. Gestiunea informaiei. Domenii i drepturi de acces


Regulile de utilizare pot fi exprimate specificnd drepturile de acces ale fiecrui obiect activ,
adic mulimea de operaii pe care obiectele active sunt autorizate s le execute asupra altor
obiecte.
s definim entitile crora sunt ataate drepturile
a posibilitii evoluiei dinamice a drepturilor unui proces,
a faptului, c mai multe procese pot avea, n aceleai circumstane, acelai set de drepturi. Un
domeniu definete:
o mulime de obiecte accesibile sau context,
pentru fiecare dintre aceste obiecte, o mulime de operaii permise (drepturi),
un mecanism, care asigur accesul la aceste obiecte, respectnd restriciile de mai sus.

14. Gestiunea informaiei. Problemele proteciei


Prezentm succint cteva probleme, legate de implementarea proteciei n sistemele informatice.
Protecie ierarhizat
Subsisteme reciproc suspicioase
Acordarea i retragerea drepturilor de acces.
- Problema pus aici este problema modificrii dinamice a drepturilor de acces.

15. Desemnarea i legarea fiierelor i intrrilor-ieirilor


Vom examina aici modul de desemnare a fiierelor, legarea lor cu programele, care le utilizeaz
i relaiile lor cu intrrile-ieirile. Nu avem nevoie pentru aceasta s cunoatem organizarea
27
intern a unui fiier, interesndu-ne doar organizarea lui ca un tot ntreg n cazul unui limbaj de
comand sau al unui program.

16. Ci de acces la un fiier


Un fiier este desemnat de ctre utilizatorii externi cu ajutorul identificatorilor nume externe.
Aceste nume externe sunt definite ntr-un mediu comun mai multor utilizatori. Structurile de
date, care permit construirea cii de acces la un fiier pornind de la unul din numele sale externe,
sunt numite cataloage sau directorii.
n afara numelor interne i externe, adesea mai este definit un nume, zis local sau temporar. Un
nume local este definit ntr-un mediu propriu unui utilizator i are o existen doar temporar
Acces selectiv: interpretarea numelor locale permite introducerea unui acces selectiv la un fiier
n dependen de utilizator.

17. Desemnarea extern a fiierelor. Cataloage. Organizarea arborescent


Un catalog definete , un mediu, adic o mulime de identificatori i regulile de interpretare a
acestor identificatori. Organizarea cea mai simpl poate fi schematic reprezentat de un tabel,
care asociaz unui identificator descriptorul fiierului pe care acesta l desemneaz.
O organizare arborescent este definit dup cum urmeaz:
Unui catalog i se asociaz o mulime (care poate fi vid) de alte cataloage i fiiere; aceste
obiecte se numesc incluse n catalog; Exist un catalog, i numai unul singur, numit rdcin,
care nu are tat. Orice alt catalog are un tat, i doar unul singur. Relaia de legtur definete o
arborescen de cataloage cu rdcina n catalogul rdcin.

18. Legarea fiierelor cu fluxurile de intrare-ieire


Un program schimb informaii cu mediul exterior prin intermediul unor operaii de intrare-
ieire. care permit comunicarea cu un fiier sau un periferic. n momentul elaborrii programului
nu este nc cunoscut cu care fiier sau periferic se vor produce intrrile-ieirile; adesea este
necesar s se utilizeze fiiere sau periferice, care difer de la o execuie la alt.
Un flux de intrare-ieire este un obiect, care posed toate caracteristicile unui periferic de intrare-
ieire (nume, operaii de acces), dar care nu are o existen real
La realizarea asocierii este folosit legarea prin nlnuire. Fiecrui flux i se asociaz un
descriptor. Operaia de asociere cere ca acest descriptor s conin un pointer spre descriptorul
fiierului sau perifericului, pe care l asociaz fluxului.

19. Legarea programelor i datelor


Program interpretat

Program compilat

28
20. Etapele de via a unui program
Program interpretat

2.Program compilat

Compararea acestor dou scheme pune n eviden diferena important ntre interpretare i
compilare: modificarea unui program interpretat are efect imediat, n timp ce n cazul compilrii
suntem nevoii s parcurgem toate etapele, ncepnd cu translatarea.

21. Funcionarea unui ncrctor


Un ncrctor este destinat s pun n form absolut un program obiect n adrese relative.
Aceast operaie const n nlocuirea tuturor adreselor relative la originea modulului prin adrese
absolute. Pentru aceasta se va efectua un lucru preliminar n faza de translatare:
nregistrrilor modulului obiect, care conin o adres translatabil, li se va ataa un indicator, care
va fixa poziia acestei adrese n interiorul nregistrrii (dac poziia nu este specificat n mod
implicit). Adresele translatabile pot s apar:
sau n cmpul de adres al instruciunii,
sau n cazul datelor, n expresii pentru calcularea adresei, destinate a fi utilizate ca relaii de
direcionare sau s fie ncrcate n registrele de baz.

29
22. Funcionarea unui editor de legturi
Principiile de funcionare a unui editor de legturi:
El este obligat:
s determine adresa de implantare a acestuia, s ndeplineasc modificrile informaiilor
translatabile, s realizeze legarea referinelor externe
23. Legarea prin substituie
n cazul editrii legturilor prin substituie fiecare referin la un obiect extern n cadrul unui
modul este nlocuit prin adresa absolut a acestui obiect.
Prin definiie, un modul A utilizeaz un modul B dac programul lui A face referine la obiecte,
coninute n B. Deoarece graful relaiei utilizeaz poate conine circuite, editarea legturilor
folosete un algoritm n doi pai. Primul pas construiete planul implantrii modulelor i
determin adresa absolut a tuturor obiectelor externe; al doilea pas soluioneaz referinele la
aceste obiecte.

24. Legarea prin nlnuire


Vector de transfer
Metoda vectorului de transfer este relativ puin utilizat pentru programele compilate, totui
descriem principiile acestei tehnici, deoarece:
ea este aplicabil n cazul programelor interpretate sau celor combinate,
ea permite introducerea ntr-o form primitiv a noiunii de segment de legtur, noiune
dezvoltat n continuare.
Fiecare modul conine un tabel, numit vector de transfer, care are cte o intrare pentru o
referin extern. n corpul modulului fiecare referin la un obiect extern este nlocuit printr-o
referin indirect la intrarea respectiv a vectorului de transfer.
Registre de baz
Ca i n cazul ncrctorului, adresarea cu ajutorul registrelor de baz simplific lucrul editorului
de legturi. Exist dou moduri distincte de utilizare a acestor registre:
-Registrele de baz sunt accesibile utilizatorilor: n acest caz sunt definite convenii de utilizare
care permit, de exemplu, folosirea registrelor de baz specificai pentru a adresa un subprogram,
o zon de date, un bloc de parametri etc. Aceste convenii sunt implementate de ctre
translatoare sau direct de ctre utilizatori, dac acetia programeaz n limbaj de asamblare.
-Registrele de baz sunt administrate de sistemul de operare i sunt inaccesibili utilizatorilor.
25. Mecanisme de gestiune a obiectelor. Segmentarea
Segmentarea poate fi considerat o extensie a adresrii cu ajutorul registrelor de baz, care evit
problemele realocrii acestor registre, atunci cnd este necesar schimbarea segmentului. Un
segment este p mulime de informaii considerat ca o unitate logic i desemnat de un nume;
reprezentarea sa ocup o mulime de amplasamente adiacente (contigue). Un segment poate fi de
lungime variabil. O informaie este desemnat de un cuplu care se numete adres segmentat
.Este important s se noteze, c segmentele sunt reciproc independente att din punct de vedere
fizic, ct i logic.
pentru utilizator: necesitatea de a se conforma conveniilor de folosire a registrelor de baz,
pentru sistemul de operare: necesitatea gestiunii alocrii registrelor de baz, dac acestea sunt n
numr insuficient.

30
26. Gestiunea fiierelor. Noiuni generale
Acest capitol este consacrat studierii detaliate a gestiunii fiierelor n sistemele de operare:
organizarea logic, reprezentarea informaiei, realizarea funciilor de acces, protecia i
securitatea. Noiunile menionate sunt ilustrate cu exemple de gestionare a fiierelor n sistemele
de operare Windows i Unix.

27. Funciile unui sistem de gestiune a fiierelor


Funciile principale, asigurate de un sistem de gestiune a fiierelor sunt:
crearea unui fiier (definirea numelui, alocarea eventual a spaiului),
distrugerea unui fiier (eliberarea numelui i a spaiului, alocat fiierului),
deschiderea unui fiier (declararea inteniei de a folosi fiierul cu ajutorul funciilor de
acces i a drepturilor specificate),
nchiderea unui fiier deschis (interzicerea oricrui acces ulterior),
diverse funcii de consultare i modificare: citire, scriere, modificarea lungimii, etc.
(detaliile legate de aceste funcii depind de organizarea logic a fiierului).

28. Organizarea general a unui sistem de gestiune a fiierelor


SGF realizeaz corespondena ntre organizarea logic i organizarea fizic a fiierelor.
Organizarea logic, unic cunoscut de utilizator, este determinat de consideraii de comoditate
i universalitate; organizarea fizic, legat de suporturile de memorie utilizate, este determinat
de considerente de economisire a spaiului i eficacitatea accesului. Aceste dou organizri sunt,
n genere, diferite fiecare fiind definite prin structuri de date proprii, controlate de SGF. Drept
rezultat, SGF sunt construite conform unei structuri ierarhice, care are cel puin dou niveluri
corespunztoare celor dou organizri, menionate mai sus: orice aciune, definit la nivelul logic
este interpretat de un set de aciuni la nivelul fizic. Pentru facilitarea concepiei sau pentru a
rspunde unor necesiti specifice (portabilitate, de exemplu) pot fi definite i unele nivele
intermediare.

29. Organizarea logic a fiierelor. Acces secvenial


Pentru specificarea organizrii logice a unui fiier definim mai nti o structur abstract a
fiierului. Pentru aceasta vom utiliza un model simplu de descriere a datelor, care ne va permite
s caracterizm nregistrrile, s definim organizarea global a fiierului i s exprimm funciile
de acces. Vom preciza mai apoi reprezentarea concret a informaiilor, care se conin n fiier.
Un fiier este o mulime de nregistrri (articole). Fiecrui articol i este asociat un numr
constant de n atribute, aceleai pentru toate articolele. Un atribut este definit printr-un nume i un
domeniu de valori. Numele este pentru desemnarea atributului; dou atribute distincte au nume
diferite. Domeniul de valori specific valorile pe care le poate lua atributul.
Acces secvenial
n cadrul unei organizri secveniale nregistrrile sunt ordonate i pot fi desemnate de valori
ntregi consecutive. Totui, aceste numere de ordine nu pot fi folosite n cadrul funciilor de
acces; este permis doar utilizarea funciei succesor. Accesul secvenial este modul obinuit de
utilizare a unui fiier, implantat fizic pe un suport n care accesarea amplasamentelor este ea
nsi secvenial, cum ar fi banda magnetic.
Un fiier f poate fi deschis pentru citire sau scriere. Unele organizri autorizeaz scrierea
ncepnd de la o nregistrare oarecare (v. exemplul din capitolul 9). Considerm, c scrierea se
face la sfritul fiierului i deschiderea pentru scriere iniializeaz fiierul n vid.

31
30. Organizarea logic a fiierelor. Acces direct. Cheie unic
n cadrul organizrilor cu acces direct funciile de acces sunt exprimate ca funcii ale atributelor
nregistrrilor; aceste atribute sunt valori ale diferitor cmpuri. Se numete cheie orice cmp al
unei nregistrri valoarea cruia poate servi la identificarea nregistrrii. Conform organizrii
adoptate, una sau mai multe cmpuri pot servi drept cheie.
Cheie unic
ntr-un fiier cu cheie unic fiecare nregistrare conine o singur cheie, care identific
nregistrarea fr ambiguitate; restul nregistrrii este informaia propriu-zis. Dou nregistrri
distincte vor avea totdeauna dou valori diferite ale cheii. Definim o procedur cutare(cheie,
al), care pentru orice valoare a cheii:
sau pune la dispoziie adresa logic al (unic) a nregistrrii pentru care cheia posed valoarea
dat (caz de succes)
sau semnalizeaz cu ajutorul unui mecanism descris, c o atare nregistrare nu exist (caz de
eec): excepie, cod de condiie; valoarea al este adresa la care nregistrarea ar putea fi inserat
(valoare special, dac nu mai este spaiu liber).

31. Organizarea logic a fiierelor. Chei multiple


Este cazul cnd pot fi utilizate mai multe chei pentru a desemna o nregistrare. n caz general, pot
exista mai multe nregistrri pentru care o cheie particular are o valoare dat. O cheie, valoarea
creia determin nregistrarea n mod univoc, se numete cheie primar; acest termen este
aplicat, prin extensie, i pentru o combinaie de chei.
Tehnica de baz folosit pentru manipularea unui fiier cu chei multiple este organizarea
multilist. Este utilizat cte un indice distinct pentru fiecare cheie. Fiecare intrare a tabelului
indicilor, asociat unei chei concrete, care corespunde unei valori distincte a acestei chei,
puncteaz topul unei liste n care sunt toate nregistrrile pentru care cheia considerat posed
valoarea dat. Pentru realizarea acestor liste fiecare nregistrare trebuie s conin tot atia
pointeri cte chei ale referinelor distincte exist

32. Organizarea fizic a fiierelor. Implantare secvenial. Implantare non contigu


n modelul ierarhic, prezentat mai sus, problema organizrii fizice a fiierelor poate fi formulat
astfel: s se elaboreze o implantare n memoria secundar a unei mulimi de fiiere respectnd
urmtoarele ipoteze:
orice fiier este definit logic ca un segment, adic ca o mulime de informaii, care ocup
amplasamente adiacente, reperate prin adrese logice sau deplasri,
dac nu exist concretizri particulare (band magnetic, de exemplu), memoria
secundar este de tip disc, organizat ca o mulime de blocuri de lungime fix. Modul de
adresare a blocurilor este precizat n 6.3.3; este suficient s se cunoasc c blocurile sunt
desemnate de adrese fizice ordonate, adrese consecutive desemnnd blocuri adiacente.
Implantare secvenial
n acest caz fiecare fiier ocup o mulime de blocuri consecutive n memoria secundar. Este
unicul mod de implantare n cazul unei benzi magnetice: fiierele sunt aranjate consecutiv pe
band, fiecare fiind separat de urmtorul cu ajutorul unui simbol, numit sfrit de fiier (end of
file, EOF). Un EOF dublu marcheaz sfritul prii utilizate a benzii. Descriptorul unui fiier
este plasat la nceputul fiierului i, adesea, repetat la sfritul fiierului. n interiorul fiierului
nregistrrile sunt aranjate consecutiv; dac lungimea lor este variabil, ea va fi prezent la
nceputul fiecrei nregistrri. Caracterul EOF este detectat n mod automat de controlerul

32
mecanismului de derulare a benzii. O operaie cutarea EOF-ului fiierului permite saltul de la
un fiier la altul pentru cutarea unui fiier cu numele dat.
Implantare non contigu
Dac abandonm restricia contiguitii implantrii, memoria secundar se transform ntr-o
resurs banalizat, blocurile memoriei secundare fiind echivalente din punctul de vedere al
alocrii lor. Pentru nceput introducem informaiile necesare pentru realizarea funciilor de acces
33. Organizarea fizic. Blocuri nlnuite. Tabele de implantare. Alocarea memoriei
secundare
Blocurile fizice, care conin amplasamente logice consecutive sunt nlnuite ntre ele; pentru
aceast nlnuire trebuie s fie rezervat n fiecare bloc un pointer.
Tabele de implantare
n cazul accesului direct timpul de acces la un bloc trebuie s nu depind de adresa sa, ceea ce
poate fi obinut punnd toi pointerii ntr-un tabel unic de implantare. Descriem mai multe
variante ale acestei metode, care difer prin modul de organizare a tabelului. Problema principal
este garantarea uniformitii timpilor de acces pentru tabelele de lungime mare i permiterea
inserrii i distrugerii blocurilor n orice punct al fiierului.
Tabel unic
Tabel nlnuit
Tabele cu mai multe nivele
Alocarea memoriei secundare
Problema alocrii memoriei secundare poate fi pus n termeni similari cu cea a memoriei
principale; restriciile principale sunt:
alocarea prin blocuri de lungime fix,
costul ridicat al accesului,
caracteristicile proprii fiecrui suport: organizarea pe piste, dispozitive de citire-scriere mobile
sau fixe.
Interfaa alocatorului memoriei secundare conine dou primitive:
cerere_zon(n,a) date : n (ntreg), numrul de blocuri contigue cerute
rezultat : a (adres), adresa primului bloc
excepie : numr de blocuri insuficiente
eliberare_zon(n,a) date : n (ntreg), numrul de blocuri contigue eliberate
a (adres), adresa primului bloc
excepie : numr de blocuri eliberate

34. Realizarea funciilor de acces elementar. Organizarea descriptorilor. Localizarea


fizic
Un descriptor de fiier trebuie s conin informaii de tipuri diverse:
informaii pentru localizarea fizic,
informaii referitor la utilizare,
informaii asociate proteciei i securitii.
Localizarea fizic
Informaiile pentru localizarea fizic a unui fiier au fost descrise n 6.3. Dac aceste informaii
sunt de dimensiune fix i redus (implantare contigu, blocuri nlnuite) ele se conin direct n
descriptor; n caz contrar (tabele de implantare nlnuite sau pe mai multe niveluri), descriptorul
conine doar un pointer la tabelul de implantare i nite informaii sintetice, cum ar fi
dimensiunea fiierului, dimensiunea tabelului de implantare, etc.

33
35. Organizarea fizic a fiierelor. Informaii de utilizare
Informaiile, legate de utilizarea unui fiier pot fi clasificate dup cum urmeaz:
Informaii de stare. Aceste informaii definesc starea curent a fiierului: deschis sau
nchis, gradul de partajare (numrul de utilizatori, care au deschis simultan fiierul),
disponibilitatea pentru modificare, etc.
Informaii despre coninutul fiierului. Aceste informaii permit interpretarea coninutului
fiierului. Este posibil s se asocieze unui fiier un tip, care specific operaiile permise.
Sunt utilizate, de exemplu, tipurile text ASCII, binar translatabil, binar absolut,
catalog, etc. Chiar la deschiderea unui fiier putem verifica, dac utilizarea pretins
este compatibil cu tipul fiierului.
Informaii despre structura logic. Aici pot fi plasate informaiile care permit trecere de
la structura logic la structura fizic a fiierului. De exemplu, n cazul nregistrrilor de
lungime fix este convenabil s se aleag lungimea nregistrrii multiplu sau submultiplu
al lungimii blocului fizic. Raportul lungimea blocului/lungimea nregistrrii, adesea
numit factor de bloc, figureaz n cadrul descriptorului.
Informaii despre utilizrile precedente. Aceste informaii pot fi de natur statistic
(numrul deschiderilor, accesrilor, intervalul mediu timp de ntre accesri, gradul mediu
de partajare, etc.) i au scopul de a nelege mai bine funcionarea sistemului pentru
ameliorarea lui. De exemplu, informaiile despre utilizare pot ajuta la o gestiune
automat a ierarhiei memoriei secundare: fiierele neutilizate o perioad lung pot fi
transferate ntr-o memorie de arhivare pentru a elibera loc n memoriile cu acces rapid.
Aceste informaii mai pot fi utilizate pentru diferite funcii de securitate: nregistrarea
datei ultimului acces sau a ultimei modificri permite un control al utilizrii fiierului.

34
36. Crearea i distrugerea fiierelor.
Specificarea interfeei
Parametrii furnizai sunt:
1. numele fiierului
2. tipul (opional)
3. lungimea (opional)
4. starea iniial (opional)
Cel mai frecvent, parametrii starea iniial i lungimea nu sunt furnizai, avnd valori implicite:
lungimea = 0, fiierul este nchis, lista de acces predefinit.
Operaii
1. s se creeze un descriptor pentru fiier, obinem astfel un nume intern,
2. dac numele furnizat este un nume extern, s se creeze o intrare a acestui nume n
catalogul curent,
3. s se aloce memorie fiierului; chiar dac lungimea sa este nul, un fiier conine un
antet, care ocup primul su bloc,
4. s se iniializeze descriptorul cu informaiile de localizare, lungime, protecie (lista
drepturilor iniiale de acces),
5. dac descriptorul nu se conine direct n catalog, s se introduc o intrare n catalog cu
numele intern al fiierului (adresa descriptorului).
Cazuri anormale
1. nume furnizat incorect (incorect construit sau care desemneaz un fiier deja existent);
2. memorie insuficient n memoria secundar.
Distrugerea
Specificarea interfeei
Unicul parametru furnizat este numele fiierului. Efectul operaiei este de a suprima orice acces
ulterior la fiier, invalidnd toate numele acestuia i elibernd toate resursele pe care fiierul le
utilizeaz (intrri n tabele, memorie).
Operaii
1. s se elibereze toat memoria, care a fost alocat fiierului;
2. s se elibereze memoria alocat descriptorului i numele intern s devin reutilizabil (sau
invalidat definitiv);
3. suprimarea numelui extern al fiierului n catalogul, care-l include, de asemenea, dac
este cazul, n tabelul numelor locale.

4. Deschiderea i nchiderea fiierelor.


Parametrii operaiei de deschidere sunt:
1,numele fiierului
35
2,condiiile de utilizare:
-modul de acces (citire, scriere, execuie, etc.)
-procedurile de acces (secvenial, direct, sincron, etc.)
-parametrii de transfer (tampoane, etc.)
Operaii
La deschidere vor fi realizate urmtoarele operaii:
localizarea fiierului i, eventual, transferarea lui pe un suport mai rapid; cerere eventual de
montare a acestuia,
controlarea dreptului utilizatorului de a deschide fiierul n modul specificat (consultnd lista de
acces),
crearea unui descriptor local (dac fiierul nu posed deja unul n mediul curent) i atribuirea
unui nume local,
alocarea eventual a memoriei pentru zonele tampon de intrare-ieire; n unele cazuri programul
de intrare-ieire al canalului poate fi construit n dependen de condiiile specificate pentru
transfer.
nchiderea
Specificarea interfeei
Unicul parametru necesar este numele fiierului. Efectul operaiei este de a interzice orice acces
ulterior la fiier i de a-l transfera ntr-o stare coerent i stabil, redndu-i definitiv toate
modificrile operate n perioada ct a fost deschis.
Operaii
Descriptorul fiierului este actualizat (dac aceasta nu a fost fcut anterior) pentru a nregistra
definitiv modificrile operate n perioada ct a fost deschis; descriptorul local este suprimat,
numele local putnd fi reutilizat. Memoria ocupat de zonele tampon i procedurile de intrare-
ieire este eliberat, dac ea a fost alocat doar pentru perioada de deschidere a fiierului.
Fiierul este, eventual, transferat pe suportul su de origine; o cerere de demontare este trimis
dac suportul de origine este amovibil.

1. Acces elementar la informaii


Parametrii primitivelor de transfer permit specificarea:
metodei de acces utilizate, care determin modul de desemnare a nregistrrilor -
obiectul transferului (acces secvenial, direct, cu chei, etc.),
sincronizarea transferului (transfer sincron sau asincron); n cazul unui transfer asincron,
modul de deblocare a unui proces apelant,
zonele tampon utilizate (specificate de ctre utilizator sau furnizate de SGF).
Accesul elementar (citire sau scriere) la o nregistrare a fiierului const din dou etape:
determinarea adresei fizice a nregistrrii plecnd de la desemnarea sa logic; pentru
aceasta sunt utilizate metodele descrise n 6.2,
executarea transferului fizic; va fi folosit adresa obinut mai sus i primitivele de acces
fizic la disc (v.cap.4).

2. Securitatea fiierelor. Redundana intern i restabilirea informaiilor. Salvare


periodic

36
Securitatea fiierelor este asigurat, dup cum a fost menionat, prin redundana informaiilor.
Redundana poate fi introdus n dou moduri: salvarea periodic a unor informaii, pentru a
putea restabili o stare anterioar n caz de distrugere, i redundana intern, care permite
reconstituirea unor informaii devenite incoerente din cauza unui accident de origine fizic sau
logic, care a provocat o alterare parial.
Redundana intern i restabilirea informaiilor
Principiul redundanei interne const n organizarea structurilor de date astfel, nct orice
informaie s poat fi obinut prin cel puin dou ci distincte. Se reduce astfel probabilitatea c
distrugerea accidental a unei pri a informaiei va conduce la pierderea iremediabil a
coninutului fiierului.
Tehnicile frecvent utilizate n acest scop sunt urmtoarele:
pentru un fiier pstrat pe disc n blocuri nlnuite se va folosi nlnuirea dubl
(succesor-predecesor),
se va include n fiecare bloc un pointer la blocul, care conine descriptorul, sau
indicaia c blocul este liber,
se va include n descriptor numele simbolic al fiierului i un pointer la catalogul
n care se conine fiierul,
parte a descriptorului va fi dublat (de exemplu, n primul i ultimul bloc al
fiierului).

Salvare periodic
Se poate apriori conveni s fie salvate, la intervale regulate de timp, toate informaiile coninute
ntr-un SGF. Admind o salvare pe discul dur la un debit de 20 Mo/s, durata acestei operaii este
de aproximativ 50 s pentru 1 Go. Poate fi realizat salvarea doar a modificrilor, care au avut loc
pentru ultima perioad, concomitent cu lucrul normal al sistemului.

3. Protecia fiierelor
Protecia fiierelor folosete principiul listelor de acces. O list de acces, asociat unui fiier,
conine drepturile fiecrui utilizator asupra fiierului, adic mulimea operaiilor care i sunt
permise. n practic, diferite convenii permit reducerea listei. Este definit mai nti mulimea
drepturilor atribuite implicit fiecrui utilizator (mulime, care poate fi vid); lista de acces va
conine doar utilizatorii, drepturile crora difer de cele implicite. Convenii de grupare permit
asocierea unei mulimi de drepturi unui grup de utilizatori (membrii unui proiect, etc.), ceea ce
reduce i mai mult lista. Lista de acces servete la verificarea validitii oricrei operaii asupra
fiierului.

4. Autentificarea n Windows. Funcia LogonUser

37
Sistemul de operare Windows NT posed mai multe instrumente de control a drepturilor de
acces al utilizatorilor la resursele sistemului. Aceste instrumente ar fi absolut inutile n lipsa
posibilitii de a controla dac la calculator se afl anume acel utilizator, care corespunde datelor
de eviden. Mecanismul, cu ajutorul cruia un utilizator i poate confirma autenticitatea se
numete de autentificare. Autentificarea se produce n baza unui element secret (autentificator),
aflat doar n posesia utilizatorului definit de informaia de eviden. De obicei, drept
autentificator servete parola utilizatorului, ns acesta poate fi i o cartel special (smart,
badge) sau informaii, legate de datele biometrice ale utilizatorului
Exist mai multe motivaii pentru aceasta:
Cereri suplimentare de introducere a numelui i parolei pot fi enervante pentru unii
utilizatori,
Programarea incorect a mecanismului de autentificare poate diminua securitatea
sistemului,
Windows NT permite extinderea mecanismului de autentificare. Programele, construite
cu un mecanism propriu de autentificare pot fi inutile, dac sistemul utilizeaz un alt
mecanism, dect cel presupus la elaborarea aplicaiei.
Funcia LogonUser
Funcia LogonUser din Win32 API este destinat exclusiv pentru soluionarea problemei
autentificrii i este de forma:
BOOL LogonUser(
PTSTR pszUsername, // numele utilizatorului
PTSTR pszDomain, // numele domenului
PTSTR pszPassword, // parola
DWORD dwLogonType, // tipul accesrii
DWORD dwLogonProvider, // provider-ul accesrii
PHANDLE phToken // token-ul utilizatorului
);

5. Autentificare n Windows cu ajutorul Security Support Provider Interface


O alt posibilitate este cea bazat pe Security Support Provider Interface (SSPI), o variaie a
standardului Generic Security Service API (GSS-API), realizat de firma Microsoft. Ambele
interfee sunt destinate autentificrii i proteciei informaiilor, transmise prin reea. Ideea se
bazeaz pe faptul, c toate protocoalele autentificrii de reea (fie NTLM, Kerberos sau SSL) pot
fi reprezentate sub forma unui schimb ordonat de mesaje, n timpul cruia un participant
identific pe cellalt (sau prile se autentific reciproc). Evident, SSPI poate fi utilizat i local,
n acest caz transmiterea pachetelor prin reea este nlocuit de transmiterea zonei de memorie
tampon dintr-un loc al programului n altul.
SSPI este doar o interfa care permite acces standardizat la diferite pachete de securitate
(security packages). n componena SO Windows NT 4 intr un singur pachet (NTLM), care
poate fi utilizat pentru autentificarea utilizatorilor. ncepnd cu Windows 2000 la acest pachet au
mai fost adugate pachetele Kerberos i Negotiate. Fragmentul de cod, care urmeaz controleaz
corectitudinea numelui i parolei unui utilizator folosind interfaa SSPI i pachetul de securitate
NTLM.

38
6. Funcia NetUserChangePassword n Windows.
Utilizarea acestei funcii pentru autentificare are loc conform codului care urmeaz:
BOOL CheckPassword_ChangePwd(
IN PCTSTR pszDomainName,
IN PCTSTR pszUserName,
IN PCTSTR pszPassword,
OUT PHANDLE phToken
)
{
_ASSERTE(pszUserName != NULL);
_ASSERTE(pszPassword != NULL);
_ASSERTE(phToken == NULL);

USES_CONVERSION;

PCWSTR pszPasswordW = T2CW(pszPassword);

ULONG lRes = NetUserChangePassword(T2CW(pszDomainName),


T2CW(pszUserName), pszPasswordW, pszPasswordW);

if (lRes == ERROR_INVALID_PASSWORD ||
lRes == NERR_UserNotFound)
return SetLastError(ERROR_LOGON_FAILURE), FALSE;

return TRUE;
}

7. SGF din sistemul de operare Unix. Caracteristici generale. Organizarea datelor


Toate fiierelor manipulate de utilizator formeaz o baz de date de tip ierarhic, modelul
matematic fiind un arbore n care vrfurile intermediare corespund cataloagelor, iar frunzele
cataloagelor vide sau fiierelor. Structura sistemului de gestiune a fiierelor este prezentat n fig.
6.11. n realitate fiecare disc logic conine o structur ierarhic separat de cataloage i fiiere.
Pentru a obine n mod dinamic arborele general este utilizat conectarea ierarhiilor separate la
o rdcin fix a sistemului de fiiere. n mediul utilizatorilor sistemului de operare UNIX istoric
noiunea de sistem de fiiere semnific n acelai timp ierarhia cataloagelor i fiierelor i
partea nucleului sistemului de operare, care administreaz cataloagele i fiierele. Ar fi mai
corect c numim ierarhia cataloagelor i fiierelor arhiv a fiierelor, iar noiunea de sistem de
fiiere s fie utilizat doar n cel de-al doilea sens.

8. SGF din sistemul de operare Unix. Descriptorii. Implantarea fizic

39
ntr-un catalog, intrarea care corespunde unui fiier conine identificatorul fiierului i un nume
intern, care este indicele descriptorului su ntr-un tabel general, asociat suportului. Descriptorul
(i-nod n terminologia Unix) conine:
tipul fiierului (ordinar, catalog, special),
numele i grupul proprietarului fiierului (v.6.5.3),
informaiile de protecie,
informaiile localizrii fizice (v.6.3.2.2),
lungimea fiierului, n caractere,
datele despre creare, ultima modificare, ultimul acces.
Implantarea fizic
Memoria secundar este organizat n blocuri de lungime fix (512 octei). n
descriptorul unui fiier este rezervat un tabel T de 13 cuvinte pentru informaiile despre
localizarea fizic. n dependen de numrul t al blocurilor ocupate de fiier, sunt utilizate
1, 2 sau 3 niveluri de direcionare (v.6.3.2.2):
cuvintele de la T[0] la T[9] conin adresele blocurilor 0 9 ale fiierului (ultimele fiind
puse n 0, dac t<10),
dac t>10, cuvntul T[10] conine adresa unui tabel de implantare de 128 de cuvinte, n
care sunt adresele blocurilor de la 10 la 137,
dac t>138, n cuvntul T[11] se afl adresa unui tabel, care stabilete adresele a 128 noi
tabele de implantare; se poate ajunge astfel pn la 10+128+1282 = 16522 blocuri,
n sfrit, dac t>16522, pentru blocurile urmtoare este utilizat o direcionare pe trei
niveluri; adresa tabelului primar este n T[12]; se poate astfel atinge o lungime maxim
de 16522+1283 = 2 113 674 blocuri.

9. Administrarea perifericelor. Volume amovibile. Funcionarea i utilizarea


Perifericele sunt reprezentate de fiiere speciale, grupate ntr-un catalog unic (/dev). n locul
informaiilor de implantare, descriptorul unui fiier special conine un pointer la descriptorul
perifericului, care, la rndul su conine doi indici, numii major i minor. Indicele major
identific tipul perifericului i puncteaz la programele primitivelor sale de acces, partajate de
periferice de acelai tip. Indicele minor identific individual fiecare periferic i permite accesul
la datele sale proprii, adic la tampoanele de intrare-ieire utilizate.
Volume amovibile
Administrarea volumelor amovibile este realizat conform principiilor, descrise n 5.2.3.2.
Catalogul unui volum amovibil este organizat exact ca i catalogul general. Comanda unei
montri logice (montare) permite integrarea catalogului unui volum n catalogul general, la un
nivel oarecare i cu un nume ales. De la acest moment, toate fiierele volumului devin accesibile

10. Gestiunea descriptorilor. Nume locale. Primitive de acces


Din considerente de economie, doar descriptorii fiierelor deschise au o copie n memoria
central. Aceti descriptori, zii activi, sunt grupai ntr-un tabel unic (TDA). Un fiier poate fi
deschis simultan de mai muli utilizatori, fiecare utilizndu-l independent cu ajutorul unui pointer

40
de citire-scriere propriu. Acest pointer nu poate fi coninut n descriptorul fiierului, care este
unic: el este pstrat ntr-un tabel rezident, numit tabel al fiierelor deschise (TFD).
n sfrit, pentru a reduce frecvena cutrilor n cataloage i a simplifica desemnarea, un
utilizator poate desemna un fiier printr-un nume local. Acest nume, care este un ntreg din
intervalul 0..nmax (nmax avnd valori pn la 20), este alocat la deschiderea fiierului.
Primitive de acces
Funciile de acces, descrise mai jos sunt primitive realizate prin apelarea regimului supervizor.
Ele sunt utilizate pentru a realiza operaiile disponibile n limbajul de comand. Fiecare primitiv
returneaz un rezultat de tip ntreg, care servete n special pentru a semnala erorile posibile.
Primitiva dup (duplicare) permite crearea unui alt nume local pentru un fiier deja deschis. Ea
servete n special pentru a conecta tuburile i pentru a determina, dac un nume local dat este al
unui fiier deschis.
Citirea i scrierea are loc pornind de la o poziie curent, definit de un pointer. Aceste operaii
incrementeaz n mod automat pointerul cu numrul de caractere citite sau scrise. Primitiva lseek
permite deplasarea explicit a pointerului.

11. Protecia fiierelor n UNIX


Protecia este asigurat cu ajutorul listelor de acces conform principiului din 6.5.3. Exist trei
moduri de acces elementar: citire, execuie, scriere pentru un fiier; consultare, acces, modificare
pentru un catalog.
Pentru controlul drepturilor, utilizatorii nu sunt individualizai, ci partajai n trei clase:
proprietarul fiierului, membrii unui grup de utilizatori, restul utilizatorilor. Lista de acces la un
fiier este, deci, de lungime fix; ea enumr drepturile de acces ataate fiecrei grupe; ea poate
fi modificat doar de proprietarul fiierului sau de administratorul sistemului. O caracteristic
original a sistemului de protecie este c proprietarul unui fiier poate fi schimbat.
De la nceputuri UNIX a fost gndit ca un sistem de operare interactiv. Pentru a ncepe lucrul un
utilizator trebuie s intre n sistem, introducnd de la terminal numele propriu de eviden
(contul, account name) i, poate, parola (password), devenind astfel utilizator nregistrat al
sistemului. Noii utilizatori sunt introdui (nregistrai) de ctre administrator. Utilizatorul nu-i
poate modifica contul propriu, n schimb parola este la discreia lui. Parolele sunt codificate i
pstrate ntr-un fiier separat. Nici administratorul nu poate restabili o parol uitat. Fiecrui
utilizator nregistrat i corespunde un catalog propriu al SGF, numit home. La intrare
utilizatorului i se confer acces total la acest catalog, inclusiv i la toate cataloagele i fiierele,
care se conin aici. Accesul la alte cataloage i fiiere poate fi restricionat.

12. Alocarea resurselor. Noiuni generale. Definiii


Numim resurs orice obiect, care poate fi utilizat de ctre un proces. Unei resurse i sunt
asociate proceduri de acces, care permit utilizarea resursei i reguli de utilizare, care constituie
modul de utilizare. Exemple de asemenea reguli au fost aduse n capitolul 4 (acces exclusiv,
cititori-redactori, etc.). Nu exist vre-o diferen fundamental ntre noiunea de obiect i cea de
41
resurs. Folosirea celor doi termeni semnific mai mult o diferen de domeniu: se utilizeaz
noiunea obiect atunci cnd ne intereseaz specificarea i realizarea obiectului i a funciilor sale
de acces, iar resurs pentru problemele de alocare i partajare.
Se spune c o resurs este alocat unui proces dac procesul poate utiliza resursa, folosind
procedurile ei de acces. Legarea unei resurse de un proces poate fi implicit sau explicit. n
primul caz, este suficient trecerea procesului ntr-o anumit stare pentru ca el s devin candidat
la utilizarea resursei; n cel de-al doilea caz, solicitarea trebuie s fie formulat explicit sub
forma unei cereri adresate unui alocator al resursei. Alocatoarele i cererile pot lua forme
diverse: de exemplu, un alocator poate fi un proces cruia cererile i sunt transmise prin emiterea
unor mesaje; sau chiar un monitor (v. capitolul 4) o procedur a cruia servete la emiterea unor
mesaje. Reacia unui alocator la o cerere poate de asemenea fi diferit: alocarea resursei
solicitate, refuz cu sau fr blocarea procesului solicitant. Terminarea utilizrii unei resurse de
ctre un proces poate la fel lua diferite forme: eliberarea explicit sau implicit a resursei sau
retragerea forat a resursei de ctre alocator. O resurs se numete banalizat dac ea exist n
mai multe exemplare echivalente, n sensul c o cerere poate fi satisfcuta de alocator folosind
indiferent care exemplar al resursei.

13. Probleme n alocarea resurselor. Exemple de sisteme cu fire de ateptare


Obiectivul unui sistem de alocare a resurselor este s satisfac cererile ntr-un mod echitabil,
asigurnd n acelai timp i performane acceptabile. Dac toate procesele au aceeai prioritate, o
alocare este echitabil, atunci cnd este asigurat o tratare asemntoare fiecrui proces, de
exemplu, ateptarea medie este identic. Dac ntre procese exist prioriti, este dificil s se
defineasc noiunea de echitate n caz general, dar ea poate fi exprimat prin faptul, c calitatea
serviciului (msurat, de exemplu, prin valoarea invers a timpului mediu de ateptare sau printr-
o alt expresie semnificativ) este funcie cresctoare de prioritate, dou procese de aceeai
prioritate beneficiind de aceeai tratare. A fost stabilit, c unii algoritmi de alocare conin riscul
de a face un proces s atepte la infinit: acest fenomen, numit privaiune, este contrar
principiului de echitate i trebuie evitat.
Exemple de sisteme cu fire de ateptare
Un sistem informatic este constituit din N instalaii identice, fiecare fiind descris de modelul
M/M/1, cu parametrii i (fig. 7.1a). Vom examina influena asupra timpului de rspuns al
acestui sistem a utilizrii comune a resurselor, caracteristicile totale de tratare fiind constante.

Fig.7.1. Modelul unui sistem de servire n mas

14. Modele pentru alocarea unei resurse unice


Vom trata dou cazuri: alocarea procesorului i gestiunea schimburilor cu o memorie secundar
paginat.

15. Alocarea procesorului. Prim sosit, prim servit. Cererea cea mai scurt servit prima
Algoritmii de alocare a procesorului pot fi clasificai n funcie de mai multe caracteristici.
42
1) Algoritmi cu sau fr retragere
Retragerea presupune alocarea procesorului unui alt proces nainte ca procesul curent s-i
termine execuia. Ea permite s se ia n consideraie:
prioritatea cererilor nou sosite,
timpul deja consumat de ctre procesul ales.
2) Noiuni de prioritate i modul de determinare a prioritii
Prim sosit, prim servit
Disciplina Prim sosit, prim servit (n englez, First In, First Out, sau FIFO) utilizeaz un fir
unic, fr prioritate i fr retragere. Procesul ales este executat pn la terminarea sa, iar cel care
va urma este procesul din topul firului de ateptare. Un proces nou intr n coada firului.
Cererea cea mai scurt servit prima
n acest caz cererile sunt ordonate n cadrul firului de ateptare conform timpului lor de servire,
presupus apriori cunoscut, cererile cu durata de servire cea mai scurt aflndu-se n top.

16. Caruselul i modele derivate


n modelul caruselului (round robin) procesorul este alocat succesiv proceselor eligibile
pentru o perioad constant de timp , numit cuant. Dac un proces se termin sau se
blocheaz nainte de sfritul cuantei, procesorul este imediat alocat procesului urmtor. Aceast
disciplin de servire este implementat ordonnd procesele ntr-un fir de ateptare circular; un
pointer de activare, care avanseaz cu o poziie la fiecare realocare a procesorului, desemneaz
procesul ales

17. Disc de paginare


Vom cerceta acum metodele de gestiune a schimburilor ntre memoria principal i un disc cu
dispozitive de citire-scriere (DCS, capuri) fixe. Astfel de discuri sunt organizate pe piste i
sectoare i are cte un DCS per pist. Schimburile sunt comandate de un server care primete
cererile de transfer; fiecare cerere presupune transferul unui sector cu indicaia direciei de
transfer, o adres n memorie i una pe disc (pista i sectorul) [17].
Vom cerceta dou discipline de tratare a cererilor:
Fir de ateptare unic. Cererile de transfer sunt ordonate ntr-un fir unic i tratate n ordinea sosirii
lor,
Un fir per sector. Un fir distinct este administrat pentru fiecare sector; se sper s poat fi redus
timpul mediu de ateptare, eliminnd timpul mort.

18. Tratarea blocrilor. Enunul problemei. Algoritmi de prevenire. Algoritmi de


profilaxie
Un exemplu de blocare reciproc (impas) a fost prezentat n capitolul 4, cnd dou seciuni
critice, corespunztoare la dou resurse distincte, sunt imbricate eronat, existnd un risc de
blocare pentru o perioad de timp nedefinit.
O atare situaie poate fi generalizat pentru un numr oarecare de procese i resurse, dac sunt
ndeplinite urmtoarele condiii:
resursele sunt utilizate n excludere mutual,
43
fiecare proces trebuie s utilizeze simultan mai multe resurse, i acapareaz fiecare
resurs pe msura necesitilor sale, fr a le elibera pe cele pe care le posed deja,
cererile de resurse sunt blocante i resursele nu pot fi retrase,
exist o mulime de procese {p0,..., pn}, astfel nct p0 cere o resurs ocupat de p1, p1
cere o resurs ocupat de p2, ..., pn cere o resurs ocupat de p0.

Algoritmi de profilaxie
Atunci cnd nu se cunoate anticipat nimic despre cererile proceselor, metodele de prevenire
constau n nlturarea uneia din condiiile 1) 4) de mai sus.
Metoda alocrii globale vizeaz eliminarea condiiei 2: fiecare proces cere toate resursele de
care are nevoie n bloc; el poate elibera o resurs dac nu mai are nevoie de ea. Metoda dat
conduce la imobilizarea unor resurse n mod neproductiv, i aduce adesea n practic la
suprimarea oricrui paralelism n execuie; totui aceast metod nu trebuie refuzat din start.
Metoda claselor ordonate vizeaz eliminarea situaiei unei ateptri circulare (condiia 4).
Resursele sunt divizate n clase C1, C2,..., Cm. Un proces poate primi o resurs din clasa Ci numai
dac el a primit deja toate resursele necesare n clasele Cj, j<i. Toate procesele cer resursele de
care au nevoie n aceeai ordine, cea a claselor.

19. Algoritmul bancherului


Algoritmul de prevenire poate fi mbuntit dac exist informaii anticipate despre cererile de
resurse. Dac fiecare proces prezint n avans o declaraie de intenii (anun), adic valoarea
unei borne superioare ale cererilor sale pentru numrul de resurse de fiecare tip, algoritmul
bancherului permite evitarea blocrii reevalund riscul acestora la fiecare alocare. Acest
algoritm se bazeaz pe noiunea de stare fiabil: o stare de alocare este numit fiabil dac,
pornind de la aceast stare este posibil s se asigure funcionarea sistemului fr blocri n
ipoteza cea mai pesimist, cea n care fiecare proces cere efectiv cantitatea maxim presupus de
fiecare dintre resurse. Algoritmul bancherului va aloca o resurs doar dac aceast alocare
pstreaz starea fiabil a sistemului.
Considerm un sistem care conine n procese i m clase de resurse. Starea sa este reprezentat de
urmtoarele structuri de date:
Res, Disp: array[0..m-1] of integer
Anunt, Aloc: array[0..n-1, 0..m-1] of integer
unde
Res[j]: este numrul total de resurse din clasa j,
Anunt[i, j]: numrul maxim de resurse din clasa j necesare la un moment de timp
procesului i,
Aloc[i, j]: numrul maxim de resurse din clasa j alocate la un moment de timp
procesului i,
Disp[j]: numrul de resurse din clasa j disponibile la un moment de timp dat.

20. Algoritmi de detectare i tratare


Pentru detectarea unei blocri putem utiliza testul de fiabilitate a unei stri, nlocuind pentru
fiecare proces cererea maxim Anunt[i,*]-Aloc[i,*] cu cererea efectiv la instana considerat.
Dac n aceste condiii este imposibil s se gseasc o suit fiabil complet, sistemul se afl n
blocare. Mai precis, procesele blocate sunt elementele mulimii Rest, la terminarea algoritmului.
Lecuirea blocrii vizeaz reluarea execuiei sistemului; aceasta poate fi fcut doar recupernd
resursele deja alocate. O metod mai dur const n distrugerea proceselor blocate, ncepnd cu
cele pentru care preul distrugerii este cel mai mic (conform unui criteriu definit), pn la
44
procesele pentru care execuia poate fi reluat. Aceast metod nu este fr pericole, dac
procesele distruse au lsat date ntr-o stare incoerent. De asemenea este preferabil s se salveze
periodic starea proceselor, definind puncte de reluare, corespunztoare unor stri semnificative.
n caz de retragere forat a resurselor unui proces, acesta poate fi repus n starea
corespunztoare ultimului su punct de reluare.

21. ADMINISTRAREA MEMORIEI. CONCEPTE DE BAZ. Memorie virtual


Noiunea de resurse virtuale a fost introdus n capitolul 3 pentru a separa problemele utilizrii
unei resurse particulare de problemele alocrii acestei resurse. Pentru un procesor virtual (sau
pentru un proces) memoria virtual este suportul mulimii informaiilor potenial accesibile sau
mai precis, mulimea locaiunilor adresa crora poate fi generat de procesor.
Alocarea memoriei const n concretizarea acestei memorii virtuale prin suporturi fizice de
informaie, cum ar fi memoria operativ, memoria secundar, etc. Accesul unui proces la o
informaie este concretizat prin accesul unui procesor fizic la o locaiune a memoriei principale,
adresate de acest procesor.
Informaiile accesibile unui proces sunt definite de:
mulimea informaiilor desemnate n programul procesului, sau obiecte,
mulimea informaiilor de desemnare, sau nume,
punerea n coresponden a numelor i a obiectelor.
Pentru un utilizator, care scrie programe ntr-un limbaj de nivel nalt numele i obiectele sunt
definite de acest limbaj. Aceste nume i obiecte difer de cele manipulate de procesorul fizic.
Programul este supus unei serii de transformri, numite legare. Legarea conine o etap de
translatare (stabilirea unei corespondene ntre obiecte i amplasamentele de memorie i ntre
identificatori i adresele relative respective), o etap de editare a legturilor (legarea
programelor translatate separat) i, n sfrit, o etap de ncrcare (stabilirea definitiv a
adreselor).

22. Probleme de alocare a memoriei


Alocarea memoriei trebuie s permit unui proces s acceseze un obiect definit n memoria
virtual, aducnd n timp acceptabil acest obiect n memoria principal, unica care este direct
adresabil. Ca rezultat, o disciplin de alocare a memoriei trebuie s soluioneze urmtoarelor
dou probleme:
stabilirea corespondenei ntre adresele virtuale i adresele fizice,
realizarea gestiunii memoriei fizice (alocarea locaiunilor, transferul informaiilor).
Dac informaiile aparin mai multor utilizatori apar dou restricii suplimentare:
realizarea partajrii informaiilor ntre mai muli utilizatori,
asigurarea proteciei reciproce a informaiilor, care aparin unor utilizatori distinci.

23. Alocarea dinamic a memoriei


Sunt utilizate dou metode, n dependen de faptul cum este definit unitatea de alocare: prin
decupare logic (zon de memorie plat sau segment) sau prin decupare fizic (blocuri de
lungime fix sau pagini). n ambele cazuri un mecanism de realocare trebuie s permit
ncrcarea programului sau a unei pri a programului ntr-o zon sau o pagin oarecare.
Scopul unei discipline de alocare dinamic a memoriei este s asigure, c la orice instan de
timp informaia necesar pentru execuia instruciunii curente este accesibil procesorului
imediat, adic se afl n memoria principal. Acest scop nu poate, n mod absolut, fi atins. Se

45
face tot posibilul pentru a reduce probabilitatea ca o informaie s fie lips n memorie atunci
cnd avem nevoie de ea (acest eveniment este numit absen a segmentului sau paginii
segment (pagin) absent).
Vor fi utilizate mai multe criterii pentru evaluarea i compararea algoritmilor de alocare a
memoriei:
criterii legate de utilizarea memoriei, msurat, de exemplu, prin rata spaiului
neutilizat,
criterii legate de accesarea informaiei, cum ar fi timpul mediu de acces sau rata
paginilor absente,
criterii mai globale, care caracterizeaz performane influenate de alocarea memoriei:
rata utilizrii unitii centrale sau timpul de rspuns al unui sistem interactiv.

24. Comportamentul ntr-o memorie virtual liniar. Proprietile lanurilor de


referine
Considerm un program, executat ntr-o memorie virtual liniar, care conine toate
instruciunile i datele. Mai nti cteva precizri:
Trecerea timpului este reperat prin execuia unor instruciuni consecutive: executarea
unei instruciuni definete o unitate de timp.
Cererea de memorie este evaluat mprind memoria virtual n blocuri adiacente de
lungime fix, care conin un numr ntreg np de amplasamente
Comportamentul programului, la nivelul de detaliere ales, este definit de secvena
numerelor de pagini, care au fost obiectul referinelor succesive n timpul execuiei.
Proprietile lanurilor de referine
Experiena arat, c lanurile de referine posed caracteristici comune, care vor fi descrise mai
nti ntr-o manier calitativ.
Neuniformitate. Fie ni numrul total de referine la pagina pi. Repartiia valorilor ni nu
este uniform: o parte mic a paginilor totalizeaz o parte important a numrului total de
referiri. Pentru exemplificare: se constat frecvent, c un numr de peste 75% de referiri
sunt generate de mai puin de 25% de pagini.
Localizare. Pentru o perioad suficient de mic de observare, repartiia referinelor
prezint o oarecare stabilitate: la un moment de timp dat, referinele observate ntr-un
trecut apropiat sunt o bun estimare a referinelor viitoare.

25. Comportamentul ntr-o memorie cu capacitate limitat. Comportamentul


programelor segmentate
Un alt mod de caracterizare a comportamentului unui program este de a studia performanele
sale n funcie de volumul de memorie alocat programului. Iniial, programul se afl n memoria
secundar; la un moment dat de timp, doar o submulime a paginilor sale sunt prezente n
memoria operativ. Dac referina urmtoare este fcut unei pagini absente, are loc
evenimentul, numit pagin lips, i pagina absent este ncrcat n memoria principal (se
spune, c paginile sunt ncrcate la cerere). Dac nu exist spaiu disponibil suficient, pagina

46
ncrcat trebuie s ia locul unei pagini deja prezente; aceasta se va stabili conform unui algoritm
de reamplasare.
Comportamentul programelor segmentate
Considerm un program executat ntr-un spaiu virtual segmentat. Noiunea de lan de referine,
introdus pentru un spaiu virtual liniar, se va extinde pentru un spaiu segmentat, nlocuind
referinele la pagini prin referine la segmente. Putem studia repartiia referinelor diferitor
segmente, ca i performanele pentru o memorie limitat n cazul unei politici de alocare
segment la cerere. Noiunea de mulime de lucru (mulimea segmentelor, care au fcut obiectul
referinelor celor mai recente) poate fi utilizat n mod analogic i poate fi regsit proprietatea
localizrii pentru referirea segmentelor.

26. PARTIIONAREA MEMORIEI FR REAMPLASARE. Metoda du-te vino


simpl
O zon fix a memoriei este rezervat programelor utilizatorilor, care o utilizeaz succesiv. De
obicei, aceasta este zona neocupat de sistemul de operare. Programele sunt pstrate pe disc n
cod absolut (ncrcarea este realizat pentru fiecare program ca i cum el ar fi unicul). Pentru a fi
executat programul trebuie mai nti adus n memoria principal n ntregime. Transferul
programului este determinat de modul de alocare a procesorului. n cazul retragerii procesorului,
programul curent trebuie salvat pe disc naintea ncrcrii programului urmtor.
n scopul reducerii volumului informaiilor transferate i, drept rezultat, a timpului de inactivitate
a procesorului, pot fi aduse urmtoarele ameliorri:
atunci cnd un program este salvat pe disc, va fi salvat doar partea modificat (n
practic, zona datelor),
algoritmul cojii de ceap (onion skin) permite minimizarea transferurilor, atunci cnd
un program mai mare este acoperit de unul mai mic: este suficient pentru restabilirea
programului s se rencarce doar partea reacoperit.

27. Partiionarea memoriei. Partiionarea fix. Partiionarea variabil


ntr-un sistem cu partiionare fix memoria este mprit n mod static ntr-un numr fix de
zone. Capacitatea i limitele acestor zone sunt definite la generarea sistemului.
Fiecare program poate ocupa doar un singur segment i este asociat n mod constant unei zone de
memorie. Programele sunt pstrate pe disc n cod absolut, iar adresele prezente n fiecare
program sunt adresele fizice, care corespund adreselor de implantare din zona atribuit
programului.
Partiionarea variabil
ntr-un sistem cu partiionare variabil mprirea n zone nu este fixat odat pentru totdeauna,
ci este redefinit la terminarea execuiei unui program, spaiul de memorie eliberat fiind
repartizat altor programe. Drept consecin, ncrcarea unui program (fixarea adreselor) poate fi
fcut n ultimul moment, doar atunci cnd spaiul respectiv i este atribuit. Un program, odat
ncrcat n memorie, rmne aici pn la terminarea execuiei sale: nu este posibil, deci,
reamplasarea dinamic. Multiprogramarea permite meninerea unitii centrale n stare activ
pentru perioada ncrcrii programelor sau operaiilor de intrare-ieire. Acest mod de funcionare
este adaptat tratrii pe loturi pe un calculator, care nu dispune de un mecanism de reamplasare
dinamic.
28. ALOCAREA DINAMIC A ZONELOR DE MEMORIE. Mecanisme de
reamplasare dinamic
Alocarea dinamic a memoriei, divizate n zone de capaciti oarecare cere utilizarea unui
mecanism de reamplasare dinamic a acestor zone. S ne amintim de principiile descrise deja n
capitolul 5.

47
1) Registre de baz (v.5.3.3.2). Amplasarea n memoria fizic a unui singur segment este
definit de o pereche de registre, numite registrul de baz i registrul limit. Registrul de
baz RB conine adresa fizic a originii segmentului; registrul limit RL joac un rol de
protecie, interzicnd accesul accidental la locaiuni situate n afara segmentului. Pentru o
adres virtual (RB, RL, d), la fiecare accesare este efectuat urmtorul calcul al adresei:
a := RB+d;
if a RL then
adr.fiz.:= a
else
<eroare> - deviere tratat de sistem
endif
2) Segmentare (v. 5.4.1). Segmentarea poate fi considerat o extensie a adresrii cu ajutorul
registrelor de baz, care evit problemele realocrii acestor registre, atunci cnd este
necesar schimbarea segmentului. Fiecrui segment i este asociat un descriptor, care
conine printre altele, adresa sa de origine i capacitatea; descriptorii sunt aranjai ntr-un
tabel, desemnat de un registru special. Calculul adresei fizice corespunztoare adresei
segmentate (s, d) este urmtorul:
desc := tab_desc[s];
if d < desc.capacitate then
adr.fiz.:= desc.orig+d
else
<eroare> - deviere tratat de sistem
endif

29. ALOCAREA DINAMIC A ZONELOR DE MEMORIE. Algoritmi de alocare


Specificarea unui algoritm de alocare dinamic a segmentelor trebuie s rspund la ntrebrile
generale, puse n 8.1.3. ncrcarea se face de obicei la cerere din cauza costului ridicat al
spaiului i timpilor de execuie, datorat unei prencrcri eronate. Rmne de rezolvat problema
amplasrii (alegerii unei zone libere) i cea a reamplasrii (alegerea zonelor, care vor fi
eliberate, dac nici una din zonele libere nu convin

30. ALOCAREA DINAMIC A ZONELOR DE MEMORIE. Amplasarea i


reamplasarea segmentelor
Algoritmii sunt clasificai conform modului de reprezentare a zonelor libere. Cel mai frecvent
sunt utilizate urmtoarele trei metode:
nlnuirea zonelor libere ntr-o list,
Divizarea blocurilor (buddy systems),
Zone de capaciti predefinite.
1) Zone libere nlnuite
2) Alocare prin divizare (buddy systems)
3) Rezerve de blocuri de capacitate predefinit
1. ALOCAREA DINAMIC A ZONELOR DE MEMORIE. Utilizarea algoritmilor de
alocare
ntr-un sistem de operare algoritmii de alocare a memoriei sunt utilizai n dou maniere:
1) De ctre sistemul de operare la alocarea memoriei pentru lucrri, atunci cnd sunt create
procese sau cnd sunt formate zone-tampon de intrare-ieire, etc.

48
2) De ctre utilizatori: sistemul pune la dispoziie, sub forma unui apel supervizor,
primitivele cerere alocare i eliberare memorie. Aceste primitive sunt utilizate, de
exemplu, de compilatoare pentru gestiunea variabilelor dinamice.
ntr-un sistem cu partiionare variabil i reamplasare dinamic, o zon de memorie este alocat
de ctre sistem pentru a duce evidena fiecrei lucrri.

2. Paginarea unei memorii liniare. Paginare simpl


Figura 8.11 reprezint schema general a unei memorii virtuale paginate. Rolul dreptunghiului
marcat funcie de paginare este de a stabili o coresponden ntre adresele paginilor memoriei
virtuale npv i adresele paginilor memoriei fizice npf, astfel nct o pagin virtual s fie pus
ntr-o pagin fizic oarecare. Paginile fizice devin astfel resurse banalizate gestiunea crora este
mult mai simpl dect gestiunea zonelor de lungime variabil.

npf
Funcie de
paginare

pagin lips

npv

Memorie virtual Memorie fizic

Fig.8.11. Memorie virtual paginat

Numrul de amplasamente dintr-o pagin este 2 la o putere ntreag. Introducem urmtoarele


notaii:
L = 2l lungimea (numrul de amplasamente) unei pagini
Npv = 2p numrul de pagini ale memoriei virtuale
Npf = 2c numrul de pagini ale memoriei fizice.

3. Paginare la dou niveleuri. Paginarea unei memorii segmentate


Tendina sporirii capacitii memoriei virtuale aduce la apariia problemei creterii volumului
tabelelor de pagini, pstrate n memoria fizic. Paginarea n dou niveluri vizeaz soluionarea
acestei probleme.
n aceast schem, memoria virtual este divizat n hiperpagini, care la rndul lor sunt mprite
n pagini. O adres virtual este n acest caz de forma (nhip, npv, dep). Numrul nhip al
hiperpaginii permite accesul la un tabel de hiperpagini, in care fiecare intrare conine un pointer
la tabelul de pagini ale hiperpaginii, care este limitat doar la paginile efectiv utilizate. Un cmp
49
lungime permite controlul acestei restricii. Tabelele de pagini sunt utilizate ca i n paginaia
simpl (fig.8.14). O memorie asociativ, n care sunt pstrate cele mai recente triplete (nhip, npv,
npf) accelereaz consultarea (care necesit dou accesri suplimentare n caz de eec).
Paginarea unei memorii segmentate
Paginarea unei memorii segmentate are drept scop o alocare mai eficient a segmentelor,
ridicnd restricia de contiguitate pentru amplasarea unui segment. O intrare a tabelului
segmentelor conine, n afara informaiilor proprii ale segmentului (lungime, protecie, tip), un
pointer la tabelul de pagini ale acestui segment. Ca i n schemele precedente, o memorie
asociativ pstreaz ultimele referine (fig.8.15).

4. Implementarea paginrii. Mecanismul de deviere pagin lips


n afara traducerii propriu-zise a adreselor (corespondena npv npf), mecanismul de accesare a
unei memorii paginate realizeaz urmtoarele operaii:
actualizarea bitului de scriere i a bitului de utilizare, dac acetia exist,
detectarea lipsei paginii necesare (prezent[npv]=0), care provoac o deviere.
Programul de tratare a devierii pagin lips trebuie:
s gseasc n memoria secundar pagina lips,
s gseasc n memoria principal o pagin fizic liber; dac aceasta nu exist, va trebui
eliberat una, eliminnd din memoria principal n cea secundar pagina virtual pe care o
conine,
s ncarce pagina virtual necesar n pagina fizic.

5. Paginarea memoriei Partajarea i protecia informaiei


Partajarea informaiilor ntre mai multe memorii virtuale genereaz apariia urmtoarelor trei
probleme:
notarea: cum vor fi adresate ntr-un mod uniform informaiile partajate,
partajarea fizic: cum s se garanteze c informaiile partajate exist ntr-un singur exemplar,
protecia: cum s se garanteze respectarea regulilor de acces la informaiile partajate.
1) Notarea informaiilor partajate
Vom face deosebire ntre o memorie virtual liniar i una segmentat.
2) Amplasarea fizic a informaiilor partajate
O pagin virtual cu informaii partajate poate fi ncrcat ntr-o pagin fizic oarecare; tabelele
paginilor memoriilor virtuale unde figureaz aceste pagini vor conine, la intrarea respectiv,
acelai numr de pagin fizic (fig.8.16,a).
3) Protecia informaiilor partajate
Dac unitatea de partajare este pagina, unei pagini partajate i pot fi atribuite drepturi de acces
distincte pentru fiecare memorie virtual n care aceasta figureaz

6. GESTIUNEA MEMORIEI VIRTUALE PAGINATE. Parametrii unei discipline de


alocare
Disciplinele de alocare a unei memorii paginate pot fi clasificate n conformitate cu mai multe
criterii. Vom presupune c sistemul este multiprogramat pentru mai multe procese, fiecare dintre
acestea posednd memorie virtual proprie.
1) Partiie fix sau variabil. n cazul disciplinei de alocare cu partiie fix un numr fix de
pagini fizice sunt atribuite fiecrui proces; notm c acest numr este constant doar pentru
perioadele n care numrul proceselor multiprogramate este el nsui constant. Pentru o disciplin

50
cu partiie variabil, numrul de pagini fizice, atribuite fiecrui proces variaz n timp. Paginile
fizice fiind banalizate, anume numrul lor (i nu identitatea) este un parametru semnificativ.
2) Paginare la cerere sau prencrcare. Paginaia la cerere a fost definit n 8.2.1.2: o pagin
este ncrcat n memorie drept rezultat a unei referine, care conduce la evenimentul pagin
lips. Dac o pagin este ncrcat n avans, nainte de orice referire la o informaie, care se
conine aici, se spune c are loc o prencrcare.
3) Reacoperire local sau global. Dac o pagin logic este ncrcat ntr-o pagin fizic
ocupat (v.8.2.1.2) are loc o nlocuire a paginii (pagina nlocuit este adesea numit victima).
Algoritmul de reacoperire este zis local sau global conform principiului de alegere a victimei
dintre paginile alocate procesului care provoac nlocuirea sau din mulimea tuturor paginilor,
prezente n memorie.

7. Algoritmi de reamplsare cu partiie fix. Descrierea algoritmilor


n cazul partiionrii fixe ne vom limita la examinarea algoritmilor locali. Din acest motiv vom
considera un singur proces cruia i sunt alocate un numr fix N de pagini. Execuia acestui
proces este definit de un lan de referine.
Descrierea algoritmilor
Vom prezenta mai nti doi algoritmi, care descriu dou cazuri extreme: algoritmul optimal, care
presupune cunoaterea total a viitorului comportament al programului i algoritmul neutru,
care nu utilizeaz nici un fel de informaii iniiale. Ali doi algoritmi sunt situai undeva la
mijloc.
Algoritmul optimal (MIN).
Alegere aleatoare
Ordine cronologic de ncrcare (FIFO - PSPS).
Ordine cronologic de utilizare (LRU sau Least recently Used).
Algoritmul celei de-a doua anse sau FINUFO (First In Not Used, First Out).

8. Algoritmi de reamplsare cu partiie fix. Evaluare i comparare


Numeroase cercetri experimentale au permis evaluarea algoritmilor de reamplasare. Figura
8.17, preluat din [20], aduce prezentri sintetice ale rezultatelor obinute.
Putem constata:
1. c algoritmii pot fi clasificai n urmtoarea ordine de descretere a performanelor:
MIN, LRU, Clock, FIFO (performanele lui FIFO fiind aceleai ca i ale alegerii
aleatoare).
2. c influena capacitii memoriei este net superioar influenei algoritmului de
reamplasare, altfel spus, performanele unui program vor fi ameliorate mult mai
semnificativ sporind numrul de pagini fizice puse la dispoziie, dect alegnd
algoritmul de reamplasare.

9. Algoritmi cu partiie variabil. Reglarea arjei


Rezultatele prezentate n continuare arat, c pare a fi preferabil s se ncerce alocarea unui
volum de memorie bine adaptat comportamentului fiecrui program.
Aceasta poate fi realizat n dou moduri:
utiliznd un algoritm cu partiie variabil,
utiliznd un algoritm de reamplasare global, ceea ce ar nsemna s aplicm mulimii
programelor prezente unul dintre algoritmii studiai pentru partiiile fixe.
51
n ambele cazuri trebuie s se defineasc politica, care va fi aplicat n caz de suprasolicitare,
adic atunci cnd cererea de memorie devine excesiv i conduce la o degradare a
performanelor. Anume din aceast cauz vom ncepe cu studierea comportamentului unui
sistem n condiii extreme. Vom prezenta n continuare algoritmii cu partiie variabil bazai pe
msurri locale a comportamentului programelor, apoi algoritmii de reglare, care utilizeaz
criterii globale.

10. Instabilitatea i thrashing-ul unui sistem cu multiprogramare


n primele sisteme cu memorie virtual paginat s-a constatat, pornind de la o anumit arj
(msurat de exemplu, prin numrul de utilizatori interactivi), o degradare brutal a
performanelor. Acest fenomen, numit thrashing este caracterizat de cderea brusc a ratei de
utilizare a procesorului i o cretere puternic a schimbului de pagini. Timpul de rspuns atinge
valori inacceptabile.
O explicaie calitativ a thrashing-ului permite s punem n eviden cauzele sale i s propunem
unele remedii. Considerm un sistem cu memorie paginat, multiprogramat pentru o mulime de
procese fiecare dintre care corespunde unui utilizator interactiv. Memoria fizic este partajat n
mod echitabil ntre procese cu comportament n medie identic. Aceast partajare este realizat de
un algoritm cu reamplasare global. ncepnd cu un anumit numr de procese numrul mediu de
pagini fizice alocate fiecrui proces cade pn sub nivelul corespunztor duratei de via
(v.8.2.1). Probabilitatea global a evenimentului pagin lips, invers proporional duratei de
via, crete extrem de rapid odat cu creterea numrului de procese.

11. Algoritmii de reamplasare cu partiie variabil


Dac numrul de pagini fizice alocate unui program este variabil, performanele unui algoritm
sunt definite de dou mrimi: numrul mediu M de pagini fizice ocupate de program i numrul
mediu F de pagini fizice lips ntr-o unitate de timp. Mediile sunt evaluate pentru toat execuia
programului; unitatea de timp este intervalul ntre dou adresri succesive la memorie.
Pe de alt parte este necesar s fie definit un criteriu care ar permite compararea algoritmilor.
n acest scop introducem dou costuri unitare:
un cost temporal R: costul lipsei unei pagini,
un cost n spaiu U: costul ocuprii unei pagini n memorie pe perioada unei uniti de
timp virtual.
Vom defini costul unui algoritm cu ajutorul combinaiei liniare ale acestor dou costuri:
C = R.F + U.M

12. Reglarea arjei i echilibrarea unei configuraii. Exemple


Reglarea global a arjei presupune modificarea gradului de multiprogramare pentru meninerea
performanelor sistemului n limite acceptabile. La arj joas sau moderat multiprogramarea
sporete rata de utilizare a procesorului folosind timpul mort, datorat unor blocaje sau ateptri
de pagini; la arj nalt invers. Acest comportament sugereaz existena unei valori optimale a
gradului de multiprogramare, care maximizeaz rata utilizrii procesorului pentru o configuraie
dat a resurselor tehnice i o arj concret, ceea ce este confirmat i de practic. Un algoritm
ideal de reglare a arjei trebuie s menin gradul de multiprogramare n vecintatea acestei
valori optimale

52
Exemple
Toate sistemele actuale cu multiprogramare conin un mecanism de ajustare dinamic a gradului
de multiprogramare, care utilizeaz una din metodele descrise mai sus.
Sisteme, care folosesc reglarea arjei globale
Reglarea arjei globale a fost introdus n sistemul experimental IBM M44 i este pe larg folosit
n sistemul IBM 370 VM. Principiul este acela descris mai sus: suprasolicitarea sistemului este
detectat prin msurri periodice ale activitilor de paginaie, iar regulatorul acioneaz direct
asupra gradului de multiprogramare.
Sisteme, care folosesc o estimare aproximativ a mulimii de lucru

13. Memorii ierarhice. Caracteristici generale. Noiune de cache


Informaiile coninute n memoria virtual a unui sistem sunt repartizate pe o mulime de
suporturi fizice care formeaz ierarhia memoriei. Putem spune, c atunci cnd ne deplasm de
la procesor spre periferie caracteristicile suporilor de memorie sunt ordonate prin capaciti i
timp de acces cresctoare i pre de pstrare a unui bit descresctor.
Obiectivul principal al unui algoritm de administrare dinamic a unei memorii cu mai multe
nivele este s se repartizeze informaiile pe supori astfel nct la orice moment de timp
informaia imediat necesar s fie direct accesibil procesorului. Pentru aceasta sunt combinate
calitile suporilor de capacitate ridicat i pre sczut cu cele ale suporilor cu acces rapid.
Noiune de cache
Fie dou nivele adiacente ale unei ierarhii de memorie unul superior i altul inferior. Putem
considera c informaia este pstrat tot timpul la nivelul inferior, algoritmul de administrare
aducnd pentru fiecare moment de timp la nivelul superior submulimea de informaii pentru
care probabilitatea estimat de accesare este cea mai nalt. Estimarea acestei probabiliti
utilizeaz, de obicei, algoritmul LRU sau unul din variantele acestuia. Se spune atunci, c nivelul
superior funcioneaz ca un cache pentru nivelul inferior. Acest termen are la origine un
dispozitiv fizic, situat la nivelul cel mai nalt (ntre procesor i memoria central) i este utilizat,
prin analogie, n sensul de mai sus, dei administrarea este cu ajutorul unor resurse logice

14. Migrarea fiierelor. Administrarea transferurilor


Salvarea fiierelor ntr-o memorie de arhivare (band magnetic, etc.) este necesar din cauza
limitrii capacitii discurilor. Aceast problem este asemntoare cu cea a administrrii unei
memorii paginate, ns pot fi notate dou diferene:
diferena n timpi de execuie (milisecunde i ore); restriciile temporale pentru salvare nu sunt
att de stricte,
administrarea este realizat cu ajutorul unor uniti de lungime variabil (fiierele) i nu cu
pagini de lungime fix.

15. Disc de paginaie. Disc cu bra mobil


Un disc cu capuri fixe conine cte un dispozitiv de citire-scriere pentru fiecare pist (v.7.3.2).
Exist anumite avantaje n folosirea discului de paginaie, care constau n utilizarea unui fir
distinct de cereri pentru fiecare sector. Indicm dou aspecte practice ale acestei organizri:
Durata intervalului de deplasare de la un sector la altul (dintre dou sectoare
consecutive) pe sub dispozitivul de citire-scriere trebuie s fie suficient pentru a
permite lansarea unui transfer. Folosind un canal de intrare-ieire, aceast lansare poate
fi accelerat datorit nlnuirii instruciunilor.
Discul de paginaie reordoneaz cererile, care nu sunt, deci, executate n ordinea
apariiei lor. Vor fi necesare precauii suplimentare atunci cnd ordinea transferurilor
este important.

53
Disc cu bra mobil
Un disc cu bra mobil are un singur cap de citire-scriere pentru fiecare suprafa de disc. O
deplasare radial a braului portant permite s aducem capul de asupra pistei alese. La timpul de
ateptare a sectorului ales se mai adaug timpul de deplasare radial a braului din poziia sa
iniial. Dac unitatea de disc are mai multe suprafee, toate braele portante sunt unite rigid;
mulime pistelor accesibile fr deplasarea braelor formeaz un cilindru. Au fost propui
urmtorii algoritmi:
1,Prim sosit, prim servit (FIFO
1) Cel mai apropiat servit primul (SSTF: Shortest Seek Time First)
2) Ascensor i alte variante(Scan

1. Mijloacele de susinere a segmentrii memoriei i386.


Spaiul fizic de adrese a procesorului i386 este de 4 Go, ceea ce este determinat de magistrala de
adrese pe 32 de bii. Memoria fizic este liniar cu adrese de la 00000000 pn la FFFFFFFF n
cod hexazecimal. Adresa virtual, utilizat n program este reprezentat de perechea (nr.segment,
depl). Deplasarea este dat de cmpul respectiv al instruciunii, iar numrul segmentului n
unul din cele 6 registre de segment ale procesorului (CS, SS, DS, ES, FS i GS), fiecare fiind de
16 bii. Mijloacele de segmentare formeaz nivelul superior al dispozitivului de administrare a
memoriei virtuale a procesorului i386, iar dispozitivele de organizare a paginaiei nivelul
inferior. Mijloacele de paginaie pot fi active sau dezactivate (cu ajutorul unui bit special n
registrul de comand al procesorului) i n dependen de aceasta se modific sensul
transformrii adresei virtuale, executate de mijloacele de segmentaie.
2. Mecanismul segmentare cu paginaie i386
Cnd sistemul de paginaie este activat lucreaz att mecanismul de segmentare, descris mai sus,
ct i mecanismul de gestiune a paginilor, dar n acest caz sensul funcionrii mecanismului de
segmentare se modific. Spaiul virtual de adrese al unei lucrri este de 4 Go n care se vor afla
toate segmentele (fig.8.24). Ca i mai nainte selectorul lucrrii determin numrul segmentului
virtual, iar deplasarea din instruciunea lucrrii deplasarea n interiorul acestui segment.
Deoarece toate segmentele se afl n acelai spaiu de adrese, este posibil intersecia lor,
procesorul necontrolnd aceste situaii, las problema n seama sistemului de operare. Prima
etap de transformare a adresei virtuale, legat de transformarea deplasrii i selectorului
utiliznd tabelele GDT i LDT, care conin descriptorii segmentelor, este exact la fel ca i etapa
de transformare a acestora atunci cnd mecanismul de gestiune a paginilor este dezactivat.

1. Mijloacele de apelare a subrutinelor i lucrrilor


Sistemul de operare trebuie s pun la dispoziia lucrrilor mijloace de apelare a subrutinelor
sistemului de operare i din diferite biblioteci de programe, de asemenea s posede mijloace
pentru lansarea lucrrilor, iar n cazul regimului multitasking mijloace de comutare rapid a
lucrrilor la alta. Apelarea unei subrutine se deosebete de lansarea unei
lucrri prin faptul, c n primul caz spaiul de adrese rmne acelai (tabelul LDT nu va fi
schimbat), iar n al doilea caz spaiul de adrese este n totalitate schimbat.
Apelarea unei subrutine fr schimbarea segmentului de cod n regimul protejat al procesorului
i386 are loc analogic apelrii n regim real cu ajutorul instruciunilor JMP i CALL.

54
Pentru apelarea unei subrutine, codul creia se afl ntr-un alt segment (care poate aparine unei
biblioteci, unei alte lucrri sau sistemului de operare), procesorul i386 pune la dispoziie dou
variante de apel, ambele garantnd protecia prin utilizarea drepturilor de acces.

2. Elaborarea unui sistem de operare. Decompoziia ierarhic i maini abstracte


Obiectivele acestui capitol sunt:
Introducerea unor principii de structurare a sistemelor soft: decompoziia ierarhic, nivele de
abstractizare, obiecte i interfee. Interesul pentru aceste noiuni depete cadrul strict al softului
de sistem; totui, aceste concepte au o importan particular pentru sistemele de operare dat
fiind complexitatea acestora, dimensiunile adesea foarte mari i interaciunile caracteristice
dintre software i hardware.
Aplicarea acestor noiuni la descrierea schemelor de organizare i funcionare a unui sistem de
operare foarte simplu, ceea ce permite specificarea componentelor sale principale i a interfeelor
interne.

3. Conceptul de descenden i structuri cu nivele. Noiunea de obiect


O dificultate esenial n elaborarea programelor este generat de distana mare, care separ
limbajul de formulare a problemelor i limbajul n care sunt exprimai algoritmii de rezolvare a
acestora. Un limbaj definete obiecte i mecanismele care permit crearea lor, aciuni sau
primitive (metode), care permit manipularea acestor obiecte i reguli de compoziie a acestor
aciuni. Altfel, orice limbaj definete, cel puin conceptual, o "main" capabil s interpreteze:
setul de instruciuni al acestei maini i mulimea primitivelor limbajului; memoria sa permite
reprezentarea obiectelor definite de limbaj; mecanismul su de execuie este cel definit de
regulile de interpretare ale limbajului.
Noiunea de obiect
Decompoziia ierarhic n maini abstracte, prezentat n 9.1.1, nu acoper toate aspectele
structurrii sistemelor. n particular, pot aprea probleme atunci cnd unele situaii sau elemente
trebuiesc create ori distruse n mod dinamic, sau cnd vrem s descriem elemente, care posed
proprieti comune.
Pentru a facilita luarea n consideraie a acestor aspecte este introdus un nou instrument de
structurare, numit obiect. Obiectele sunt caracterizate de o mulime de proprieti i mecanisme,
aceast noiune furniznd un cadru de exprimare comod a unor concepte informatice diverse:
desemnare, legare, tipuri, protecie, etc.
Un obiect este definit cu ajutorul urmtoarelor atribute:
un nume, care permite desemnarea obiectului i deosebirea lui de alte obiecte,
o stare, care este definit n orice moment de timp i poate evolua pe parcursul timpului,
o mulime de operaii, funcii de acces sau metode, care permit:

4. Interfee i specificri
Vom introduce noiunea de interfa i tehnicile utilizate pentru specificarea interfeelor. Ne vom
limita aici la interfeele pentru care mecanismul de activare este apelarea.
O interfa este asociat unei maini abstracte sau unei clase de obiecte. Ea conine doar trei
tipuri de informaii, accesibile utilizatorului mainii sau obiectului:
structuri de date,
proceduri,
o mulime de reguli de utilizare a datelor i a procedurilor.
Regulile de utilizare constituie un mod de ntrebuinare a structurilor de date i procedurilor. Ele
exprim restriciile utilizrii lor, i pot lua diverse forme:
55
restricii de accesare a datelor (numai citire, de exemplu),
restricii, legate de ordinea de execuie a procedurilor,
restricii, care afecteaz execuia simultan a procedurilor sau accesarea simultan a datelor.
Problema formulrii specificrilor unei interfee nu are nc o soluie general satisfctoare.
Doar o parte a specificrilor poate fi exprimat in mod formal i, deci, exist posibilitatea unor
validri automate: acestea sunt specificrile tipurilor variabilelor i a parametrilor procedurilor.
Pentru a specifica efectul unui apel de procedur sunt utilizate dou tipuri de tehnici:
mecanismul pre- i post-condiiilor,
echivalena cu o alt expresie a algoritmului procedurii.

5. Organizarea unui sistem mono-utilizator. Specificrile i organizarea general


Pentru a ilustra folosirea conceptului main ierarhic abstract vom elabora un sistem de
operare redus la forma cea mai primitiv (din considerente de simplitate). Trebuie proiectat un
sistem minim, destinat s administreze un microcalculator individual, folosit de un singur
utilizator (cum ar fi CP/M de la Digital Research).

6. Organizarea unui sistem mono-utilizator. Funciile sistemului. Limbajul de


comand
Calculatorul administrat de sistemul nostru de operare const dintr-un procesor, o memorie
operativ i urmtoarele echipamente periferice: un terminal (display i tastatur), una sau dou
uniti de dischet, o imprimant. Gestionarea perifericelor este asigurat de procesor
(posibilitatea administrrii prin ADM este propus ca exerciiu).
Sistemul trebuie s permit:
salvarea i pstrarea informaiilor n fiiere pe dischet,
transferarea informaiilor ntre fiiere i periferice,
elaborarea, depanarea, salvarea i executarea programelor.
Este necesar ca structura sistemului de operare s permit adaptarea simpl la diferite
configuraii de calculatoare, n special, la diferite tipuri de memorie secundar i echipamente
periferice.

7. Organizarea unui sistem mono-utilizator. Decompoziia sistemului. Interfee interne


O prim versiune a sistemului de operare poate fi realizat utiliznd direct interfaa definit de
maina fizic. Vom arta mai jos modul n care un sistem fizic monolit poate fi pas cu pas
descompus pentru a ajunge la subansambluri logic coerente.
1) Gestionarea fiierelor i a fluxurilor
La prima etap este necesar s izolm componenta sistemului responsabil de administrarea
fiierelor. Pentru aceasta trebuie s precizm structura fiierelor i s specificm funciile de
acces.
2, Realizarea operaiilor de intrare-ieire

56
Realizarea mainii SGF, care administreaz fiierele i fluxurile, poate de asemenea fi
simplificat dac avem la dispoziie primitive de intrare-ieire mai evoluate dect cele furnizate
direct de maina fizic. Vom defini o nou main numit PIE (primitive intrri-ieiri) cu
urmtoarea interfa:

8. Organizarea unui sistem mono-utilizator. Primitive de intrare-ieire


Driverele dispozitivelor periferice urmeaz schema sincron (v. 2.4.2.1). Vom descrie mai nti
administrarea unei uniti de disc, apoi intrrile-ieirile n mod caracter.

9. Organizarea unui sistem mono-utilizator. Intrri-ieiri pentru unitatea de disc


Exemplul care urmeaz este pentru un disc cu un format particular, dischet simpl densitate cu
o singur suprafa de lucru. Principiul de parametrizare a sistemului n funcie de formate va fi
examinat mai trziu. Discheta are 77 piste de 27 sectoare fiecare; lungimea unui sector este de
128 octei. Sectorul este unitatea de transfer a informaiei.
Pentru a accelera transferurile secveniale, care-s mai frecvente, acestea sunt realizate printr-o
zon de memorie-tampon. La o operaie de citire este recomandat s se citeasc o pist ntreag,
deoarece ntrzierea introdus de cutarea pistei intervine o singur dat pentru toat mulimea
sectoarelor. Din aceast cauz vor fi rezervate n permanen n zone-tampon de lungimea unei
piste (27 sectoare de 128 caractere fiecare). Valoarea lui n de ordinul ctorva uniti va fi fixat
la generarea sistemului.
Fie c este necesar s se citeasc un sector cu numrul nsect de pe pista np. Dac unul din
tampoane conine pista np, citirea se va face fr a accesa discheta, din sectorul respectiv al
zonei-tampon. n caz contrar, coninutul pistei np va trebui ncrcat n prealabil de pe dischet n
una din zonele-tampon. Alegerea zonei-tampon va fi tratat mai departe.

1. Organizarea unui sistem mono-utilizator. Introducere extragere caractere


n acest caz este utilizat schema sincron de comand descris n 2.4.2.1, pe care o vom relua
pentru cazul scrierii unui simbol. Pentru a permite reasocierea perifericelor, adresa controlerului
va fi specificat ca un parametru al driverului.
procedura ieire_car(c,p); transmite caracterul c controlerului p
TEST(p);
if nonpreg then
<tratare eroare>
endif;
EXTRAGE(c,p);
test: TEST(p);

57
if err then
<tratare eroare>
endif;
if nonterm then
go to test
endif;
O procedur analogic intrare_car(c,p) este definit pentru citire.
Pentru realizarea schimburilor cu perifericele logice este definit un tabel de asociere cu trei
intrri:
tabel_perif[tastatur]=adresa controlerului asociat tastaturii logice
tabel_perif[display]=adresa controlerului asociat ecranului logic
tabel_perif[imprimant]=adresa controlerului asociat imprimantei logice.

2. Organizarea unui sistem mono-utilizator. Sistemul de gestionare a fiierelor.


Organizarea logic
Pentru notarea unui fiier este utilizat o schem pe dou nivele, adic numele unui fiier este de
forma
<nume suport>:<identificator>.<tip>
Numele suportului identific suportul fizic al fiierului, adic unitatea de disc utilizat i este
definit, de obicei, n mod implicit. n interiorul unei dischete schema de desemnare este plat;
identificatorul tipului specific natura fiierului (program translatabil, absolut, instruciuni, date,
etc.). Fiierele sunt organizate secvenial, sub forma unei suite de nregistri de lungime fix
(128 octei). Sistemul furnizeaz primitive de accesare secvenial a nregistrrilor, specificate n
9.2.1.2. Orice funcie de acces trebuie s fie construit plecnd de le aceste primitive.

1. Organizarea unui sistem mono-utilizator. Sistemul de gestionare a fiierelor.


Organizarea fizic
n calitate de unitate de alocare sau bloc vom considera un set de 8 sectoare consecutive.
Starea de alocare a dischetei este descris cu ajutorul unui tabel de ocupare, care conine cte un
bit pentru fiecare bloc (fie 250 bii; n realitate un pic mai puin, fiindc primele dou piste ale
dischetei sunt rezervate n permanen). Gsirea unui bloc liber se reduce la gsirea primului bit
egal cu 0 n acest tabel: numrul bitului este numrul blocului cutat.
Datele despre un fiier sunt grupate ntr-un descriptor care conine urmtoarele informaii:
numele fiierului (<identificator>.<tip>),
lungimea fiierului (numrul de nregistrri),
numrul nregistrrii viitoare la citire sau scriere,
tabelul implantrii fiierului
2. Organizarea unui sistem mono-utilizator. Sistemul de gestionare a fiierelor. Operaii
cu fiierele
Deschiderea unui fiier cere ncrcarea descriptorului acestuia ntr-o zon a memoriei centrale,
rezervat n prealabil. Adresa acestui descriptor este transmis ca parametru tuturor operaiilor
ulterioare asupra fiierului.
La nchiderea unui fiier deschis, descriptorul din memorie este recopiat pe disc i locul lui este
eliberat ca i zona de memorie, ocupat de fiierul propriu-zis. Dac rmn nregistrri
modificate ale fiierului ntr-o zon-tampon de I-E, ele la fel vor fi recopiate pe disc. Scrierea se
face n mod imediat.
Crearea unui fiier const n alocarea unui descriptor (pe disc) acestui fiier; iniial fiierul este
vid i tabelul su de implantare conine doar zerouri.
La distrugerea unui fiier vor fi eliberate toate unitile de alocare ocupate de fiier, ca i
amplasamentul ocupat de ctre descriptorul acestuia. Catalogul i tabelul de ocupare a discului
sunt pui la zi.
58
Vom descrie principiile de organizare a programelor de citire i scriere secvenial a unei
nregistrri. Programele de creare, distrugere, deschidere i nchidere a unui fiier sunt propuse
ca exerciii.

3. Organizarea unui sistem mono-utilizator. Intrri-ieiri logice i gestiunea fluxurilor


Trecem acum la realizarea operaiilor pe perifericele logice (terminalul i imprimanta). Pentru
aceasta va fi utilizat interfaa furnizat de PIE. Ieirea pe imprimant este foarte simpl:
procedura scriere_linie(tampon);
numr:= tampon[0];
for i:=1 to numr do
imprimare_car(tampon[i])
endfor
Procedura afiare_linie poate fi obinut nlocuind imprimare_car prin afiare_car. S ne
amintim, c primul octet din tampon indic numrul de caractere pentru ieire.
Procedura citire_linie conine unele funcii de editare. Pentru aceasta unele caractere speciale
nlocuiesc funcii particulare:
TERGE_CAR : s fie ters ultimul caracter introdus
TERGE_LINIE : s fie tears toat linia
APELARE_SYS : ntrerupere comand curent
CR : terminare linie (retur car)

4. Organizarea unui sistem mono-utilizator. Interpretorul limbajului de comand.


Schema general
Schema general a interpretorului limbajului de comand poate fi reprezentat printr-o bucl
infinit:
iniializare_sistem
ciclu
iniializare_comand
citire comand
analizare comand
if comand corect then
interpretare comand:
preparare mediu de execuie
lansare execuie
else
diagnosticare eroare
endif
59
endciclu
Comanda este citit ntr-un tampon de memorie cu ajutorul terminalului (logic) utiliznd
procedura cititre_linie, furnizat de interfaa SGF. Analiza comenzii determin cmpurile
distincte ale acesteia. Primul cmp este numele comenzii, mai departe urmeaz parametrii
transmii programului responsabil de interpretare.

5. Organizarea unui sistem mono-utilizator. Interpretorul limbajului de comand.


Mediul de execuie
Prima sarcin a unui interpretor, nainte de lansarea execuiei unei comenzi, este de a pregti
mediul su, adic mulimea obiectelor, care vor fi utilizate i informaiile, care vor permite
accesarea obiectelor.
n cazul executrii unui program al utilizatorului acest mediu conine (v.fig.9.3):
segmentele cu programul care trebuie executat i datele acestuia,
stiva de execuie,
o zon de lucru de lungime fix, numit pagin de gard, care conine:
pointeri, care puncteaz zonele cu segmentele program i date, precum i zona liber,
descriptorii fiierelor, specificate n comand,
un tampon destinat schimburilor cu fiierele.

6. Organizarea unui sistem mono-utilizator. ncrcarea unui program. Tratarea erorilor


de execuie
Deschiderea fiierului <nume comand> i citirea antetului acestuia ntr-un tampon
intern.
Determinarea dac capacitatea memoriei disponibile permite ncrcarea.
Crearea paginii de gard n amplasamentul rezervat acestui efect.
ncrcarea segmentelor de cod i de date n zonele indicate n antet; dac are loc
reimplantarea s se adauge adreselor realocate deplasarea necesar; s se pun la zi
informaiile, care descriu memoria disponibil.
Iniializarea stivei de execuie i plasarea n topul ei a unei adrese de retur n interpretorul
limbajului de comand.
Punerea la zi a pointerilor paginii de gard; ordonanarea n tamponul situat n aceast
pagin a cozii de comenzi.
Deschiderea fiierelor (dac exist) numele crora sunt specificate n comand i plasarea
descriptorilor acestora n pagina de gard.
Executarea unei ramificaii spre punctul de intrare a segmentului de cod.
Tratarea erorilor de execuie

60
Detectarea unei erori n cursul execuiei provoac un cod de eroare sau o deviere, chiar dac ea a
survenit sau nu n cursul executrii unei primitive realizate prin intermediul unui apel al
supervizorului.
Pot fi evideniate dou cazuri n dependen de gravitatea erorii:
Eroare ntr-un program utilizator sau ntr-o component necritic a unui program de sistem, cum
ar fi interpretorul limbajului de comand. Exemplu: operaie aritmetic care nu poate fi
executat, memorie insuficient pentru ncrcarea unui program.
Eroare n cursul unei operaii critice, adic care pune n pericol integritatea datelor. Exemplu:
eroare irecuperabil la un transfer pe disc.

7. Partajarea unei maini: maini virtuale


main virtual, interfaa creia este identic cu interfaa mainii fizice partajate. O main
virtual nu exist fizic n realitate, comportamentul ei fiind simulat pentru utilizator de ctre un
program al sistemului de operare, care este executat pe maina fizic. Modul obinuit de
partajare este multiplexarea, care const n alocarea mainii fizice utilizatorilor pentru trane
succesive de timp, urmnd principiul prezentat n 2.3.2.3 pentru gestionarea lucrrilor n timp
partajat.
Identitatea interfeelor mainii virtuale i mainii fizice poate fi doar aproximativ. Dou
observaii, legate de aceasta, pot fi fcute:
1) Partajarea prin multiplexare provoac o cdere a performanelor mainilor virtuale, cu att
mai substanial cu ct mai mare este numrul utilizatorilor.
2) Punerea la dispoziia utilizatorilor a tuturor resurselor unei maini fizice ridic probleme
delicate legate de protecie atunci cnd se vorbete despre resursele care pot pune n
pericol integritatea sistemului. Acesta este, de exemplu, cazul instruciunilor privilegiate.
Iat din care cauz interfaa unei maini virtuale este cel mai des o submulime a interfeei
mainii fizice partajate, fiind excluse instruciunile privilegiate i accesul direct la
periferice sau la unele zone ale memoriei fizice. Unele sisteme realizeaz, totui, maini
virtuale complete.

8. STRUCTURA SISTEMELOR MULTITASKING. Sistem cu partiia memoriei.


Specificaii

9. Sistem cu partiia memoriei. Organizarea sistemului


10. Sistem cu memorie virtual. Organizare general
11. Exemplu de elaborare a unui sistem de operare multitasking. ncrcarea sarcinii.
n modul real avem 640 Ko de memorie operativ 10 segmente a cte 64 Ko fiecare. Dou
segmente sunt rezervate sistemului de operare (unul pentru nucleu i altul pentru variabilele
sistemului), adic pentru lucrri rmn 8 segmente. Pentru simplitate vom presupune c fiecare
lucrare a sistemului nostru este un fiier de tipul COM din DOS.
Programele de tipul COM conin un singur segment (sau cel puin nu conin referine explicite la
alte segmente). Un fiier COM este citit de pe disc i adus n memoria operativ ncepnd cu
PSP:0100. Programele de tipul COM pot utiliza mai multe segmente, dar n acest caz vor calcula
singure adresele segmentelor, folosind PSP n calitate de baz.
Programele COM au unele avantaje fa de programele EXE atunci cnd sunt preconizate pentru
utilite mici, scrise n limbajul de asamblare. Ele se ncarc mai repede, deoarece nu este necesar

61
deplasarea segmentelor, ocup mai puin loc pe disc, din cauza lipsei n modulul absolut a
antetului EXE i a segmentului de stiv.

12. Comutarea lucrrilor. Structura descriptorului lucrrii.


Presupunem, c fiecare program COM ocup un segment n memorie, ceea ce poate fi ilustrat ca
n figura 9.5:
0000H 0100H FFFFH
PSP Programul FFFE Stiva

Fig.9.5. Structura unui program COM

Pentru comutarea lucrrii curente vom utiliza ntreruperea 08h. Este cunoscut, c timer-ul trimite
procesorului cu o frecvena de 18.2 Hz o ntrerupere hardware i procesorul ndeplinete
procedura asociat ntreruperii a opta (int 08h), dac aceasta este armat. n stiv sunt pstrate
registrul indicatorilor (flagurilor, PUSHF) i registrele care indic instruciunea curent ((CS:IP)
PUSH CS, PUSH IP), n total 6 octei. Dup terminarea prelucrrii ntreruperii hardware, aceste
registre sunt restabilite i continu executarea programului principal. Problema noastr va fi
rezolvat dac n timpul tratrii ntreruperii vom nlocui stiva astfel nct atunci cnd registrele
vor fi restabilite s fie executat un alt program, aflat n memorie
Structura descriptorului lucrarii
n modul real memoria operativ conine 10 segmente fizice, fiecare segment avnd capacitatea
de 64 Ko (640Ko/64Ko), ns doar 8 lucrri pot pretinde regimul multitasking, deoarece dou
segmente sunt ocupate de sistemul de operare (unul pentru nucleu i altul pentru variabilele
sistemului).
Pentru fiecare dintre cele 8 lucrri i pentru nucleu va fi folosit urmtoarea structur
task8 DB ? ; char id; (255 - no task)
DD ? ; void far * pointer;
DW 255 DUP(?) ;- unsigned int stack[255]; }
n care id este identificatorul lucrrii: numrul lucrrii, dac lucrarea este ncrcat,
255, dac lucrarea nu este ncrcat,
254, dac procesorul a fost retras (starea eligibil a lucrrii, suspendare).
pointer punctul de intrare n program.
stack[255] aici vom pstra la comutare unele registre ale lucrrii, de asemenea tot aici va fi pstrat indicatorul
stivei lucrrii, n care sunt salvate celelalte registre i, la necesitate, alte informaii.

13. Preluarea ntreruperii 08h. Instalarea procedurii noi de tratare


n DOS redefinirea unei ntreruperi standard are loc n felul urmtor:
obinerea adresei procedurii standard de tratare,
instalarea procedurii de tratare noi,
executarea programului,
restaurarea procedurii de tratare standard.
Obinerea adresei procedurii de tratare standard este bazat pe urmtoarele. Tabelul vectorilor
ntreruperilor se afl n spaiul de adrese ncepnd cu 0000:0000 i are 256 elemente (dup
numrul de ntreruperi). Fiecare element al tabelului este un vector de 4 octei, care conin adresa
procedurii de tratare standard a ntreruperii. Pentru obinerea adresei procedurii de tratare
standard poate fi utilizat funcia MS DOS 35h preluare vector ntrerupere:

14. ncrcarea lucrrii. Comutarea lucrrii. Trecerea lucrrii n starea eligibil.


Este necesar s fie cunoscut structura TTASK. Unele comentarii pot fi gsite chiar n textul
programului.
doStart8: mov al,[tasknum]

62
inc al
mov [tasknum],al
Mrim numrul de lucrri

mov [cs:di],al
; Salvm punctul de intrare n descriptorul lucrrilor
mov [Word Ptr cs:di+1],100h
mov [cs:di+3],es
Salvm punctul de intrare n descriptorul lucrrilor ES:100h
Comutarea lucrrii
Programele COM sub MS DOS pot fi terminate prin:
a) int 20h
b) mov ah,4Ch
int 21h
sau c) ret
Trecerea lucrrii n starea eligibil
Trecerea unei lucrri n starea eligibil (retragerea temporar a procesorului) se va produce prin
nscrierea valorii 254 n identificatorul (id) ei.
doStop3: call _di
mov al,254
mov [cs:di],al
mov dx,[cs:di+3]
call _ei
ret

15. Crearea discului de ncrcare


Datele sectorului 1 al pistei 0, dispozitivul de citire-scriere 0 i suportul de disc 0, pentru primul
disc, care a rspuns (dischet sau harddisc) sunt ncrcate la adresa absolut 0000:7c00, iar
controlul va fi transmis la aceast adres. Dac consultarea tuturor discurilor a fost fr succes,
controlul este transmis ntreruperii INT 18H.
Pentru un harddisc, acest cod din sectorul rdcin determin n realitate compartimentul activ
al discului, dup care ncarc i execut sectorul rdcin al acestui compartiment. Prin acesta
controlul este transmis sistemului de operare activ al discului.
Problema este s fie elaborat o procedur, care va ncepe lucrul de la adresa CS:07C00h i care
va ncrca sistemul de operare. Pentru simplitate vom presupune c nucleul sistemului de operare
este primul fiier nefragmentat pe dischet cu dimensiunea mai mic sau egal cu 64 Ko. Primul
fiier pe o dischet de 1.44 Mo se afl n sectorul 33. (Dac ar exista o procedur de citire a unui
sector (de tipul int 25h) nu ar fi probleme mari cu ncrcarea din boot.)

16. SISTEME DE OPERARE DE REEA. Structura sistemelor de operare de reea


Un SO de reea este baza oricrei reele de calculatoare. Fiecare calculator din reea este n mare
msur autonom din care cauz prin conceptul de sistem de operare de reea n sens larg
nelegem totalitatea sistemelor de operare ale calculatoarelor, care formeaz reeaua i care
interacioneaz n scopul schimbului de mesaje i partajrii resurselor conform unor reguli unice,

63
numite protocoale. n sens ngust, un sistem de operare de reea este considerat sistemul unui
calculator distinct, care asigur calculatorului posibilitatea lucrului n reea.

Administrarea resurselor locale


(Sistemul de operare local)

Partea Server Partea Client


Mediul sistemului
de operare
Mecanismele, care Mecanismele de
pun la dispoziia accesare a resurselor
altor calculatoare i serviciilor altor
resursele proprii calculatoare

Componetele comunicaionale

Spre reea
Fig. 10.1. Structura sistemului de operare de reea

17. Tipuri de sisteme de operare de reea


Dac un calculator pune la dipoziia altor utilizatori din reea serviciile sale, acesta joac rol de
server. Calculatorulu, care beneficiaz de serviciile serverului se numete n acest caz client. Un
calculator n reea poate ndeplini ambele funcii n acelai timp.
Dac ndeplinirea unor funcii de server este destinaia principal a calculatorului (de exemplu,
organizarea folosirii n comun a fiierelor, a faxului, a imprimantei, sau asigurarea posibilitii de
lansare a aplicaiilor la distan) acesta se va numi server dedicat. n dependen de tipul resursei
partajate serverul se numete file-server, fax-server, print-server, server de aplicaii, etc.
Evident, este de dorit ca pe serverele dedicate s fie instalate sisteme de operare optimizate
special pentru ndeplinirea funciilor de server specifice. Din aceast cauz n reelele de
calculatoare cu servere dedicate sunt de obicei utilizate sisteme de operare n componena crora
intr mai multe variante, care difer prin posibilitile prii server.

18. Sisteme de operare pentru grupuri de lucru i pentru reele corporative


Sisteme de operare de reea au proprietati diferite, n funcie de faptul dac acestea sunt destinate
pentru reele grup de lucru (diviziune) reelele de campus scar sau reele de ntreprinderi.
Departamentele de reea - sunt utilizate de ctre un mic grup de angajai, rezolvarea sarcinilor
comune. Scopul principal al plcii de reea este o divizie a resurselor locale, cum ar fi aplicaii,
date, imprimante laser i modemuri. De obicei, departamente de reea nu sunt mprite n
subreele.
reea campus - conecta mai multe reele de departamente ntr-o singur cldire sau n aceeai
incint. Aceste reele sunt nc reele locale, dei acestea pot acoperi o suprafa de civa
kilometri ptrai. Serviciile includ o interconectare de reea ntre departamente, acces la bazele de
64
date ale companiilor, acces la fax servere, modemuri de mare vitez i imprimante de mare
vitez.
Reeaua Enterprise (reele corporative) - conectai toate calculatoarele din zonele individuale
ale companiei. Acestea pot acoperi un ora, o regiune sau continent. n astfel de reele,
utilizatorii au acces la informaii i aplicaii n alte grupuri de lucru, alte departamente, birouri i
sediul central.

65

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