Sunteți pe pagina 1din 12

1.

Noiuni De Baz i Clasificri Un sistem de calcul cu prelucrare multipl dispune de mai multe
Un calculator const dintr-un ansamblu de componente procesoare, care pot s execute simultan unul sau mai multe
funcionale fizice i logice, care coopereaz pentru a satisface programe.
cerinele utilizatorilor privind introducerea, stocarea, Sistemele de timp real funcioneaz, de obicei, n cadrul unor
prelucrarea, cutarea i transmiterea informaiilor. Aceste sisteme de comand i este necesar ca valorile anumitor atribute s
componente funcionale sunt structurate pe niveluri, care se ncadreze n limite destul de restrictive, dictate de dinamica
interacioneaz prin interfee bine definite. Prin noiunea de proceselor comandate.
sistem de operare nelegem modulele program ale unui SC, care
administreaz resursele tehnice. Modulele n cauz soluioneaz 5. Exemple de sisteme de operare
situaiile de conflict, optimizeaz productivitatea sistemului, Windows,Unix, MS DOS.
sporesc eficiena utilizrii lui.
Valorile concrete ale atributelor sistemelor de operare i 6. Cazul calculatoarelor personale
combinaii ale acestora determin diverse tipuri de SO. Conform Cea mai simpl configuraie a unui calculator personal (PC) include o
acestor atribute pot fi evideniate urmtoarele tipuri de sisteme de unitate central, o memorie principal, un display, o tastatur i un mouse.
operare: Aceast configuraie, de regul, este completat de o memorie secundar i o
secveniale, imprimant.
cu multiprogramare, Utilizatorul unui astfel de sistem va cere minimum urmtoarele dou
cu prelucrare multipl, tipuri de servicii:
n timp real, etc. identificarea i crearea unor fiiere sau mulimi structurate de informaii;
stocarea acestor fiiere n memoria secundar; transferarea informaiilor
2. Noiuni i termeni din domeniul resurselor tehnice ntre fiiere i dispozitivele de intrare/ieire;
Pentru a trece la noiunile principale, legate de hardware, vom face execuia unor programe existente sau introduse sub form de fiiere n
cunotin mai nti cu funciile de baz ale unui calculator. Pot fi PC;
evideniate cinci funcii eseniale : stocarea datelor i extragerea introducerea datelor necesare pentru execuia programului (de la
rezultatelor: tastatur, dintr-un fiier sau de la alte surse periferice); listarea rezultatelor la
iniializarea implic testarea prilor importante display, imprimant sau copierea lor ntr-un fiier.
ale calculatorului, rularea fiierelor de pornire i ncrcarea altor
fiiere necesare, cum ar fi driverele dispozitivelor periferice; 7. Comanda unor procese industriale
introducerea reprezint transferul datelor dintr-o
surs extern n calculator. Surse externe pot fi tastatura, mouse- Procesul de producere este comandat de un calculator care ndeplinete
ul, discheta, discul mobil, memory stick-ul, aparatul digital de urmtoarele funcii:
fotografiat etc.; Reglare. Pentru o derulare bun a procesului de fabricaie
procesarea se refer la manipularea datelor parametrii de funcionare (temperatura, presiunea, concentraia,
introduse n scopul producerii unui rezultat (ieirea); etc.) trebuie s se afle ntr-o plaj de valori predefinite. Pentru
stocarea constituie procesul salvrii informaiilor aceasta va fi acionat debitul de intrare a materiilor prime A sau B.
(date sau programe) ntr-un dispozitiv de pstrare, de exemplu Parametrii de funcionare sunt msurai cu ajutorul unor captoare.
discul fix, pentru recuperarea ulterioar. Calculatorul preia aceste msurri i, n dependen de algoritmul
de comand, acioneaz robinetele de intrare.
3. Noiuni i termeni din domeniul sistemelor de operare nregistrare. Rezultatele msurrilor sunt periodic nregistrate;
valorile lor sunt afiate pe un tablou de bord i recopiate ntr-un
Un sistem de operare este un ansamblu de programe de control i fiier ("jurnal de bord") n scopul unor prelucrri ulterioare (date
de serviciu care ghideaz un calculator n execuia sarcinilor sale, asist statistice).
programele de aplicaie i interacioneaz cu utilizatorul prin Securitate. n cazul n care unul dintre parametrii msurai
intermediul anumitor funciuni. Natura funciilor i modul n care depete o valoare critic predefinit reactorul trebuie oprit
acestea sunt realizate determin atributele care caracterizeaz un sistem imediat.
de operare: timpul de rspuns- exprim durata intervalului delimitat de
lansarea unei cereri de serviciu i achitarea acesteia de ctre sistem, 8. Sisteme tranzacionale
simultaneitatea utilizrii- msoar gradul n care un sistem poate s Caracteristicile principale:
execute n acelai timp mai multe lucrri., eficiena- msoar sistemul gestioneaz un set de informaii sau baze de date, care pot
proprietatea unui sistem de a folosi n mod optim resursele de care atinge volume importante de informaie;
dispune, partajarea resurselor i protecia informaiei n calculator- asupra acestor informaii pot fi executate un anumit numr de
caracterizeaz nivelul la care utilizatorii au posibilitatea s utilizeze n operaii predefinite sau tranzacii, adesea interactive;
comun informaia prezent n sistem i nivelul la care pot s comunice sistemul este dotat cu un mare numr de puncte de acces i un mare
ntre ei, n deplin siguran, generalitatea, flexibilitatea, numr de tranzacii se pot derula simultan. Caracteristicile obligatorii ale
extensibilitatea, fiabilitatea i disponibilitatea, transparena i unui astfel de sistem tranzacional sunt disponibilitatea i fiabilitatea; pentru
vizibilitatea. Un sistem de operare este obligat: unele sisteme poate fi important i tolerana la defeciuni. O caracteristic
s pstreze informaia despre starea fiecrei resurse, important ale sistemelor tranzacionale este multitudinea activitilor
s ia decizia crui proces s i se aloce resursa, n ce cantitate, paralele, iar n multe cazuri i repartizarea geografic a componentelor.
cnd, cum i unde, 9. Sisteme n timp partajat
s aloce resursa i, la momentul oportun, s o retrag. 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;
4. Tipuri de sisteme de operare, obiective i funcii legate de existena unei comuniti de utilizatori: partajarea
Valorile concrete ale atributelor sistemelor de operare i informaiilor, comunicaii ntre utilizatori.
combinaii ale acestora determin diverse tipuri de SO. Conform Problemele care apar datorit conceptului de partajare a timpului sunt o
acestor atribute pot fi evideniate urmtoarele tipuri de sisteme de combinaie a problemelor existente n cazul unui calculator individual cu
operare: cele din sistemele tranzacionale. Caracteristicile obligatorii ale unui astfel
Un sistem secvenial (tratare pe loturi, engl. batch processing, fr. de sistem mbin, n egal msur, calitile unui sistem de operare al unui
traitement par lots) execut la un moment dat un singur program, calculator individual i al unui sistem tranzacional, cum ar fi:
care trebuie terminat nainte de a lua ncepe execuia unui alt disponibilitatea, fiabilitatea, securitatea, exploatarea optim a
program. caracteristicilor resurselor fizice, calitatea interfeei i serviciilor
Sistemele cu multiprogramare accept la un moment dat mai multe utilizatorului, facilitatea adaptrii i extensibilitii.
programe n memoria central, acestea aflndu-se n diferite stadii
de execuie. 10. SISTEMUL DE OPERARE I PROCESELE
Noiunea de proces este asociat conceptului de lucrare i poate fi 15. EVOLUIA SISTEMELOR DE OPERARE
definit ca o suit temporal de execuii de instruciuni,
considerat ca fiind o entitate de baz n descrierea sau analiza Primele sisteme erau caracterizate prin prelucrarea secvenial a
funcionrii unui sistem. Evoluia n timp a unui proces presupune taskurilor. Timpul de execuie a programelor era relativ mare, instrumentele
un consum de resurse, dictat de natura i complexitatea de depanare primitive, fiecare programator i ncrca n mod individual
instruciunilor de execuie. n particular, rezult c ori de cte ori programul (pachetul de cartele perforate), apsa butoane, controla coninutul
se execut procedurile de sistem, resursele, pe care le utilizeaz locaiunilor de memorie, etc. (1950 1956). Au fost propuse programe de
acesta, intr n administrarea procesului, care a cerut serviciul. monitorizare (monitoare), care treceau de la o lucrare la alta n mod automat,
Resursele alocate unui proces variaz n timp. utilizatorul fiind responsabil de organizarea corect a programelor n cadrul
11. MAIN IERARHIC I MAIN EXTINS unui pachet primele ncercri de prelucrare pe loturi (1956 1959).
Setul de instruciuni realizat hardware mpreun cu instruciunile Dup 1965 au aprut primele sisteme cu partajare a timpului (time
suplimentare ale sistemului de operare formeaz sistemul de sharing), au fost propuse sisteme sofisticate de administrare a informaiei
comenzi al mainii extinse. Memoria virtual i mainile virtuale sunt nite principii care nici pn
Nucleul sistemului de operare va fi executat pe maina goal, astzi nu au fost exploatate pn la capt. Progresele ultimilor ani n
iar programele utilizatorului pe maina extins. domeniul resurselor tehnice au permis implementarea acestor principii nu
Procesul 1 Procesul 2 numai n cadrul sistemelor de calcul mari, ci i pentru calculatoarele
Maina extins personale.

16. De la "poart deschis " la tratarea pe loturi


Primele calculatoare nu dispuneau de sisteme de operare. Fiecrui
Maina goal Programele utilizator i se rezerva pentru un timp determinat calculatorul cu toate
utilizatorului resursele acestuia. Interaciunea era direct, programul i datele fiind
(procese)
introduse n mod manual sub form de zerouri i uniti. Utilitele care
au aprut aveau destinaia de a asista elaborarea programelor
Sistemul de operare (asambloare, compilatoare, etc.) sau de a facilitata operaiile de
Procesul 4
Procesul 3 intrare-ieire.Acest mod de exploatare, numit "poart deschis" , era
de o eficacitate minim. Din aceast cauz la sfritul anilor '50 au
aprut primele "monitoare de nlnuire" - programe care permiteau
Fig.1.10. Maina extins. executarea secvenial a unui set de lucrri, pregtite anticipat,
trecerea de la o lucrare la alta fiind automatizat.

12. ALTE PUNCTE DE VEDERE ASUPRA SISTEMELOR DE 17. Multiprogramarea i partajarea timpului
OPERARE Utilizarea principiului multiprogramrii sau partajarea memoriei ntre
Sistemele de operare pot fi abordate din diferite puncte de vedere, mai muli utilizatori a permis o utilizare i mai bun a procesorului
cum ar fi SO i procesele, SO i maina extins sau SO i maina central. Exploatarea unui calculator conform principiului timpului
ierarhic. Exist i alte puncte de vedere asupra sistemelor de partajat ofer utilizatorilor posibiliti analogice unui calculator
operare pe care un specialist ar trebui s le cunoasc. individual, permind beneficiul unor servicii comune la un pre redus.
Abordare funcional-Pentru un utilizator obinuit, convins c un
calculator este doar un instrument care l ajut n soluionarea 18. Organizarea intrrilor - ieirilor n memorii tampon
unor probleme din domeniul su de activitate, noiunile, cum ar fi Pentru excluderea influenei perifericelor asupra vitezei de lucru a
administrarea memoriei cu paginaie sau driverele dispozitivelor, sistemului de calcul s-a propus s se pstreze n memorie n anumite
nu semnific prea multe. Destinaia principal a unui sistem de zone tampon datele de intrare i rezultatele mai multor lucrri.Dei
operare pentru aceast categorie de utilizatori este punerea la utilizarea memoriilor tampon prezint o serie de avantaje, totui dou
dispoziie a unui set de programe care l-ar ajuta n formularea i momente negative pot fi menionate:
soluionare problemelor concrete ce in de domeniul su de atunci cnd lucrarea n curs de execuie are nevoie de nite date
activitate. unitatea central rmne inactiv pe toat perioada citirii acestora;
Abordare din punctul de vedere al interfeei cu utilizatorul o lucrare de scurt durat, sosit n timpul execuiei unei lucrri
Interfaa sistemului de operare cu utilizatorul prezint un interes "lungi", trebuie s atepte terminarea acesteia din urm.
aparte. Progresul n acest domeniu este spectaculos, dac vom lua
n consideraie c n primele sisteme de operare utilizatorul era 19. Multiprogramarea
obligat s indice n mod explicit i manual (n regim textual) fiecare Multiprogramarea este un termen utilizat n cazul unui sistem n care pot
pas, orict de nesemnificativ ar fi prut. Formularea pailor cu exista simultan cteva procese n stare de execuie. Un proces se consider n
ajutorul unui limbaj specializat, cum ar fi Job Control Language stare de execuie, dac calculele au nceput, dar la momentul considerat nu
(JCL), nu a schimbat substanial situaia. au fost terminate sau ntrerupte. Multiprogramarea permite meninerea
unitii centrale n stare activ pentru perioada ncrcrii programelor
13. Abordare funcional sau operaiilor de intrare-ieire. Acest mod de funcionare este adaptat
Abordare funcional-Pentru un utilizator obinuit, convins c un tratrii pe loturi pe un calculator, care nu dispune de un mecanism de
calculator este doar un instrument care l ajut n soluionarea unor reamplasare dinamic.
probleme din domeniul su de activitate, noiunile, cum ar fi
administrarea memoriei cu paginaie sau driverele dispozitivelor, nu 20. Sisteme cu timp partajat
semnific prea multe. Destinaia principal a unui sistem de operare Destinaia principal a unor astfel de sisteme este furnizarea
pentru aceast categorie de utilizatori este punerea la dispoziie a unui serviciilor necesare unei mulimi de utilizatori, fiecare dintre ei
set de programe care l-ar ajuta n formularea i soluionare problemelor beneficiind de servicii:
concrete ce in de domeniul su de activitate. echivalente serviciilor unui calculator individual;
legate de existena unei comuniti de utilizatori: partajarea
14. Abordare din punctul de vedere al interfeei cu utilizatorul informaiilor, comunicaii ntre utilizatori.
Abordare din punctul de vedere al interfeei cu utilizatorul Problemele care apar datorit conceptului de partajare a timpului
Interfaa sistemului de operare cu utilizatorul prezint un interes sunt o combinaie a problemelor existente n cazul unui calculator
aparte. Progresul n acest domeniu este spectaculos, dac vom lua n individual cu cele din sistemele tranzacionale i pot fi clasificate
consideraie c n primele sisteme de operare utilizatorul era obligat s dup cum urmeaz:
indice n mod explicit i manual (n regim textual) fiecare pas, orict de definirea mainii virtuale oferite fiecrui utilizator;
nesemnificativ ar fi prut. Formularea pailor cu ajutorul unui limbaj partajarea i alocarea resurselor fizice comune: procesoare,
specializat, cum ar fi Job Control Language (JCL), nu a schimbat memorii, dispozitive de comunicaie;
substanial situaia. gestionarea informaiilor partajate i a comunicaiilor.
21. Windows, Unix i alte sisteme Starea procesorului este determinat de coninutul registrelor acestuia.
Paralel cu evoluia tehnic i funcional a sistemelor de operare a avut Registrele pot fi:
loc i o important evoluie conceptual, care a permis o mai bun nelegere adresabile, numite registre generale, manipulate de programe, registre
a funcionrii sistemelor de operare i a condus la elaborarea unor metode speciale - cuvnt de stare program (program status word, PSW).
proprii de concepere. PSW conine informaii:
Debutul unei cercetri tiinifice a sistemelor de operare poate fi Referitoare la starea procesorului:
considerat anul 1964, care a succedat o etap important de dezvoltare Starea de execuie. Procesorul se poate afla n starea activ n care
tehnic: primele sisteme cu partajare a timpului (Thor, CTSS). Sistemul de ndeplinete instrucii, sau n starea de ateptare, cnd execuia este
operare UNIX, primul sistem mobil care asigur un mediu fiabil de suspendat. Modul de funcionare:
dezvoltare i utilizare a softului de aplicaie, este fundamentul practic de Protecie - se permite doar programelor SO executarea unor instruciuni
elaborare a sistemelor fizico-logice deschise. anumite (speciale), programele utilizatorilor neavnd acces la aceste
22. S UNIX i standardele sistemelor deschise instruciuni. Masca ntreruperilor.
Sistemul de operare UNIX, primul sistem mobil care asigur un mediu Referitoare la contextul accesibil al memoriei i drepturile de acces
fiabil de dezvoltare i utilizare a softului de aplicaie. asociate: tabele de segmente, indicatori de protecie a memoriei, etc.
Implementarea larg a sistemului de operare UNIX a permis trecerea de Referitoare la derularea activitii curente: codul condiiei, contorul
la declararea sistemelor deschise la dezvoltarea practic a acestui concept. operaiei urmtoare (contor ordinal).
Variantele SO UNIX, propuse de compania SCO i destinate exclusiv
platformelor Intel, sunt bazate pe modulele iniiale ale System V 3.2, fiind 28. NTRERUPERI, DEVIERI, APELAREA SUPERVIZORULUI
total compatibile cu toate standardele de baz
29. Activiti asincrone
23. OSF-1 i alte variante UNIX Pentru cazuri mai generale sunt necesare mecanisme suplimentare, cum
Open Software Foundation (OSF) a fost prima companie comercial, ar fi conceptele de asincronism sau de protecie reciproc ntre activiti.
care a ncercat elaborarea SO UNIX n baza micronucleului Mach. A fost Prin asincronism nelegem efectul care l pot avea asupra derulrii
creat sistemul de operare OSF-1, care nu era n sens de liceniere curat, unei activiti anumite evenimente exterioare.
deoarece folosea o parte a modulelor iniiale din SVR 4.0. Numim protecie reciproc ntre activiti o modificare mai profund
Nu putem s nu amintim aici i de realizarea original a SO UNIX a contextului, atunci cnd se trece de la o activitate la alta, n comparaie
pentru platformele Intel, propus de Torvald Linus LINUX cu ceea ce are loc n cazul unei simple apelri de procedur.
Prin standard al unei interfee al SO subnelegem un set de proprieti, Un caz tipic de asincronism este executarea intrrilor-ieirilor
mai mult sau mai puin formale, sintactice sau semantice ale componentelor simultan cu execuia unui program. Trebuie s fie asigurat posibilitatea
sistemului de operare. informrii programului despre terminarea unui transfer de informaii.
24. Standarde UNIX
Unul dintre primele standarde de-facto a fost cel publicat de USL pentru 30. Mecanisme de comutare a contextului. ntreruperi
versiunea SO UNIX System V Release 4 - System V Interface Definition Comutarea contextului unui procesor permite executarea ntr-o manier
(SVID). indivizibil (atomar) a urmtoarelor dou operaii:
Mai menionm standardul de-facto SPARC Complience Definition, trecerea cuvntului de stare ntr-un amplasament specificat al memoriei,
propus de organizaia SPARC International, ncrcarea n cuvntul de stare a coninutului unui alt amplasament
Pentru lumea UNIX este foarte important i standardul limbajului de specificat al memoriei. Comutarea contextului poate fi necesar din mai
programare C, adoptat mai nti de ANSI i apoi de ISO. n acest standard multe cauze distincte. Presupunem c fiecrei cauze i-a fost asociat un numr
sunt specificate, n afara limbajului C, bibliotecile necesare ntr-o realizare de ordine. Pot fi ntlnite dou scheme de comutare a contextului.
standard. Deoarece chiar de la apariie limbajul C i sistemele de programare 1. Salvare n amplasamente fixe.
respective erau strns legate de UNIX, componentele bibliotecilor standard 2. Salvare ntr-o stiv.
corespundeau exact mediului standard al SO UNIX. 31. Devieri i apelarea supervizorului
O deviere semnalizeaz o anomalie n derularea unei instruciuni, care
25. Sisteme de operare cu micronucleu prohibiteaz executarea instruciunii. Originile pot fi diverse:
Micronucleul este partea minim principal a unui sistem de operare, date incorecte, instruciune neexecutabil . Devierile pot fi clasificate, ca
folosit pentru asigurarea modularitii i transportabilitii. i ntreruperile, conform cauzelor care le genereaz. O deviere poate fi
Noiunea de micronucleu a fost introdus de compania Next prin suprimat, dar nici intr-un caz retardat. Un apel al supervizorului
sistemul de operare cu micronucleul Mach. (supervisor call, prescurtat SVC, eng., appel au superviseur, fr.) este o
Urmtorul SO cu micronucleu a fost MS Windows NT, n care instruciune chemat s provoace o comutare a contextului
momentul principal declarat era, n afara modularitii, transportabilitatea. procesorului. Acest efect este analogic apelrii unei proceduri, ns
Acest sistem de operare poate fi utilizat n sistemele mono- i miltiprocesor, modificarea contextului este mai profund,
bazate pe procesoarele Intel, Mips, i Alpha Destinaia unui apel al supervizorului este de a permite apelarea
Au aderat la tehnologia micronuclear i companiile Novell/USL, unei proceduri a sistemului de operare, pretinznd la drepturi mai mari
Open Software Foundation (OSF), IBM, Apple i altele. Unul din 32. Exemple de sisteme de ntreruperi
concurenii principali ai lui NT n domeniul SO cu micronucleu sunt Mach Sistemul de ntreruperi are 5 nivele (n ordinea de descretere a
3.0, creat n Universitatea Carnegy-Mellon, i Chorus 3.0 al companiei prioritilor): eroare hardware, deviere, apelare supervizor,
Chorus Systems. extern i intrare-ieire. Fiecrui nivel i corespunde n memoria
operativ un cuplu de amplasamente rezervate cuvintelor de stare
26. MODUL SECVENIAL DE EXECUIE A UNUI PROGRAM. vechi i nou. Fiecare nivel conine mai multe cauze de ntrerupere.
Noiuni fundamentale
Un program secvenial = o mulime de proceduri, care se pot apela 33. IMPLEMENTAREA MECANISMELOR DE COMUTARE A
reciproc. Fiecrei proceduri i este asociat un segment distinct de procedur. CONTEXTULUI
Datele sunt reprezentate prin segmente, pot fi proprii unei proceduri sau Implementarea mecanismelor este ilustrat prin exemple, legate
partajate ntre mai multe proceduri. de utilizarea lor.
Numim activitate fenomenul care rezult din execuia nentrerupt a Vom preciza notaia utilizat n schemele programelor:
unei proceduri unice. !!Execuia unui program secvenial const dintr-un lan 1. coninutul unui cuvnt de stare este reprezentat
de activiti!!!! prin notaia <activitate, mod, mascare, contor
Numim context al unei activiti mulimea informaiilor accesibile ordinal>. Dac csp desemneaz un cuvnt de stare,
procesorului n cursul acestei activiti. Contextul activitii este compus din cmpurile sale vor fi desemnate de csp.act, csp.mod,
contextul procesorului (registrele programabile i interne) i contextul csp.masc i csp.co.
memoriei (segmentul procedurii i segmentul datelor). Trecerea de la o 2. operatorul adr aplicat unui identificator de
activitate la alta este realizat de instruciuni speciale: apelarea i returul din variabil sau de procedur, desemneaz adresa
procedur, care realizeaz comutarea contextului. amplasamentului unde se afl variabila sau prima
instruciune a procedurii,
27. Starea i contextul procesorului
3.notaia Mp[adr] desemneaz coninutul Intrri-ieiri programate pe canal sau acces direct la memorie
amplasamentului cu adresa adr. Intrri-ieiri asincrone cu ntreruperi
4. notaiile svc_vechi, dev_vechi, intr_x_vechi, Intrri-ieiri sincrone
svc_nou, dev_nou, intr_x_nou desemneaz
amplasamentele unde sunt plasate i de unde sunt 39. Intrri-ieiri buferizate n memorie
ncrcate cuvintele de stare. Diferena considerabil dintre viteza de lucru a unitii centrale i cea a
Vom mai presupune c organelor periferice impune "buferizarea" intrrilor-ieirilor, adic
1. apelarea supervizorului este de forma SVC <cod>, introducerea unei zone-tampon de memorie ntre periferic i programul
unde <cod> reprezint un numr care permite utilizatorului. Scopul este de a reduce timpul de inactivitate a unitii
identificarea funciei cerute, centrale, dezlegnd funcionarea acesteia de periferice.
2. un indicator <cauz> permite stabilirea cauzei care Programul utilizatorului va transfera informaiile din sau spre zona-
provoac o deviere. tampon, iar aceast zon-tampon va servi, n mod paralel, drept surs sau
destinaie la schimbul de date cu perifericul. Dezlegarea unitii centrale de
34. Utilizarea devierilor i apelrii supervizorului periferic este cu att mai bine realizat cu ct este mai mare capacitatea
zonei-tampon. Adesea, pentru a nu suprancrca memoria principal, zona-
35. Exemple de utilizare a ntreruperilor tampon este situat pe discul fix.
Principala utilizare a ntreruperilor este msurarea timpului i
administrarea operaiilor de intrare-ieire. Prezentm mai jos cteva exemple 40. ncrcarea iniial
de utilizare a ceasului calculatorului. La primele calculatoare, un program de cteva instruciuni, introdus
procedura iniializare; manual n memorie cu ajutorul unor comutatoare ale pupitrului de comand
intr_ceas_nou:=<activ,master,mascat,adr intr_ceas>; la o adres fix, permitea ncrcarea unui program de citire mai elevat
svc_nou :=<activ,master,mascat,adr tratare_svc >; capabil s citeasc versiunea complet a sistemului de operare. Acest proces
dezarmare(intr_ceas); era numit ncrcare (bootstrapping, eng.).
procedura tratare_svc; n calculatoarele contemporane, programul de iniializare se afl
save(zon); permanent ntr-o memorie constant (BIOS). Execuia acestui program este
case cod of declanat odat cu punerea sub tensiune a calculatorului (autoncrcare).

apel_lim_timp_ex: -- parametrii p, q, tratare_eroare 41. GESTIUNEA ACTIVITILOR PARALELE
ceas:=q;
cspretur:=svc_vechi; -- salvare pentru retur 42. EXEMPLE DE ACTIVITI PARALELE
csplucrare:= <activ,slave,demascat,adr p>; 43. Administrarea tamponat a intrrilor-ieirelor
csperoare:= <activ,slave,demascat,adr tratare_eroare>; Analiza acestui mod de funcionare (fig.3.1) pune n eviden patru
armare(intr_ceas); activiti, care pot avea loc simultan:
restabilete(zon); primitiva scriere_linie SL (unitatea central)
ncarc_csp(csplucrare); scriere pe disc SD (canal 1)
citire de pe disc CD (canal 2)
retur: -- datorat terminrii procedurii p imprimare fizic IF (canal 3)
dezarmare(intr_ceas); Pot fi evideniate dou tipuri de condiii, care trebuie respectate:
ncarc_csp(cspretur); Condiii, care stabilesc posibilitatea existenei unor activiti
Condiii de validitate a informaiilor partajate.
endcase
procedura intr_ceas; -- expirarea timpului limit 44. Comanda unui proces industrial
dezarmare(intr_ceas); D2 segmentele procedurilor i datelor pentru comanda
ncarc_csp(csperoare); celor dou reactoare R1 i R2, memoria principal avnd capacitatea
necesar pentru pstrarea acestor segmente.
36. PROGRAMAREA OPERAIILOR DE INTRARE-IEIRE Programele P1 i P2 sunt executate pe rnd de procesor. Relaia 2t<T
Prin noiunea de intrare-ieire trebuie s fie respectat. Dac acesta va fi cazul, funcionarea reactoarelor
numim orice transfer de informaii din sau spre nucleul calculatorului. pentru un observator extern pare identic pentru ambele soluii. Trebuie,
Operaiile de I/E semnific: totui s subliniem, c soluia doi impune restricii mai severe n ceea ce
transferurile de informaii dintre diferite nivele ierarhice ale memoriei, privete performanele calculatorului
transferurile de informaii din sau spre mediul exterior (organe periferice Modalitile de implementare a soluiei doi.
locale sau la distan, captoare sau dispozitive de acionare, alte calculatoare, 1) Partajarea procesorului
etc.). 2) Partajarea programului
37. Organizarea general
Un organ de intrare-ieire este un dispozitiv capabil s transfere 45. NOIUNE DE PROCES SECVENIAL
informaii ntre procesorul sau memoria calculatorului i un suport extern de Executarea unui program se traduce ntr-o suit de aciuni a1, a2,..., ai,...,
informaie. Acest transfer este comandat de ctre procesorul central. cu nceput(ai)<sfrit(ai) **
Un canal O astfel de suit este numit proces secvenial sau simplu proces.
este un procesor specializat n operaiile de intrare-ieire. El poate fi Un proces poate, deci, fi descris cu ajutorul succesiunii evenimentelor
lansat doar de un procesor central, nu posed ntreruperi, dar poate ntrerupe nceput(a1), sfrit(a1), nceput(a2), sfrit(a2),...
un procesor central. 46. Proces unic. Context
Un contrler este un dispozitiv de comand adaptat la un tip concret de Noiunea de proces pune la dispoziie un model pentru reprezentarea
echipament periferic. Autonomia sa este limitat de operaii foarte unei activiti, care rezult din executarea unui program pe calculator.
elementare. Destinaia principal a unui controler este de a permite , contextul unui proces rezultant din executarea unui program conine:
conectarea a mai multor periferice de acelai tip la un singur controler. Contextul procesorului (cuvntul de stare i registrele),
Un periferic este un organ capabil s transfere informaii din sau spre un Un context n memorie, sau spaiul de lucru (segmente procedur, date,
suport extern. Controlerul este legat de periferic printr-o interfa, care stiv de execuie),
conine un set de funcii O mulime de atribute ataate procesului i care specific diferite
i o linie de comunicaie, care servete la transferul informaiilor. proprieti:
38. 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,
n realitate, citirea i scrierea pe disc sunt executate pe acelai canal, ceea
detecteaz i trateaz cazurile de eroare. Modurile principale de control ale ce poate impune unele restricii privind simultaneitatea executrii lor. Vom
perifericelor ignora aici aceste restricii, justificnd mai apoi acest mod de procedare.
Nume. Numele unui proces, care servete pentru identificarea lui.
Prioritate. Prioritatea proceselor permite ordonarea lor pentru alocarea 53. Probleme de realizare a sincronizrii
procesorului. Dac toate procesele au aceeai prioritate, alocarea se face Un eveniment memorizat este o variabil, care poate lua dou valori:
conform ordinii primul sosit, primul servit. sosit i non_sosit, valoarea iniial este non-sosit. Asupra evenimentului
Drepturi. Drepturile unui proces specific operaiile care i sunt permise, memorizat sunt posibile dou operaii, care sunt aciuni indivizibile:
n scopul asigurrii proteciei informaiei . e:=<valoare> -- atribuirea imediat a unei valori
ateptare(e).
47. Relaii ntre procese Operaia ateptare(e), executat de un proces p, are urmtoarea
Vom cerceta n continuare execuia unei mulimi de procese i specificaie:
interaciunea reciproc a acestora. Noiunile, introduse mai sus, pot fi extinse if e = non_sosit then
pentru o mulime de procese: starea(p) := blocat -- p este trecut n ateptarea lui e
traiectoria temporal a unei mulimi de procese este irul evenimentelor endif
formate de nceputurile i sfriturile aciunilor rezultante din executarea Cnd e ia valoarea sosit, toate procesele care ateptau e trec n starea
programelor acestor procese. activ.
contextele unor procese diferite pot avea pri comune. Dou procese,
contextele crora sunt disjuncte, se numesc independente; ele nu pot avea 54. Monitorul mecanism de sincronizare
interaciuni reciproce. Partea contextului, care aparine unui singur proces, se Un monitor este constituit dintr-o mulime de variabile de stare i o
numete context privat al procesului dat. mulime de proceduri, care utilizeaz aceste variabile. Unele dintre aceste
proceduri, numite externe, sunt accesibile utilizatorilor monitorului; numele
48. Mulimi de procese. Paralelism acestor proceduri sunt numite puncte de intrare ale monitorului. Procesele,
S considerm dou programe distincte P i Q, fiecare avnd n care utilizeaz monitorul pentru a se sincroniza, nu au acces direct la
memorie un segment cod i un segment de date. Numim p i q variabilele de stare. Monitorul poate fi utilizat doar prin apelarea
procesele rezultante din executarea respectiv a acestor dou procedurilor sale externe; acestea permit blocarea sau deblocarea proceselor
programe. Executarea setului (p, q) poate s se produc n diferite conform specificaiilor problemei.
moduri, caracterizate de forma particular a traiectoriei sale . Un monitor conine un fragment de cod de iniializare, executat o
temporale. singur dat la crearea monitorului.
55. Exemple de utilizare a monitorului
Monitorul este utilizat dup cum urmeaz:
procesul p procesul q
scriere(a); <debut_q>
sinc.terminare_scriere; sinc.debut_citire;
<continuare_p> citire(a);

56. IMPLEMENTAREA SINCRONIZRII


Experiena demonstreaz, c problemele de sincronizare
logic ntlnite n practic pot fi reduse, n marea lor
schema 3 are loc un paralelism real, iar n schema 2 un pseudo- majoritate, la combinaia unui numr mic de situaii
paralelism. Paralelismul real necesit dou procesoare distincte. Dou elementare, schemele de soluionare ale crora sunt
observaii importante sunt necesare: cunoscute.
Diferena acestor scheme de execuie este legat de alegerea nivelului de 57. Probleme-tip
observare. Astfel, la nivelul de baz, diferena dintre schemele 1 i 2 dispare: Problemele-tip sunt urmtoarele:
ambele sunt secveniale. accesarea de ctre o mulime de procese a unei resurse partajate comune,
comunicarea ntre procese,
49. Concurena proceselor. Resurse virtuale gestionarea perifericelor i intrrilor-ieirilor tamponate,
Funcionarea corect a unei mulimi de procese, care particip la sincronizare temporal.
ndeplinirea unei lucrri comune, implic relaii logice de cooperare. Este
comod s se separe aceast cooperare de concurena pentru resursele fizice 58. Administrarea unei resurse partajate
cu scopul de a simplifica nelegerea i aplicarea celor dou tipuri de relaii. Considerm o resurs (fizic sau logic) partajat de o mulime de
Pentru aceasta este folosit noiunea de resurse virtuale: procese. Utilizarea acestei resurse trebuie s respecte nite reguli de utilizare,
fiecrei resurse fizice critice i se asociaz tot attea copii imaginare destinaia crora const n garantarea unor proprieti specificate sau
(sau virtuale) ale acestei resurse cte procese concurente solicit utilizarea ei. restricii de integritate. Aceste restricii sunt specificate pentru fiecare
resurs.
50. Excludere mutual O modalitate de garantare a respectrii regulilor de utilizare a unei
Excluderea mutual const n extinderea pentru secvena de aciuni a resurse const n adoptarea urmtoarei scheme:
proprietii de indivizibilitate a aciunilor nivelului de baz (aciuni atomare). modul de folosire a resursei presupune utilizarea obligatorie a
Posibilitatea executrii unor aciuni atomare se afl la baza mecanismelor procedurilor de acces asociate resursei; orice tentativ de utilizare, care nu
care realizeaz sincronizarea. respect acest mod este detectat automat,
procedurile de accesare sunt grupate ntr-un monitor, sau mai multe,
51. SINCRONIZAREA PROCESELOR programul cruia impune respectarea restriciilor de integritate.
52. Exprimarea i implementarea restriciilor de succesiune
sfrit(scriere(a)) < nceput(citire(a)) 59. Alocarea resurselor banalizate
Aceast relaie exprim restricia, c citirea lui a de ctre q nu poate Considerm o resurs pentru care exist un numr fix de N exemplare.
ncepe nainte de terminarea scrierii lui a de ctre p. Dac programul Un proces poate accesa la cerere n uniti din cele N, le poate utiliza i apoi
procesului pi are forma elibera. Toate unitile sunt echivalente din punctul de vedere al proceselor
<debut_i>; utilizatoare, se mai zice c resursa este banalizat.
<rendez-vous> Utilizarea resursei are loc conform schemei de mai jos.
<continuare_i>; ps:resurse.cerere(n); -- cerere pentru n uniti
atunci restriciile de sincronizare se vor exprima dup cum urmeaz: -- ateptare n caz de eec
" pentru orice i, j din [1..N]: sfrit(debut_i) < nceput(continuare_j) <utilizarea unitilor primite>
Restriciile de sincronizare pot fi exprimate prin urmtoarele dou forme resurse.eliberare(n) -- eliberarea resurselor
echivalente: Condiia de sincronizare se va scrie pentru orice proces:
1. Se va impune o ordine de succesiune n timp logic pentru unele aut(ps) : n nlibere
puncte ale traiectoriei temporale ale procesului,
2. Se va impune unor procese o condiie de autorizare a 60. Modelul cititorului i scriitorului
depirii acestor puncte ale traiectoriei lor temporale.
S considerm un fiier manipulat de procese din dou clase diferite: Definind tm1, tm2 i td ca tablouri de elemente de lungimea unei linii i
cititori, care consult fiierul fr a modifica coninutul lui i scriitori, care pointerii top i coad locali fiecrui monitor, procedurile de depozitare i
pot modifica acest coninut. Fie pentru un moment arbitrar de timp ncit i nscr preluare pot fi:
numrul de cititori i de scriitori, respectiv, care folosesc o procedur de <pentru tm 1> <pentru tm 2>
acces la fiier. Cererea de asigurare a coerenei fiierului ne impune s procedura intrare(l:linie); procedura intrare(l:linie);
respectm urmtoarele restricii: tm1[coad] := l; tm2[coad] := l;
(nscr=0) i (ncit0) -- fiier n citire coad := coad+1 mod N1 coad := coad+1 mod N2
sau (nscr =1) i (ncit=0) -- fiier n scriere procedura ieire(var l:linie); procedura ieire(var l:linie);
l := tm1[top]; l := tm2[top];
61. Comunicarea ntre procese top := top+1 mod N1 top := top+1 mod N2
Procesele pot comunica prin accesarea unei mulimi de variabile 68. Sincronizare temporal
comune. Acest mod de comunicare este slab structurat i ineficient - cere Sincronizarea temporal face ca timpul s intervin nu numai ca mijloc
excluderea reciproc a variabilelor. Comunicarea prin mesaje - modelul de ordonare a evenimentelor, dar i ca msur de durat absolut. Acest mod
productorului i consumatorului, realizat cu ajutorul monitoarelor . O alt de sincronizare este utilizat n aplicaiile de timp real, care conin interaciuni
posibilitate, const n a considera operaiile de comunicare ca un fel de cu organe externe (comanda proceselor industriale, de exemplu).
mecanisme primitive de sincronizare. Sincronizarea temporal solicit folosirea unui ceas, realizat prin
intermediul generatorului de sincronizare, care emite impulsuri la intervale
62. Modelul productorului i consumatorului regulate. Aceste impulsuri pot fi utilizate pentru a declana o ntrerupere
Un proces (productorul) trimite mesaje unui alt proces (consumatorul), la fiecare impuls sau
utiliznd o zon tampon n memoria comun. Mesajele sunt de lungime fix pentru a decrementa n mod automat coninutul unui registru contor, o
i capacitatea tamponului este de N mesaje. ntrerupere este declanat atunci cnd coninutul acestui registru atinge
Specificaiile comunicaiei: valoarea 0.
un mesaj dat poate fi preluat doar o singur dat dup ce a fost
depozitat n tampon, 69. GESTIONAREA DINAMIC A PROCESELOR
un mesaj nu poate fi pierdut; dac tamponul conine N mesaje n sistemele performante, mai ales n cele interactive, procesele sunt
nepreluate, nu pot fi depozitate alte mesaje, comandate dinamic. Crearea unui proces presupune alocarea resurselor i
o operaie imposibil blocheaz procesul, care ncearc s o execute. iniializarea contextului. Distrugerea unui proces elibereaz toate resursele
care i-au fost alocate. Primele primitive, propuse pentru gestionarea
63. Primitive de comunicare dinamic a proceselor, au fost fork i join. Istoric i cronologic, aceste
Operaiile de schimb de mesaje pot fi definite ca nite mecanisme operaii au fost introduse pentru organizarea executrii paralele a
primitive i s le utilizm pentru sincronizarea proceselor. programelor pe un sistem multiprocesoral, noiunea de proces nefiind nc
Primitivele de baz n comunicarea prin mesaje sunt: clar.
emitere(mesaj,destinaie) 70. SINCRONIZAREA N WINDOWS
recepie(mesaj,origine) Platforma pe 32 de bii pune la dispoziia programatorului instrumente
Specificrile acestor primitive trebuie s precizeze: evoluate pentru multiprogramare, att la nivelul unei mulimi de lucrri, ct
natura i forma mesajelor, i a unei lucrri singulare. Poate s apar ntrebarea CND s fie utilizat
modul de adresare a proceselor emitoare i destinatare, multiprogramarea n cadrul unei singure aplicaii. Rspunsul este foarte
modul de sincronizare a acestor procese, simplu: atunci cnd dorim ca mai multe fragmente de cod s fie executate
tratarea erorilor. simultan. De exemplu, dac dorim ca unele activiti s fie ndeplinite n
regim de fond sau programul s continue s reacioneze la unele evenimente
64. Aplicaii : relaia client-server exterioare n timpul ndeplinirii unor calcule foarte costisitoare
O aplicaie curent a comunicrilor ntre procese este relaia client-
server. Un proces server are n arj ndeplinirea unor servicii (executarea 71. Procese i fire in Windows
unor programe predefinite) proceselor client. Pentru aceasta este utilizat Numim proces n Windows o instan (un exemplar) a programului,
urmtoarea schem: ncrcat n memoria operativ. Aceast instan poate crea fire (thread) -
Procesul server este asociat unei pori, unde clienii i depun cererile; el secvene de instruciuni, care urmeaz a fi executate
este blocat atta timp ct nu exist cereri de servicii n ateptare. n cadrul sistemului de operare Windows exist dou tipuri de fire fire
modelul client-server sunt reprezentative pentru dou scheme de interactive, care execut un ciclu propriu de prelucrare a mesajelor (de
obinere a unui serviciu cu ajutorul proceselor ntr-un sistem de operare: exemplu, firul principal al unei aplicaii) i fire de lucru, care sunt funcii
apelarea unei procedure de monitor sau activarea unui proces server ciclic simple. n ultimul caz execuia firului se ncheie atunci cnd calculele,
prin emiterea mesajelor. Alegerea ntre aceste dou scheme este dictat de generate de funcia respectiv, iau sfrit.
considerente de eficacitate.
65. Administrarea intrrilor-ieirilor 72. Necesitatea sincronizrii n Windows
Pentru un proces care execut o intrare-ieire apelnd o procedur de n realitate, din cauza multitaskingului controlat se poate ntmpla ca un
schimb a acestui monitor, totul se petrece ca i cum schimbul este sincron: la fir s nu fi terminat nc lucrul cu o resurs comun oarecare, iar sistemul s
returul din procedur, informaia a fost efectiv transferat (sau o eroare a fost treac la un alt fir, care utilizeaz aceeai resurs. Rezultatele pot fi
detectat i semnalizat). Mecanismul de blocare evit ateptarea activ i imprevizibile. Asemenea conflicte se pot produce i n cazul unor fire, care
procesorul poate fi utilizat n timpul transferului de un alt proces. aparin chiar unor procese diferite. Problema poate s apar ntotdeauna cnd
dou sau mai multe fire folosesc o resurs comun. Este necesar un
66. Administrarea unui periferic mecanism de coordonare a lucrului firelor cu resurse comune. n Windows
Fiecrui periferic i este asociat un monitor procedurile externe acest mecanism se numete sincronizarea firelor .
ale cruia permit executarea intrrilor-ieirilor la acest periferic. Acest
monitor are urmtoarea form general (pentru un sistem mono-utilizator): 73. Structura mecanismului de sincronizare n Windows
perif: monitor; Mecanismul de sincronizare este un set de obiecte ale sistemului de
var ..., sfr_schimb_i,...: condiie; operare Windows, create i gestionate program, comune pentru toate firele
<declaraiile variabilelor de stare ale perifericului> 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
67. Buferizarea imprimrii pe disc, un port, un articol al unei baze de date, o variabil global a unui
Trei zone-tampon tm1 i tm2 de capacitate N1 i N2 n memoria central program
i unul pe disc, td, de lungime Ndisc. Pentru simplitate presupunem, c Sensul mecanismelor de sincronizare const n faptul, c fiecare poate s
transferurile se fac cu blocuri constante egale cu o linie. Fiecare bufer este fie n starea set. Pentru fiecare mecanism de sincronizare aceast stare poate
comandat de un monitor cu aceeai structur care are rolul de a asigura s aib sens propriu. Firele pot s testeze starea curent a mecanismului de
excluderea mutual i sincronizarea condiiilor tampon plin i tampon vid. 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 corespund obiectelor de sincronizare WinAPI i sunt derivate de la clasa
resurs, ele doar indic firului momentul cnd acesta poate accesa resursa, CSyncObject. Pentru utilizarea acestor clase trebuie consultai constructorii
sau cnd acesta trebuie s atepte . i metodele lor Lock i Unlock.
Obiectul de sincronizare MFC este inclus n aceast clas n calitate de
74. Administrarea obiectelor de sincronizare n Windows membru privat i toate funciile clasei, care realizeaz accesarea resursei, i
Crearea unui obiect de sincronizare se produce prin apelarea unei funcii coordoneaz lucrul cu acest membru.
speciale din WinAPI de tipul Create (de exemplu, CreateMutex). Acest Utiliznd funciile Lock i Unlock clasele de sincronizare MFC pot fi
apel returneaz descriptorul obiectului (handle), care poate fi folosit de toate utilizate direct, iar n mod indirect prin funciile CSingleLock i
firele procesului dat. Un obiect de sincronizare poate fi accesat i dintr-un alt CmultiLock.
proces, dac acest proces a motenit descriptorul obiectului dat, sau folosind
funcia de deschidere a unui obiect (Open). 81. Exemplu de sincronizare n Windows
Dac n parametrul timp este indicat constanta simbolic INFINITE, #include <windows.h>
funcia va atepta pn cnd starea obiectului va deveni set, fr vre-o #include <iostream.h>
restricie
Starea mai multor obiecte poate fi aflat cu ajutorul funciei void main()
WaitForMultipleObjects. Pentru ncheierea lucrului cu un obiect de {
sincronizare i eliberarea descriptorului se apeleaz funcia CloseHandle. DWORD res;
Este important de tiut, c apelarea unei funcii de ateptarea blocheaz firul HANDLE mutex = CreateMutex(NULL, FALSE,
curent, adic atta timp ct un fir se afl n starea de ateptare el nu are acces "NUME_APLICATIE-MUTEX01");
la procesor. cout<<"ncerc s ocup obiectul...\n"; cout.flush();
res = WaitForSingleObject(mutex,20000);
75. Excluderea mutual if (res == WAIT_OBJECT_0)
Mecanismele de excludere mutual (mutex-ele, de la MUTual {
EXclusion) permit coordonarea accesului la o resurs partajat. Starea cout<<"L-am prins! Ateptare 10 secunde...\n";
set a obiectului corespunde momentului de timp n care obiectul nu cout.flush();
aparine nici unui fir i poate fi utilizat, iar starea reset momentului Sleep(10000);
cnd un fir oarecare controleaz deja mutex-ul. Accesarea va fi permis cout<<"Acum eliberm obiectul\n"; cout.flush();
doar dup eliberare. ReleaseMutex(mutex);
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 CloseHandle(mutex);
ori, fr autoblocare, ns mai apoi acesta va trebui eliberat tot de attea ori }
cu ajutorul funciei ReleaseMutex.
82. Utilizarea seciunilor critice n Windows
76. Evenimentele n acest caz seciunile critice sunt utilizate pentru a permite la un
Obiectele-evenimente sunt utilizate pentru a informa firele, care sunt n moment de timp dat accesul la unele date importante unui singur fir al
ateptare, despre producerea unui eveniment. n Windows exist dou tipuri aplicaiei, celelalte fire fiind blocate
de evenimente cu resetare manual i automat. Resetarea manual se Seciunile critice nu sunt obiecte ale nucleului sistemului de operare.
execut cu funcia ResetEvent. Aceste evenimente sunt folosite pentru Practic, tot lucrul cu seciunile critice are loc in procesul care le-a creat. Din
informarea mai multor fire, iar evenimentele cu resetare automat sunt aceasta rezult, c seciunile critice pot fi utilizate numai pentru sincronizare
utilizate pentru informarea unui anumit fir, celelalte rmnnd n ateptare. n cadrul unui proces.
Funcia CreateEvent creaz un obiect-eveniment, funcia SetEvent
seteaz evenimentul n starea set, iar funcia ResetEvent reseteaz 83. Structura RTL_CRITICAL_SECTION
evenimentul. Funcia PulseEvent seteaz evenimentul, iar dup Este definit dup cum urmeaz:
semnalizarea firelor, care erau n ateptare typedef struct _RTL_CRITICAL_SECTION
reseteaz obiectul {
PRTL_CRITICAL_SECTION_DEBUG DebugInfo; // Folosit de
77. Semafoarele sistemul de operare
Un obiect-semafor este n ultim instan un mutex cu contor. Acest LONG LockCount; // Contorul de utilizri
obiect permite s fie ocupat de un numr anume de fire, dup care LONG RecursionCount; // Contorul accesrii repetate din firul
ocuparea va fi posibil numai dac unul din fire va elibera semaforul. utilizatorului
Semafoarele sunt utilizate pentru a limita numrul de fire, care lucreaz HANDLE OwningThread; // ID firului utilizatorului (unic)
simultan cu resursa. HANDLE LockSemaphore; // Obiectul nucleului folosit pentru
78. Seciunile critice ateptare
Obiectul-seciune critic permite programatorului s evidenieze un ULONG_PTR SpinCount; // Numrul de cicluri goale naintea
fragment de cod n care firul obine acces la o resurs partajat, apelrii nucleului
prentmpinnd utilizarea resursei de mai muli utilizatori. Pentru a utiliza }
resursa firul va intra mai nti n seciunea critic (apelarea funciei RTL_CRITICAL_SECTION, *PRTL_CRITICAL_SECTION;
EnterCriticalSection). ntr-adevr, seciunile critice sunt destinate s protejeze datele la
Diferena de mutex const n faptul c seciunea critic este utilizat accesarea din cteva fire. Utilizarea multipl a uneia i aceeai seciuni
numai pentru firele unui singur proces. critice de un singur fir nu va genera eroare, ceea ce este normal.
Cu ajutorul funciei TryEnterCriticalSection se poate stabili, dac
seciunea critic este liber. 84. Funcii API pentru seciunile critice
Mai nti funciile BOOL
79. Protejarea accesrii variabilelor InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection) i
Exist o serie de funcii, care permit lucrul cu variabilele globale ale BOOL InitializeCriticalSectionAndSpinCount(LPCRITICAL_SECTION
tuturor firelor, fr a ne preocupa de sincronizare, deoarece aceste funcii lpCriticalSection, DWORD dwSpinCount).
singure rezolv problema sincronizrii. Aceste funcii sunt Funcia DWORD
InterlockedIncrement, InterlockedDecrement, InterlockedExchange, SetCriticalSectionSpinCount(LPCRITICAL_SECTION lpCriticalSection,
InterlockedExchangeAdd i InterlockedCompareExchange. De DWORD dwSpinCount) seteaz valoarea cmpului SpinCount i returneaz
exemplu, funcia InterlockedIncrement incrementeaz valoarea unei valoarea precedent a acestuia.
variabile pe 32 bii cu o unitate. VOID DeleteCriticalSection(LPCRITICAL_SECTION
lpCriticalSection) elibereaz resursele, ocupate de seciunea critic.
80. Sincronizarea n Microsoft Fundation Classes VOID LeaveCriticalSection(LPCRITICAL_SECTION
Biblioteca MFC conine clase speciale pentru sincronizarea firelor lpCriticalSection) elibereaz seciunea critic.
(CMutex, CEvent, CCriticalSection i CSemaphore). Aceste clase
85. Clase de seciuni critice simetrie: prologul i epilogul trebuie s fie identice pentru toate
Clasele CLock i CAutoLock sunt utilizate, de obicei, pentru procesele i independente de numrul lor.
sincronizarea accesrii variabilelor clasei, iar CScopeLock este destinat, n
special, pentru a fi utilizat n proceduri. Compilatorul singur va avea grij s 90. Excluderea mutual prin ateptare activ
apeleze ::LeaveCriticalSection() prin intermediul destructorului. Urmeaz
un exemplu de folosire a CScopeLock. nainte de a descrie implementarea excluderii mutuale prin operaii
class CLock elementare de blocare i deblocare a proceselor prezentm un mecanism,
{ care permite simularea efectului acestor operaii, meninnd procesele n
friend class CScopeLock; stare activ. Un proces n ateptare activ simuleaz blocarea efectund o
CRITICAL_SECTION m_CS; testare repetat a condiiei de depire, care poate fi actualizat de alte
public: procese.
void Init() { ::InitializeCriticalSection(&m_CS); }
void Term() { ::DeleteCriticalSection(&m_CS); } 91. Algoritmul lui Dekker
O soluie (algoritmul lui Dekker) poate totui fi construit fr a folosi
void Lock() { ::EnterCriticalSection(&m_CS); } alte mecanisme de excludere mutual, n afar de indivizibilitatea accesrii
BOOL TryLock() { return ::TryEnterCriticalSection(&m_CS); } n citire sau actualizarea unui amplasament de memorie. Prezentm
void Unlock() { ::LeaveCriticalSection(&m_CS); } algoritmul pentru dou procese, dei el poate fi extins pentru un numr
}; arbitrar de procese. Programul folosete trei variabile comune celor dou
procese:
86. Depanarea seciunilor critice var c : array [0..1] of boolean;
Depanarea seciunilor critice este o ocupaie foarte interesant, dar i tur : 0..1;
dificil. Poi cuta ore i chiar zile n ir cauza apariiei unei probleme. iniializare: c[0]:=c[1]:=false;
Erorile, legate de seciunile critice sunt de dou tipuri: de realizare i de tur:=0;
arhitectur. Erorile de realizare pot fi depistate relativ uor i, de regul, sunt prolog :- pentru procesul i; se va pune j=1-i (cellalt proces)
generate de utilizarea incorect (lipsa perechii) a apelurilor c[i]:=true;
::EnterCriticalSection() i ::LeaveCriticalSection(). tur:=j;
Dintre erorile de arhitectur cea mai frecvent este mbriarea fatal , test: if c[j] and tur=j then
cnd dou fire ncearc s acceseze dou i mai multe seciuni critice. go to test
-seciunile critice sunt executate relativ repede i nu cer multe resurse de endif;
sistem; ...
-pentru sincronizarea accesrii a mai multor variabile independente este epilog : -- pentru procesul i
mai bine s fie utilizate cteva seciuni critice c[i]:=false;
-nu este recomandat s fie apelate metode ale unor obiecte strine
dintr-o seciune critic.
92. Ateptarea activ n sisteme multiprocesorale: Test & Set
-codul unei seciuni critice va fi redus la minimum;
Pentru tratarea cu ajutorul ateptrii active a cazului n care mai multe
87. ADMINISTRAREA PROCESELOR procese actualizeaz i consult variabile comune, unele maini au o
Acest capitol este consacrat implementrii noiunilor proces i instruciune, care realizeaz ntr-o manier indivizibil consultarea i
sincronizare n cadrul unui sistem de operare. Mecanismele utilizate sunt actualizarea unui amplasament de memorie. Aceast instruciune, adesea
bazate pe realizarea principiul excluderii mutuale. Principiile directoare ale numit Test And Set (tas), este utilizat n sistemele multiprocesorale
reprezentrii i gestiunii proceselor (contexte, alocarea procesorului)
Efectul lui Test And Set este descris mai jos (Mp[m] desemneaz
amplasamentul de memorie cu adresa m):
88. REALIZAREA EXCLUDERII MUTUALE tas R, m : <blocare acces la Mp[m]>
R:=Mp[m]
Mecanismele care realizeaz excluderea mutual pentru un set de Mp[m]:=1
programe sunt bazate pe un principiu comun: utilizarea mecanismului de <eliberare acces la Mp[m]>
excludere mutual existent deja la un nivel inferior. Drept rezultat, sunt
utilizate variabile comune ale proceselor concurente, iar coerena acestor 93. Semaforul instrument elementar pentru excluderea mutual.
variabile trebuie ea nsi s fie garantat. La nivelul de baz exist dou Definiii. Proprieti
mecanisme elementare: excluderea mutual la accesarea unui amplasament
de memorie i masca ntreruperilor. Aceste dou mecanisme sunt, n Un semafor s este constituit prin asocierea unui contor cu valori ntregi,
principiu, suficiente pentru toate necesitile. 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
89. Specificarea problemei vid. Un semafor servete la blocarea proceselor ateptnd s se produc o
condiie pentru deblocarea lor; procesele blocate sunt plasate n s.f.
Vom preciza mai nti problema excluderii mutuale. Fie {p1, p2,...,pn} o Proprietile principale ale sincronizrii cu ajutorul semafoarelor pot fi
mulime de procese pe care le vom considera ciclice; programul fiecrui deduse din cteva relaii invariante: relaii verificate iniial i care rmn
proces conine o seciune critic. Excluderea mutual este asigurat prin neschimbate dup executarea primitivelor P i V un numr arbitrar de ori.
dou fragmente de program (prolog i epilog), care ncadreaz seciunea s.c. = s0 np(s) + nv(s) (1)
critic a fiecrui proces.Soluia trebuie s posede urmtoarele proprieti: nbloc(s) = if s.c. 0 then 0 else s.c. endif (2)
-excludere mutual: la fiecare moment de timp cel mult un proces nf(s) = min(np(s), s.c.+nv(s)). (3)
execut seciunea critic,
absena blocajelor intempestive
94. Realizarea excluderii mutuale cu ajutorul semafoarelor
dac n seciunea critic nu se afl vreun proces, nici un proces nu Fie nc numrul de procese, care se afl n seciunea critic la un moment
trebuie s fie blocat de mecanismul excluderii mutuale, concret de timp. Avem:
nc = nf(mutex) nv(mutex) (4)
toleran la defecte: soluia trebuie s rmn valid i n cazul unor
Proprietile n cauz pot fi verificate aplicnd semaforului mutex relaia
defecte n unul sau n mai multe procese, care se afl n afara seciunii
(3) din 4.1.3.2:
critice,
nf(mutex) = min(np(mutex), 1+nv(mutex)) (5)
absena privaiunilor: un proces, care a cerut intrarea ntr-o seciune Excluderea mutual
critic nu trebuie s atepte un timp infinit Din (5) avem:
nf(mutex) 1+nv(mutex)
i, utiliznd (4), obinem nc 1: excluderea mutual este asigurat. 101. REALIZAREA UNUI NUCLEU DE SINCRONIZARE. Structuri
i algoritmi
95. FUNCIONAREA I STRUCTURA UNUI NUCLEU DE Din momentul crerii sale unui proces i se asociaz un numr fix (nume
SINCRONIZARE intern, process handler), care servete la desemnarea lui i permite accesarea
n cadrul descrierii unui sistem de operare cu ajutorul mainilor abstracte blocului su de context. Blocul de context conine urmtoarele cmpuri:
ierarhice (v. cap.9), nucleul constituie nivelul cel mai inferior, realizat direct Csp: zona de salvare a cuvntului de stare a programului,
pe maina fizic. Maina abstract, realizat astfel poate fi numit o main a Reg : zona de salvare a registrelor generale ale procesorului,
proceselor, care posed, n afara setului de instruciuni de baz, primitivele Stare : valoarea strii procesului (eligibil, blocat, ...),
care permit crearea, distrugerea i sincronizarea proceselor. Primitivele de Prio : prioritatea procesului,
sincronizare, realizate de nucleu, ascund mecanismele fizice de comutare a Drepturi : drepturile procesului,
contextului, de exemplu, cele oferite de ntreruperi. Fire : legturi de nlnuire n ierarhia proceselor,
Structura unui nucleu de sincronizare depinde, printre altele, de Suc : legturi de nlnuire n firele de ateptare (FA).
specificaiile mainii fizice i de specificaiile mainii abstracte care trebuie
realizate, ndeosebi de mecanismul de sincronizare ales. 102. REALIZAREA UNUI NUCLEU DE SINCRONIZARE.
Realizarea monitoarelor
96. Strile unui proces. Fire de ateptare Monitorul, descris mai jos, n raport cu noiunea clasic de monitor,
Am considerat pn acuma c un proces se poate afla n dou stri: activ prezint urmtoarele diferene: Semantica primitivei semnalizare.
sau blocat. Luarea n consideraie a alocrii fizice a unui procesor ne impune Specificarea iniial a primitivei c.semnalizare precizeaz c unul din
s descompunem starea activ n dou stri noi. Un proces activ se numete procesele care sunt n ateptarea condiiei c (dac exist) este imediat
ales, dac el este n curs de execuie pe un procesor fizic; el se numete deblocat, ceea ce implic trecerea temporar n starea blocat a procesului,
eligibil dac nu poate fi executat din cauza lipsei unui procesor disponibil. care execut semnalizare. Verificarea validitii monitorului este
Administrarea proceselor face apel la fire de ateptare. Astfel, fiecrei simplificat, deoarece condiia de depire este consultat n timpul
cauze distincte de blocare i se asociaz un fir de ateptare pentru a stabili o deblocrii: procesul care execut semnalizare poate s se mulumeasc cu
ordine a proceselor blocate. Mai mult, procesele eligibile sunt meninute ntr- garantarea unei condiii mai slabe dect condiia de depire.
un fir special de ateptare 103. REALIZAREA UNUI NUCLEU DE SINCRONIZARE.
Algoritmi de baz
Programul monitorului trebuie s asigure dou funcii:
97. Administrarea contextelor i schemele primitivelor excluderea mutual pentru procedurile monitorului,
Coninutul contextului blocarea i deblocarea asociate primitivelor ateptare i semnalizare.
Operaia de alocare a procesorului fizic impune pstrarea pentru fiecare Fiecrui monitor M i sunt asociate urmtoarele structuri de date:
proces a unei copii a contextului. Aceast copie a contextului descrie starea un dispozitiv de excludere mutual M.disp (lact), care poate lua dou
procesorului pentru procesul considerat. n acest scop fiecrui proces i se valori liber sau ocupat, un fir de ateptare M.fir asociat acestui dispozitiv.
asociaz o mulime de informaii rezidente n memorie i numit vector de Iniial M.disp=liber, M.fir=<vid>.
stare, bloc de control al procesului sau blocul contextului, Fiecrei condiii c de M i este asociat un fir M.c.fir, un contor de gard
Organizarea nucleului M.c.ntrziere i, pentru condiiile asociate unei ntreruperi, un indicator
Execuia programelor nucleului este declanat n dou moduri boolean M.c.ntr_sosit.. Firul proceselor eligibile este determinat de
prin apelarea unei primitive de administrare a proceselor (creare, f_eligibil.
distrugere, sincronizare, etc.); aceste primitive sunt realizate sub form de 104. REALIZAREA UNUI NUCLEU DE SINCRONIZARE. Tratarea
apel al supervizorului,printr-o ntrerupere: programele de tratare a ntreruperilor
ntreruperilor fac parte din nucleu, deoarece ntreruperile sunt traduse n Pentru asigurarea uniformitii mecanismelor de sincronizare fiecrei
operaii de sincronizare i sunt invizibile la nivelurile superioare. ntreruperi i se asociaz: o condiie ntr-un monitor, un proces ciclic care
n ambele cazuri, mecanismul de intrare n nucleu conine salvarea realizeaz tratarea ntreruperilor, n stare de repaus acest proces este n
automat a cuvntului de stare i, eventual, a registrelor procesorului ateptarea condiiei. O condiie poate fi asociat unui singur nivel de
Programul unei primitive a nucleului are urmtoarea schem general: ntrerupere. Sosirea unei ntreruperi provoac executarea funciei
prolog; - salvarea contextului i intrarea n seciunea critic semnalizare pentru condiia asociat. Prioritatea relativ a ntreruperilor este
control; -- verificarea drepturilor i a parametrilor tradus n prioritatea proceselor, care trateaz ntreruperile.
<corpul programului>-- manipuleaz firele proceselor
alocare_procesor; -- programul dispecer i ieirea din seciunea critic 105. REALIZAREA UNUI NUCLEU DE SINCRONIZARE. Tratarea
erorilor
98. REALIZAREA UNUI NUCLEU DE SINCRONIZARE. Principiul de tratare a erorilor const n blocarea procesului care a
Organizarea general provocat eroarea i expedierea unui mesaj procesului printe, care va putea
Procesele pot fi create i distruse n mod dinamic i sunt organizate lua msurile necesare. Pentru aceasta este folosit un fir special f_eroare
ierarhic conform relaiei de paternitate. Un proces este creat cu ajutorul Presupunem c o eroare care are loc n cursul execuiei unui proces
primitivei: creare(p, context iniial, atribute) provoac o deviere, tratarea creia se va scrie astfel:
Atributele unui proces conin prioritatea prolog;
i drepturile de a executa anumite operaii. Contextul iniial specific p:=<proces apelant>;
starea iniial a cuvntului de stare, a registrelor procesorului i a spaiului de intrare(p, f_eroare);
lucru asociat procesului. Procesul este creat n starea eligibil. <tratare specific>;
99. REALIZAREA UNUI NUCLEU DE SINCRONIZARE. stare[p]:=suspendat;
Interfeele alocare_procesor;
Procesele sunt sincronizate cu ajutorul monitoarelor. Gestiunea
ntreruperilor este integrat n mecanismul monitoarelor: o ntrerupere este 106. REALIZAREA UNUI NUCLEU DE SINCRONIZARE. Operaii
asociat unei condiii. asupra proceselor
Monitoarele sunt declarate n programele proceselor; un monitor este
creat la compilarea programului, unde el este declarat, i este mai apoi 107. 107.REALIZAREA UNUI NUCLEU DE
utilizat conform regulilor, definite de limbajul de programare utilizat.
SINCRONIZARE. Crearea i distrugerea proceselor
Procesele pot fi create i distruse n mod dinamic i sunt organizate
Problema principal, condiionat de gestiunea dinamic a proceselor,
ierarhic conform relaiei de paternitate. Un proces este creat cu ajutorul
este alocarea contextelor i numelor proceselor. Pentru aceasta sunt utilizate
primitivei: creare(p, context iniial, atribute)
dou metode principale:
Utilizarea primitivelor creare, distrugere, suspendare i reluare este
pentru blocurile contextelor sunt rezervate un numr fix de
condiionat de un drept, care figureaz n atributul drepturi al
amplasamente; amplasamentele neutilizate sunt determinate de o valoare
procesului.
special (nil) a cmpului stare al lor; fiecare bloc este desemnat printr-un
numr, care este numrul utilizat pentru desemnarea procesului asociat;
100.
amplasamentele rezervate blocurilor de context sunt alocate dinamic n 114. Unix. Distrugerea proceselor
memorie; numerele sunt alocate proceselor de asemenea n mod dinamic i La terminarea execuieia unui proces , el este distrus elibernd toate
un tabel de coresponden, asociaz numrului fiecrui proces adresa n resursele, care fusese alocate anterior. Dac procesul printe se termin
memorie a blocului su de context. naintea procesului descendent, ultimul devine orfan . Toi orfanii sunt
Distrugerea unui proces trebuie s implice eliberarea resurselor, care i nfiai n mod automat de programul init, executat de procesul cu numrul
fuseser alocate. Printre aceste resurse, doar numele i contextul sunt 1, care duce evidena terminrii execuiei lor. Dac a fost terminat deja
gestionate direct de nucleu; celelalte resurse, cum ar fi fiierele, sunt preluate execuia procesului descendent, iar procesul printe nu este gata s
de mecanisme specifice. recepioneze de la sistem semnalul despre acest eveniment, descendentul nu
Distrugerea unui proces, care se afl n seciunea critic poate conduce dispare total, ci este transformat n Zombie; n cmpul Stat aceste procese
la o blocare. 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
108. REALIZAREA UNUI NUCLEU DE SINCRONIZARE. nu sunt eliberate. Dup terminarea execuiei procesului printe, procesul
Suspendarea i reluarea Zombi orfan devine pentru o perioad scurt de timp descendentul lui init, ca
Primitiva suspendare permite procesului-printe s controleze activitatea mai apoi s moar definitiv.
unui proces descendent, ntrerupnd n mod forat execuia acestuia. O 115. Demoni n Linux
utilizare curent este suspendarea unui proces, angajat ntr-o bucl infinit. Demon n Linux este numit procesul predestinat s lucreze n regim de
Procesul ntrerupt n acest mod este transferat ntr-un fir de ateptare special, fond fr terminal i care execut anumite operaii pentru alte procese
Efectul primitivei suspendare poate fi ca i al unei devieri i programul De obicei, demonii i ndeplinesc n linite lucrul i ne amintim de ei
de tratare poate fi analogic. Suspendarea unui proces pune o problem doar n cazul unor situaii ieite din comun: spaiu insuficient demonul
analogic celei de distrugere. Primitiva de reluare permite unui proces s singur informnd utilizatorul despre aceasta, sau refuz s lucreze i suntei
deblocheze un fir suspendat, dup modificarea eventual a contextului su. ntrebat de ef cnd se vor termina problemele cu imprimant .

109. REALIZAREA UNUI NUCLEU DE SINCRONIZARE.


Excluderea mutual i alocarea procesorului 116. Unix. Obinerea informaiilor despre proce
Excluderea mutual este realizat prin mascarea ntreruperilor. Pentru Pentru obinerea informaiilor despre procese, vizualizate de programele
aceasta trebuie pregtit masca ntreruperii n cuvntul de stare, care ar ps i top, Linux-ul utilizeaz un sistem special de fiiere, numit procfs. n
specifica programele asociate primitivelor de tratare a ntreruperilor. Dac majoritatea distributivelor el este iniializat la lansarea sistemului de operare
notm prin proces_ales o variabil global, care conine numrul procesului cu titlul de catalog /proc. Datele despre procesul cu numrul 1 se afl n
ales, iar prin salv_csp locaiunea n care a fost salvat cuvntul de stare a subcatalogul /proc/1, despre procesul cu numrul 182 - n /proc/182, etc.
procesorului la apelarea supervizorului sau la ntrerupere, prologul va fi de Toate fiierele, deschise de un proces, sunt reprezentate sub forma unor
forma: referine simbolice n catalogul /proc/<pid>/fd, iar referina la catalogul
prolog: rdcin este pstrat ca /proc/<pid>/root.
<mascarea ntreruperilor> -- masca n cuvntul de stare
csp[proces_ales] := salv_csp; 117. PRINCIPIILE GESTIUNII INFORMAIEI. Definiii generale
salv_registre(Reg[proc_al]); 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
110. REALIZAREA UNUI NUCLEU DE SINCRONIZARE. central pentru a citi i la necesitate a modifica coninutul acestui
Realizarea pentru cazul monoprocesor amplasament. Coninutul unui amplasament poate fi interpretat ca un ntreg,
Excluderea mutual este realizat prin mascarea ntreruperilor. Pentru o instruciune . Reprezentarea extern este convertit n cuplul
aceasta trebuie pregtit masca ntreruperii n cuvntul de stare, care ar numele amplasamentului devenind numele obiectului. Numim durat de
specifica programele asociate primitivelor de tratare a ntreruperilor. Dac existen sau de via a unui obiect perioada de timp n care acesta este
notm prin proces_ales o variabil global, care conine numrul procesului accesibil. Sistemul de operare i tipul obiectului determin durata de
ales, iar prin salv_csp locaiunea n care a fost salvat cuvntul de stare a existen a obiectului. Numim obiect accesibil un obiect cruia i s-a asociat o
procesorului la apelarea supervizorului sau la ntrerupere, prologul va fi de cale de acces. Numim obiect partajat orice obiect care este accesibil mai
forma: multor utilizatori
prolog:
<mascarea ntreruperilor> -- masca n cuvntul de stare 118. Interpretarea numelor
csp[proces_ales] := salv_csp; La nivelul SO obiectele sunt memorate n amplasamente, iar procesele le
salv_registre(Reg[proc_al]); 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. n cazul operaiilor
aritmetice calea de acces asociat unui obiect conduce la o constant; n
cazul listelor sau parametrilor - la un nume. Legarea se traduce, n ultim
111. Realizarea pentru cazul unui sistem multiprocesoral instan, prin stabilirea corespondenei ntre identificatori i adrese.
Regimului de funcionare multiprocesor i sunt specifice dou
instruciuni: 119. Construirea cii de acces
Test and Set(R, m) :asigur excluderea mutual Fie F1 i F2 doua funcii de acces, F1 permind accesul de la o1 la o2, iar
ntrerupere(k) :provoac o ntrerupere a procesorului k. F2 de la o2 la o3: o1F1o2 i o2F2o3, accesul de la o1 la o3 fiind realizat prin
O ntrerupere sau un apel de supervizor provoac introducerea compunerea acestor funcii. Calea de acces de la o1 la o3 poate fi construit
cuvntului de stare i a registrelor procesorului n cauz ntr-o stiv n prin metoda substituiei sau prin metoda nlnuirii.
memorie, proprie acestui procesor. 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
112. Procese i fire n Linux dezavantajul c o2 este iremediabil pierdut.
n Linux procesele se nmulesc prin clonare: apelul de sistem, care Metoda nlnuirii cere ca la fiecare accesare a obiectului o3 pornind de
creaz un proces nou, se numete clone, iar procesul fiu este o copie aproape la o1 s fie parcurs calea o1F1o2F2o3. Nu se pierde nici o informaie, dar
exact a procesului printe, doar c mai departe va executa codul su, iar accesul este mai lent.
procesul printe ceea ce este scris dup apelarea lui clone.
113. Unix. Crearea proceselor 120. Structura reprezentrilor. Descriptori
Procesele sunt create prin utilizarea funciilor din familia exec ale Numele obiectului compus se afl ntr-un amplasament al crui coninut
bibliotecii Linux standard: execl, execlp, execle, execv, execve, execvp. este un descriptor. Utilizarea unui descriptor pentru a accesa un obiect
Dei formatul de apelare este diferit, n ultim instan execut acelai lucru: impune trecerea printr-un program de accesare care va interpreta acest
nlocuiesc codul din procesul curent cu codul, care se afl n fiierul indicat. descriptor i prezint urmtoarele avantaje:
Fiierul poate fi un fiier binar executabil Linux, un script al interpretorului
limbajului de comand, un fiier binar de un alt format.
n cazul n care obiectul este pasat ca parametru unei proceduri este Acordarea i retragerea drepturilor de acces.- Problema pus aici este
suficient s fie transmis descriptorul sau adresa acestuia: este mult mai problema modificrii dinamice a drepturilor de acces.
simplu s administrezi informaii de volum fix i cunoscut,
descriptorul constituie un punct de trecere impus pentru accesarea 126. DESEMNAREA I LEGAREA FIIERELOR I
reperat a obiectului i, ca rezultat, poate servi la implementarea unor INTRRILOR-IEIRILOR
controale ale accesrii, de msurare, etc., Vom examina aici modul de desemnare a fiierelor, legarea lor cu
descriptorul asigur un acces indirect la obiectul reperat, ceea ce programele, care le utilizeaz i relaiile lor cu intrrile-ieirile. Nu avem
permite modificarea dinamic a cii de acces (substituirea unui obiect printr- nevoie pentru aceasta s cunoatem organizarea intern a unui fiier,
un alt obiect) sau deplasarea unui obiect n memorie fr recompilarea interesndu-ne doar organizarea lui ca un tot ntreg n cazul unui limbaj de
modulului surs, comand sau al unui program.
partajarea obiectelor ntre mai muli utilizatori cu drepturi sau
proceduri de accesare diferite poate fi realizat construind tot atia 127. Ci de acces la un fiier
descriptori, ci utilizatori exist; aceti descriptori repereaz acelai obiect i Un fiier este desemnat de ctre utilizatorii externi cu ajutorul
au aceleai informaii de localizare fizic. identificatorilor nume externe. Aceste nume externe sunt definite ntr-un
mediu comun mai multor utilizatori. Structurile de date, care permit
121. Contexte i medii construirea cii de acces la un fiier pornind de la unul din numele sale
Vom numi lexic o mulime de identificatori. Mulimea obiectelor, externe, sunt numite cataloage sau directorii.
desemnate de identificatorii lexicii la un moment de timp dat, se numete n afara numelor interne i externe, adesea mai este definit un nume, zis
context asociat la aceast lexic. Starea de execuie a unui context este starea local sau temporar. Un nume local este definit ntr-un mediu propriu unui
mulimii obiectelor, care constituie acest context. utilizator i are o existen doar temporar Acces selectiv: interpretarea
Fiind dat doar lexica nu putem defini un context: mai trebuie s fie numelor locale permite introducerea unui acces selectiv la un fiier n
specificate regulile de interpretare, care vor fi aplicate identificatorilor din dependen de utilizator.
cadrul lexicii. 128. Desemnarea extern a fiierelor. Cataloage. Organizarea
Vom numi mediu mulimea format dintr-o lexic i informaiile arborescent
(programe, date, reguli de interpretare) necesare la utilizarea acestei lexici. Un catalog definete , un mediu, adic o mulime de identificatori i
Aceste informaii pot lua diferite forme n dependen de limbajul utilizat. regulile de interpretare a acestor identificatori. Organizarea cea mai simpl
122. Legarea poate fi schematic reprezentat de un tabel, care asociaz unui identificator
Numim legare procesul construirii unei ci de acces. Legarea obiectelor descriptorul fiierului pe care acesta l desemneaz.
unui program poate fi efectuat la diferite momente de via a programului n O organizare arborescent este definit dup cum urmeaz:
sistem: Unui catalog i se asociaz o mulime (care poate fi vid) de alte
n momentul scrierii programului.- Un atare program poate fi imediat cataloage i fiiere; aceste obiecte se numesc incluse n catalog;
executat, dar orice modificare este dificil i conine un risc ridicat de Exist un catalog, i numai unul singur, numit rdcin, care nu are
eroare. tat. Orice alt catalog are un tat, i doar unul singur.
La una din fazele de translatare Relaia de legtur definete o arborescen de cataloage cu rdcina n
La o faz de ncrcare i editare a legturilor- ncrcarea i editarea catalogul rdcin.
legturilor pot fi combinate ntr-o singur operaie sau realizate separat.
n timpul execuiei; legtura este numit n acest caz dinamic. 129. Legarea fiierelor cu fluxurile de intrare-ieire
Un program schimb informaii cu mediul exterior prin intermediul unor
123. Protecia operaii de intrare-ieire. care permit comunicarea cu un fiier sau un
Vom nelege prin termenul protecie mulimea metodelor i periferic. n momentul elaborrii programului nu este nc cunoscut cu care
mecanismelor, care vizeaz specificarea regulilor de utilizare a obiectelor i fiier sau periferic se vor produce intrrile-ieirile; adesea este necesar s se
garanteaz respectarea acestor reguli. utilizeze fiiere sau periferice, care difer de la o execuie la alt.
Protecia este asigurat de o combinaie de dispozitive fizice i logice. Un flux de intrare-ieire este un obiect, care posed toate caracteristicile
Exist legturi strnse ntre desemnarea obiectelor i protecia lor. unui periferic de intrare-ieire (nume, operaii de acces), dar care nu are o
Trei observaii, legate de protecie: existen real
O modalitate simpl de a interzice unui proces orice acces la un obiect La realizarea asocierii este folosit legarea prin nlnuire. Fiecrui flux i
const n suprimarea tuturor cilor de acces la acest obiect, altfel spus, de a le se asociaz un descriptor. Operaia de asociere cere ca acest descriptor s
retrage din contextul procesului. conin un pointer spre descriptorul fiierului sau perifericului, pe care l
Atunci cnd operaiile permise asupra unui obiect sunt specificate prin asociaz fluxului.
apartenena la o clas sau un tip, este posibil verificarea prealabil execuiei 130. LEGAREA PROGRAMELOR I DATELOR
n cazul n care verificarea este fcut n momentul execuiei, o 1. Program interpretat
procedur de acces faciliteaz implementarea verificrii i reduce riscul unor
erori.
124. Domenii i drepturi de acces
Regulile de utilizare pot fi exprimate specificnd drepturile de
2. Program compilat
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 Compararea acestor dou scheme pune n eviden diferena important
ntre interpretare i compilare: modificarea unui program interpretat are efect
restriciile de mai sus.
imediat, n timp ce n cazul compilrii suntem nevoii s parcurgem toate
etapele, ncepnd cu translatarea.
125. Problemele proteciei
Prezentm succint cteva probleme, legate de implementarea proteciei
n sistemele informatice.
131. Etapele de via a unui program
Protecie ierarhizat
Subsisteme reciproc suspicioase 1. 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.

132. 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.

133. 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.

134. 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.