Sunteți pe pagina 1din 12

1.

Noţiuni De Bază Şi Clasificări 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
funcţionale fizice şi logice, care cooperează pentru a satisface programe.
cerinţele utilizatorilor privind introducerea, stocarea, Sistemele de timp real funcţionează, de obicei, în cadrul unor
prelucrarea, căutarea şi transmiterea informaţiilor. Aceste sisteme de comandă şi este necesar ca valorile anumitor atribute să
componente funcţionale sunt structurate pe niveluri, care se încadreze în limite destul de restrictive, dictate de dinamica
interacţionează prin interfeţe bine definite. Prin noţiunea de proceselor comandate.
sistem de operare înţelegem modulele program ale unui SC, care
administrează resursele tehnice. Modulele în cauză soluționează 5. Exemple de sisteme de operare
situațiile de conflict, optimizează productivitatea sistemului, Windows,Unix, MS DOS.
sporesc eficiența utilizării lui.
Valorile concrete ale atributelor sistemelor de operare şi 6. Cazul calculatoarelor personale
combinaţii ale acestora determină diverse tipuri de SO. Conform Cea mai simplă configuraţie a unui calculator personal (PC) include o
acestor atribute pot fi evidenţiate următoarele tipuri de sisteme de unitate centrală, o memorie principală, un display, o tastatură şi un mouse.
operare: Această configuraţie, de regulă, este completată de o memorie secundară şi o
• secvenţiale, imprimantă.
• cu multiprogramare, Utilizatorul unui astfel de sistem va cere minimum următoarele două
• cu prelucrare multiplă, tipuri de servicii:
• în timp real, etc. identificarea şi crearea unor fişiere sau mulţimi structurate de informaţii;
stocarea acestor fişiere în memoria secundară; transferarea informaţiilor
2. Noţiuni şi termeni din domeniul resurselor tehnice între fişiere şi dispozitivele de intrare/ieşire;
Pentru a trece la noţiunile principale, legate de hardware, vom face execuţia unor programe existente sau introduse sub formă de fişiere în
cunoştinţă mai întâi cu funcţiile de bază ale unui calculator. Pot fi PC;
evidenţiate cinci funcţii esenţiale : stocarea datelor şi extragerea introducerea datelor necesare pentru execuţia programului (de la
rezultatelor: tastatură, dintr-un fişier sau de la alte surse periferice); listarea rezultatelor la
• iniţializarea implică testarea părţilor importante display, imprimantă sau copierea lor într-un fişier.
ale calculatorului, rularea fişierelor de pornire şi încărcarea altor
fişiere 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 îndeplineşte
ul, discheta, discul mobil, memory stick-ul, aparatul digital de următoarele funcţii:
fotografiat etc.;  Reglare. Pentru o derulare bună a procesului de fabricaţie
• procesarea se referă la manipularea datelor parametrii de funcţionare (temperatura, presiunea, concentraţia,
introduse în scopul producerii unui rezultat (ieşirea); etc.) trebuie să se afle într-o plajă de valori predefinite. Pentru
• stocarea constituie procesul salvării informaţiilor aceasta va fi acţionat debitul de intrare a materiilor prime A sau B.
(date sau programe) într-un dispozitiv de păstrare, de exemplu Parametrii de funcţionare sunt măsuraţi cu ajutorul unor captoare.
discul fix, pentru recuperarea ulterioară. Calculatorul preia aceste măsurări şi, în dependenţă de algoritmul
de comandă, acţionează robinetele de intrare.
3. Noţiuni şi termeni din domeniul sistemelor de operare  Înregistrare. Rezultatele măsurărilor sunt periodic înregistrate;
valorile lor sunt afişate pe un tablou de bord şi recopiate într-un
Un sistem de operare este un ansamblu de programe de control şi fişier ("jurnal de bord") în scopul unor prelucrări ulterioare (date
de serviciu care ghidează un calculator în execuţia sarcinilor sale, asistă statistice).
programele de aplicaţie şi interacţionează cu utilizatorul prin  Securitate. În cazul în care unul dintre parametrii măsuraţi
intermediul anumitor funcţiuni. Natura funcţiilor şi modul în care depăşeşte o valoare critică predefinită reactorul trebuie oprit
acestea sunt realizate determină atributele care caracterizează un sistem imediat.
de operare: timpul de răspuns- exprimă durata intervalului delimitat de
lansarea unei cereri de serviciu şi achitarea acesteia de către sistem, 8. Sisteme tranzacţionale
simultaneitatea utilizării- măsoară gradul în care un sistem poate să Caracteristicile principale:
execute în acelaşi timp mai multe lucrări., eficienţa- măsoară • sistemul gestionează un set de informaţii sau baze de date, care pot
proprietatea unui sistem de a folosi în mod optim resursele de care atinge volume importante de informaţie;
dispune, partajarea resurselor şi protecţia informaţiei în calculator- • asupra acestor informaţii pot fi executate un anumit număr de
caracterizează nivelul la care utilizatorii au posibilitatea să utilizeze în operaţii predefinite sau tranzacţii, adesea interactive;
comun informaţia prezentă în sistem şi nivelul la care pot să comunice • sistemul este dotat cu un mare număr de puncte de acces şi un mare
între ei, în deplină siguranţă, generalitatea, flexibilitatea, număr de tranzacţii se pot derula simultan. Caracteristicile obligatorii ale
extensibilitatea, fiabilitatea şi disponibilitatea, transparenţa şi unui astfel de sistem tranzacţional sunt disponibilitatea şi fiabilitatea; pentru
vizibilitatea. Un sistem de operare este obligat: unele sisteme poate fi importantă şi toleranţa la defecţiuni. O caracteristică
• să păstreze informaţia despre starea fiecărei resurse, importantă ale sistemelor tranzacţionale este multitudinea activităţilor
• să ia decizia cărui proces să i se aloce resursa, în ce cantitate, paralele, iar în multe cazuri şi repartizarea geografică a componentelor.
când, cum şi unde, 9. Sisteme în timp partajat
• să aloce resursa şi, la momentul oportun, să o retragă. Destinaţia principală a unor astfel de sisteme este furnizarea serviciilor
necesare unei mulţimi de utilizatori, fiecare dintre ei beneficiind de servicii:
• echivalente serviciilor unui calculator individual;
4. Tipuri de sisteme de operare, obiective şi funcţii • legate de existenţa unei comunităţi de utilizatori: partajarea
Valorile concrete ale atributelor sistemelor de operare şi informaţiilor, comunicaţii între utilizatori.
combinaţii ale acestora determină diverse tipuri de SO. Conform Problemele care apar datorită conceptului de partajare a timpului sunt o
acestor atribute pot fi evidenţiate următoarele tipuri de sisteme de combinaţie a problemelor existente în cazul unui calculator individual cu
operare: cele din sistemele tranzacţionale. Caracteristicile obligatorii ale unui astfel
Un sistem secvenţial (tratare pe loturi, engl. batch processing, fr. de sistem îmbină, în egală măsură, calităţile unui sistem de operare al unui
traitement par lots) execută la un moment dat un singur program, calculator individual şi al unui sistem tranzacţional, cum ar fi:
care trebuie terminat înainte de a lua începe execuţia unui alt disponibilitatea, fiabilitatea, securitatea, exploatarea optimă a
program. caracteristicilor resurselor fizice, calitatea interfeţei şi serviciilor
Sistemele cu multiprogramare acceptă la un moment dat mai multe utilizatorului, facilitatea adaptării şi extensibilităţii.
programe în memoria centrală, acestea aflându-se în diferite stadii
de execuţie. 10. SISTEMUL DE OPERARE ŞI PROCESELE
Noţiunea de proces este asociată conceptului de lucrare şi poate fi 15. EVOLUŢIA SISTEMELOR DE OPERARE
definită ca o suită temporală de execuţii de instrucţiuni,
considerată ca fiind o entitate de bază în descrierea sau analiza Primele sisteme erau caracterizate prin prelucrarea secvenţială a
funcţionării unui sistem. Evoluţia în timp a unui proces presupune taskurilor. Timpul de execuţie a programelor era relativ mare, instrumentele
un consum de resurse, dictat de natura şi complexitatea de depanare – primitive, fiecare programator îşi încărca în mod individual
instrucţiunilor de execuţie. În particular, rezultă că ori de câte ori programul (pachetul de cartele perforate), apăsa butoane, controla conţinutul
se execută procedurile de sistem, resursele, pe care le utilizează locaţiunilor 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. MAŞINĂ IERARHICĂ ŞI MAŞINĂ EXTINSĂ unui pachet – primele încercări de prelucrare pe loturi (1956 – 1959).
Setul de instrucţiuni realizat hardware împreună cu instrucţiunile După 1965 au apărut primele sisteme cu partajare a timpului (time
suplimentare ale sistemului de operare formează sistemul de sharing), au fost propuse sisteme sofisticate de administrare a informaţiei
comenzi al maşinii extinse. Memoria virtuală şi maşinile virtuale sunt nişte principii care nici până
Nucleul sistemului de operare va fi executat pe maşina “goală”, astăzi nu au fost exploatate până la capăt. Progresele ultimilor ani în
iar programele utilizatorului – pe maşina 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
Maşina extinsă personale.

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


Primele calculatoare nu dispuneau de sisteme de operare. Fiecărui
Maşina “goală” Programele utilizator i se rezerva pentru un timp determinat calculatorul cu toate
utilizatorului resursele acestuia. Interacţiunea era directă, programul şi datele fiind
(procese)
introduse în mod manual sub formă de zerouri şi unităţi. Utilitele care
au apărut aveau destinaţia de a asista elaborarea programelor
Sistemul de operare (asambloare, compilatoare, etc.) sau de a facilitata operaţiile de
Procesul 4
Procesul 3 intrare-ieşire.Acest mod de exploatare, numit "poartă deschisă" , era
de o eficacitate minimă. Din această cauză la sfârşitul anilor '50 au
apărut primele "monitoare de înlănţuire" - programe care permiteau
Fig.1.10. Maşina extinsă. executarea secvenţială a unui set de lucrări, pregătite 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 multiprogramării sau partajarea memoriei între
Sistemele de operare pot fi abordate din diferite puncte de vedere, mai mulţi utilizatori a permis o utilizare şi mai bună a procesorului
cum ar fi SO şi procesele, SO şi maşina extinsă sau SO şi maşina central. Exploatarea unui calculator conform principiului timpului
ierarhică. Există şi alte puncte de vedere asupra sistemelor de partajat oferă utilizatorilor posibilităţi analogice unui calculator
operare pe care un specialist ar trebui să le cunoască. individual, permiţând beneficiul unor servicii comune la un preţ redus.
Abordare funcţională-Pentru un utilizator obişnuit, convins că un
calculator este doar un instrument care îl ajută în soluţionarea 18. Organizarea intrărilor - ieşirilor în memorii tampon
unor probleme din domeniul său de activitate, noţiunile, cum ar fi Pentru excluderea influenţei perifericelor asupra vitezei de lucru a
administrarea memoriei cu paginaţie sau driverele dispozitivelor, sistemului de calcul s-a propus să se păstreze în memorie în anumite
nu semnifică prea multe. Destinaţia principală a unui sistem de zone tampon datele de intrare şi rezultatele mai multor lucrări.Deşi
operare pentru această categorie de utilizatori este punerea la utilizarea memoriilor tampon prezintă o serie de avantaje, totuşi două
dispoziţie a unui set de programe care l-ar ajuta în formularea şi momente negative pot fi menţionate:
soluţionare problemelor concrete ce ţin de domeniul său de  atunci când lucrarea în curs de execuţie are nevoie de nişte date
activitate. unitatea centrală rămâne inactivă pe toată perioada citirii acestora;
Abordare din punctul de vedere al interfeţei cu utilizatorul  o lucrare de scurtă durată, sosită în timpul execuţiei unei lucrări
Interfaţa sistemului de operare cu utilizatorul prezintă un interes "lungi", trebuie să aştepte terminarea acesteia din urmă.
aparte. Progresul în acest domeniu este spectaculos, dacă vom lua
în consideraţie 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, oricât de nesemnificativ ar fi părut. Formularea paşilor cu exista simultan câteva procese în stare de execuţie. Un proces se consideră în
ajutorul unui limbaj specializat, cum ar fi Job Control Language stare de execuţie, dacă calculele au început, dar la momentul considerat nu
(JCL), nu a schimbat substanţial situaţia. au fost terminate sau întrerupte. Multiprogramarea permite menţinerea
unităţii centrale în stare activă pentru perioada încărcării programelor
13. Abordare funcţională sau operaţiilor de intrare-ieşire. Acest mod de funcţionare este adaptat
Abordare funcţională-Pentru un utilizator obişnuit, convins că un tratării pe loturi pe un calculator, care nu dispune de un mecanism de
calculator este doar un instrument care îl ajută în soluţionarea unor reamplasare dinamică.
probleme din domeniul său de activitate, noţiunile, cum ar fi
administrarea memoriei cu paginaţie sau driverele dispozitivelor, nu 20. Sisteme cu timp partajat
semnifică prea multe. Destinaţia principală a unui sistem de operare Destinaţia principală a unor astfel de sisteme este furnizarea
pentru această categorie de utilizatori este punerea la dispoziţie a unui serviciilor necesare unei mulţimi de utilizatori, fiecare dintre ei
set de programe care l-ar ajuta în formularea şi soluţionare problemelor beneficiind de servicii:
concrete ce ţin de domeniul său de activitate. • echivalente serviciilor unui calculator individual;
• legate de existenţa unei comunităţi de utilizatori: partajarea
14. Abordare din punctul de vedere al interfeţei cu utilizatorul informaţiilor, comunicaţii între utilizatori.
Abordare din punctul de vedere al interfeţei cu utilizatorul Problemele care apar datorită conceptului de partajare a timpului
Interfaţa sistemului de operare cu utilizatorul prezintă un interes sunt o combinaţie a problemelor existente în cazul unui calculator
aparte. Progresul în acest domeniu este spectaculos, dacă vom lua în individual cu cele din sistemele tranzacţionale şi pot fi clasificate
consideraţie că în primele sisteme de operare utilizatorul era obligat să după cum urmează:
indice în mod explicit şi manual (în regim textual) fiecare pas, oricât de • definirea maşinii virtuale oferite fiecărui utilizator;
nesemnificativ ar fi părut. Formularea paşilor 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 comunicaţie;
substanţial situaţia. • gestionarea informaţiilor partajate şi a comunicaţiilor.
21. Windows, Unix şi alte sisteme Starea procesorului este determinată de conţinutul registrelor acestuia.
Paralel cu evoluţia tehnică şi funcţională a sistemelor de operare a avut Registrele pot fi:
loc şi o importantă evoluţie conceptuală, care a permis o mai bună înţelegere adresabile, numite registre generale, manipulate de programe, registre
a funcţionării sistemelor de operare şi a condus la elaborarea unor metode speciale - cuvânt de stare program (program status word, PSW).
proprii de concepere. PSW conţine informaţii:
Debutul unei cercetări ştiinţifice a sistemelor de operare poate fi Referitoare la starea procesorului:
considerat anul 1964, care a succedat o etapă importantă de dezvoltare Starea de execuţie. Procesorul se poate afla în starea activ în care
tehnică: primele sisteme cu partajare a timpului (Thor, CTSS). Sistemul de îndeplineşte instrucţii, sau în starea de aşteptare, când execuţia este
operare UNIX, primul sistem mobil care asigură un mediu fiabil de suspendată. Modul de funcţionare:
dezvoltare şi utilizare a softului de aplicaţie, este fundamentul practic de Protecţie - se permite doar programelor SO executarea unor instrucţiuni
elaborare a sistemelor fizico-logice deschise. anumite (speciale), programele utilizatorilor neavând acces la aceste
22. SО UNIX şi standardele sistemelor deschise instrucţiuni. 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 aplicaţie. asociate: tabele de segmente, indicatori de protecţie a memoriei, etc.
Implementarea largă a sistemului de operare UNIX a permis trecerea de Referitoare la derularea activităţii curente: codul condiţiei, contorul
la declararea sistemelor deschise la dezvoltarea practică a acestui concept. operaţiei următoare (contor ordinal).
Variantele SO UNIX, propuse de compania SCO şi destinate exclusiv
platformelor Intel, sunt bazate pe modulele iniţiale ale System V 3.2, fiind 28. ÎNTRERUPERI, DEVIERI, APELAREA SUPERVIZORULUI
total compatibile cu toate standardele de bază
29. Activităţi 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 protecţie reciprocă între activităţi.
care a încercat elaborarea SO UNIX în baza micronucleului Mach. A fost Prin asincronism înţelegem efectul care îl pot avea asupra derulării
creat sistemul de operare OSF-1, care nu era în sens de licenţiere „curat”, unei activităţi anumite evenimente exterioare.
deoarece folosea o parte a modulelor iniţiale din SVR 4.0. Numim protecţie reciprocă între activităţi o modificare mai profundă
Nu putem să nu amintim aici şi de realizarea originală a SO UNIX a contextului, atunci când se trece de la o activitate la alta, în comparaţie
pentru platformele Intel, propusă de Torvald Linus – LINUX cu ceea ce are loc în cazul unei simple apelări de procedură.
Prin standard al unei interfeţe al SO subînţelegem un set de proprietăţi, Un caz tipic de asincronism este executarea intrărilor-ieşirilor
mai mult sau mai puţin formale, sintactice sau semantice ale componentelor simultan cu execuţia unui program. Trebuie să fie asigurată posibilitatea
sistemului de operare. informării programului despre terminarea unui transfer de informaţii.
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 următoarelor două operaţii:
Mai menţionăm standardul de-facto SPARC Complience Definition, trecerea cuvântului de stare într-un amplasament specificat al memoriei,
propus de organizaţia SPARC International, încărcarea în cuvântul de stare a conţinutului 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 întâi de ANSI şi apoi de ISO. În acest standard multe cauze distincte. Presupunem că fiecărei cauze i-a fost asociat un număr
sunt specificate, în afara limbajului C, bibliotecile necesare într-o realizare de ordine. Pot fi întâlnite două scheme de comutare a contextului.
standard. Deoarece chiar de la apariţie limbajul C şi sistemele de programare 1. Salvare în amplasamente fixe.
respective erau strâns 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 instrucţiuni, care
25. Sisteme de operare cu micronucleu prohibitează executarea instrucţiunii. Originile pot fi diverse:
Micronucleul este partea minimă principală a unui sistem de operare, date incorecte, instrucţiune neexecutabilă . Devierile pot fi clasificate, ca
folosită pentru asigurarea modularităţii şi transportabilităţii. şi întreruperile, conform cauzelor care le generează. O deviere poate fi
Noţiunea 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
Următorul SO cu micronucleu a fost MS Windows NT, în care instrucţiune chemată să provoace o comutare a contextului
momentul principal declarat era, în afara modularităţii, transportabilitatea. procesorului. Acest efect este analogic apelării 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 Destinaţia unui apel al supervizorului este de a permite apelarea
Au aderat la tehnologia „micronucleară” şi companiile Novell/USL, unei proceduri a sistemului de operare, pretinzând la drepturi mai mari
Open Software Foundation (OSF), IBM, Apple şi altele. Unul din 32. Exemple de sisteme de întreruperi
concurenţii principali ai lui NT în domeniul SO cu micronucleu sunt Mach Sistemul de întreruperi are 5 nivele (în ordinea de descreştere a
3.0, creat în Universitatea Carnegy-Mellon, şi Chorus 3.0 al companiei priorităţilor): eroare hardware, deviere, apelare supervizor,
Chorus Systems. extern şi intrare-ieşire. Fiecărui nivel îi corespunde în memoria
operativă un cuplu de amplasamente rezervate cuvintelor de stare
26. MODUL SECVENŢIAL DE EXECUŢIE A UNUI PROGRAM. vechi şi nou. Fiecare nivel conţine mai multe cauze de întrerupere.
Noţiuni fundamentale
Un program secvenţial = o mulţime de proceduri, care se pot apela 33. IMPLEMENTAREA MECANISMELOR DE COMUTARE A
reciproc. Fiecărei 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 execuţia neîntreruptă a Vom preciza notaţia utilizată în schemele programelor:
unei proceduri unice. !!Execuţia unui program secvenţial constă dintr-un lanţ 1. conţinutul unui cuvânt de stare este reprezentat
de activităţi!!!! prin notaţia <activitate, mod, mascare, contor
Numim context al unei activităţi mulţimea informaţiilor accesibile ordinal>. Dacă csp desemnează un cuvânt de stare,
procesorului în cursul acestei activităţi. Contextul activităţii este compus din câmpurile 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 instrucţiuni speciale: apelarea şi returul din variabilă sau de procedură, desemnează adresa
procedură, care realizează comutarea contextului. amplasamentului unde se află variabila sau prima
instrucţiune a procedurii,
27. Starea şi contextul procesorului
3.notaţia Mp[adr] desemnează conţinutul Intrări-ieşiri programate pe canal sau acces direct la memorie
amplasamentului cu adresa adr. Intrări-ieşiri asincrone cu întreruperi
4. notaţiile svc_vechi, dev_vechi, intr_x_vechi, Intrări-ieşiri sincrone
svc_nou, dev_nou, intr_x_nou desemnează
amplasamentele unde sunt plasate şi de unde sunt 39. Intrări-ieşiri buferizate în memorie
încărcate cuvintele de stare. Diferenţa considerabilă dintre viteza de lucru a unităţii centrale şi cea a
Vom mai presupune că organelor periferice impune "buferizarea" intrărilor-ieşirilor, adică
1. apelarea supervizorului este de forma SVC <cod>, introducerea unei zone-tampon de memorie între periferic şi programul
unde <cod> reprezintă un număr care permite utilizatorului. Scopul este de a reduce timpul de inactivitate a unităţii
identificarea funcţiei cerute, centrale, dezlegând funcţionarea acesteia de periferice.
2. un indicator <cauză> permite stabilirea cauzei care Programul utilizatorului va transfera informaţiile din sau spre zona-
provoacă o deviere. tampon, iar această zonă-tampon va servi, în mod paralel, drept sursă sau
destinaţie la schimbul de date cu perifericul. Dezlegarea unităţii centrale de
34. Utilizarea devierilor şi apelării supervizorului periferic este cu atât mai bine realizată cu cât este mai mare capacitatea
zonei-tampon. Adesea, pentru a nu supraîncărca memoria principală, zona-
35. Exemple de utilizare a întreruperilor tampon este situată pe discul fix.
Principala utilizare a întreruperilor este măsurarea timpului şi
administrarea operaţiilor de intrare-ieşire. Prezentăm mai jos câteva exemple 40. Încărcarea iniţială
de utilizare a ceasului calculatorului. La primele calculatoare, un program de câteva instrucţiuni, introdus
procedura iniţializare; 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 încărcarea 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 încărcare (bootstrapping, eng.).
procedura tratare_svc; În calculatoarele contemporane, programul de iniţializare se află
save(zonă); permanent într-o memorie constantă (BIOS). Execuţia acestui program este
case cod of declanşată odată cu punerea sub tensiune a calculatorului (autoîncărcare).

apel_lim_timp_ex: -- parametrii p, q, tratare_eroare 41. GESTIUNEA ACTIVITĂŢILOR PARALELE
ceas:=q;
cspretur:=svc_vechi; -- salvare pentru retur 42. EXEMPLE DE ACTIVITĂŢI PARALELE
csplucrare:= <activ,slave,demascat,adr p>; 43. Administrarea tamponată a intrărilor-ieşirelor
csperoare:= <activ,slave,demascat,adr tratare_eroare>; Analiza acestui mod de funcţionare (fig.3.1) pune în evidenţă patru
armare(intr_ceas); activităţi, care pot avea loc simultan:
restabileşte(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 terminării procedurii p imprimare fizică IF (canal 3)
dezarmare(intr_ceas); Pot fi evidenţiate două tipuri de condiţii, care trebuie respectate:
încarcă_csp(cspretur); Condiţii, care stabilesc posibilitatea existenţei unor activităţi
… Condiţii de validitate a informaţiilor 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ă având capacitatea
necesară pentru păstrarea acestor segmente.
36. PROGRAMAREA OPERAŢIILOR DE INTRARE-IEŞIRE Programele P1 şi P2 sunt executate pe rând de procesor. Relaţia 2t<T
Prin noţiunea de intrare-ieşire trebuie să fie respectată. Dacă acesta va fi cazul, funcţionarea reactoarelor
numim orice transfer de informaţii din sau spre nucleul calculatorului. pentru un observator extern pare identică pentru ambele soluţii. Trebuie,
Operaţiile de I/E semnifică: totuşi să subliniem, că soluţia doi impune restricţii mai severe în ceea ce
transferurile de informaţii dintre diferite nivele ierarhice ale memoriei, priveşte performanţele calculatorului
transferurile de informaţii din sau spre mediul exterior (organe periferice Modalităţile de implementare a soluţiei doi.
locale sau la distanţă, captoare sau dispozitive de acţionare, alte calculatoare, 1) Partajarea procesorului
etc.). 2) Partajarea programului
37. Organizarea generală
Un organ de intrare-ieşire este un dispozitiv capabil să transfere 45. NOŢIUNE DE PROCES SECVENŢIAL
informaţii între procesorul sau memoria calculatorului şi un suport extern de Executarea unui program se traduce într-o suită de acţiuni a1, a2,..., ai,...,
informaţie. Acest transfer este comandat de către procesorul central. cu început(ai)<sfârşit(ai) **
Un canal O astfel de suită este numită proces secvenţial sau simplu proces.
este un procesor specializat în operaţiile de intrare-ieşire. 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), sfârşit(a1), început(a2), sfârşit(a2),...
un procesor central. 46. Proces unic. Context
Un contróler este un dispozitiv de comandă adaptat la un tip concret de Noţiunea de proces pune la dispoziţie un model pentru reprezentarea
echipament periferic. Autonomia sa este limitată de operaţii foarte unei activităţi, care rezultă din executarea unui program pe calculator.
elementare. Destinaţia principală a unui controler este de a permite , contextul unui proces rezultant din executarea unui program conţine:
conectarea a mai multor periferice de acelaşi tip la un singur controler. Contextul procesorului (cuvântul de stare şi registrele),
Un periferic este un organ capabil să transfere informaţii din sau spre un Un context în memorie, sau spaţiul de lucru (segmente procedură, date,
suport extern. Controlerul este legat de periferic printr-o interfaţă, care stivă de execuţie),
conţine un set de funcţii O mulţime de atribute ataşate procesului şi care specifică diferite
şi o linie de comunicaţie, care serveşte la transferul informaţiilor. proprietăţi:
38. Metode de comandă a perifericelor
Programul, care controlează funcţionarea elementară a unui dispozitiv
periferic se numeşte driver. Driverul gestionează în mod direct interfaţa
controlerului perifericului, tratează întreruperile generate de acesta, 
În realitate, citirea şi scrierea pe disc sunt executate pe acelaşi canal, ceea
detectează şi tratează cazurile de eroare. Modurile principale de control ale ce poate impune unele restricţii privind simultaneitatea executării lor. Vom
perifericelor ignora aici aceste restricţii, justificând mai apoi acest mod de procedare.
Nume. Numele unui proces, care serveşte pentru identificarea lui.
Prioritate. Prioritatea proceselor permite ordonarea lor pentru alocarea 53. Probleme de realizare a sincronizării
procesorului. Dacă toate procesele au aceeaşi 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 iniţială este non-sosit. Asupra evenimentului
Drepturi. Drepturile unui proces specifică operaţiile care îi sunt permise, memorizat sunt posibile două operaţii, care sunt acţiuni indivizibile:
în scopul asigurării protecţiei informaţiei . e:=<valoare> -- atribuirea imediată a unei valori
aşteptare(e).
47. Relaţii între procese Operaţia aşteptare(e), executată de un proces p, are următoarea
Vom cerceta în continuare execuţia unei mulţimi de procese şi specificaţie:
interacţiunea reciprocă a acestora. Noţiunile, introduse mai sus, pot fi extinse if e = non_sosit then
pentru o mulţime de procese: starea(p) := blocat -- p este trecut în “aşteptarea lui e”
traiectoria temporală a unei mulţimi de procese este şirul evenimentelor endif
formate de începuturile şi sfârşiturile acţiunilor rezultante din executarea Când e ia valoarea sosit, toate procesele care aşteptau e trec în starea
programelor acestor procese. activ.
contextele unor procese diferite pot avea părţi comune. Două procese,
contextele cărora sunt disjuncte, se numesc independente; ele nu pot avea 54. Monitorul – mecanism de sincronizare
interacţiuni reciproce. Partea contextului, care aparţine unui singur proces, se Un monitor este constituit dintr-o mulţime de variabile de stare şi o
numeşte context privat al procesului dat. mulţime de proceduri, care utilizează aceste variabile. Unele dintre aceste
proceduri, numite externe, sunt accesibile utilizatorilor monitorului; numele
48. Mulţimi de procese. Paralelism acestor proceduri sunt numite puncte de intrare ale monitorului. Procesele,
Să considerăm două programe distincte P şi Q, fiecare având î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 specificaţiilor problemei.
moduri, caracterizate de forma particulară a traiectoriei sale . Un monitor conţine un fragment de cod de iniţializare, 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 SINCRONIZĂRII


Experienţa demonstrează, că problemele de sincronizare
logică întâlnite în practică pot fi reduse, în marea lor
schema 3 are loc un paralelism real, iar în schema 2 – un pseudo- majoritate, la combinaţia unui număr mic de situaţii
paralelism. Paralelismul real necesită două procesoare distincte. Două elementare, schemele de soluţionare ale cărora sunt
observaţii importante sunt necesare: cunoscute.
Diferenţa acestor scheme de execuţie este legată de alegerea nivelului de 57. Probleme-tip
observare. Astfel, la nivelul de bază, diferenţa dintre schemele 1 şi 2 dispare: Problemele-tip sunt următoarele:
ambele sunt secvenţiale. accesarea de către o mulţime de procese a unei resurse partajate comune,
comunicarea între procese,
49. Concurenţa proceselor. Resurse virtuale gestionarea perifericelor şi intrărilor-ieşirilor tamponate,
Funcţionarea corectă a unei mulţimi de procese, care participă la sincronizare temporală.
îndeplinirea unei lucrări comune, implică relaţii logice de cooperare. Este
comod să se separe această cooperare de concurenţa pentru resursele fizice 58. Administrarea unei resurse partajate
cu scopul de a simplifica înţelegerea şi aplicarea celor două tipuri de relaţii. Considerăm o resursă (fizică sau logică) partajată de o mulţime de
Pentru aceasta este folosită noţiunea de resurse virtuale: procese. Utilizarea acestei resurse trebuie să respecte nişte reguli de utilizare,
fiecărei resurse fizice critice i se asociază tot atâtea copii imaginare destinaţia cărora constă în garantarea unor proprietăţi specificate sau
(sau virtuale) ale acestei resurse câte procese concurente solicită utilizarea ei. restricţii de integritate. Aceste restricţii sunt specificate pentru fiecare
resursă.
50. Excludere mutuală O modalitate de garantare a respectării regulilor de utilizare a unei
Excluderea mutuală constă în extinderea pentru secvenţa de acţiuni a resurse constă în adoptarea următoarei scheme:
proprietăţii de indivizibilitate a acţiunilor nivelului de bază (acţiuni atomare). modul de folosire a resursei presupune utilizarea obligatorie a
Posibilitatea executării unor acţiuni 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 căruia impune respectarea restricţiilor de integritate.
52. Exprimarea şi implementarea restricţiilor de succesiune
sfârşit(scriere(a)) < început(citire(a)) 59. Alocarea resurselor banalizate
Această relaţie exprimă restricţia, că citirea lui a de către q nu poate Considerăm o resursă pentru care există un număr fix de N exemplare.
începe înainte de terminarea scrierii lui a de către p. Dacă programul Un proces poate accesa la cerere n unităţi din cele N, le poate utiliza şi apoi
procesului pi are forma elibera. Toate unităţile 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 unităţi
atunci restricţiile de sincronizare se vor exprima după cum urmează: -- aşteptare în caz de eşec
" pentru orice i, j din [1..N]: sfârşit(debut_i) < început(continuare_j) ◄ <utilizarea unităţilor primite>
Restricţiile de sincronizare pot fi exprimate prin următoarele două forme resurse.eliberare(n) -- eliberarea resurselor
echivalente: Condiţia 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 condiţie de autorizare a 60. Modelul cititorului şi scriitorului
depăşirii acestor puncte ale traiectoriei lor temporale.
Să considerăm un fişier manipulat de procese din două clase diferite: Definind tm1, tm2 şi td ca tablouri de elemente de lungimea unei linii şi
cititori, care consultă fişierul fără a modifica conţinutul lui şi scriitori, care pointerii top şi coadă locali fiecărui monitor, procedurile de depozitare şi
pot modifica acest conţinut. Fie pentru un moment arbitrar de timp ncit şi nscr preluare pot fi:
numărul de cititori şi de scriitori, respectiv, care folosesc o procedură de <pentru tm 1> <pentru tm 2>
acces la fişier. Cererea de asigurare a coerenţei fişierului ne impune să procedura intrare(l:linie); procedura intrare(l:linie);
respectăm următoarele restricţii: tm1[coadă] := l; tm2[coadă] := l;
(nscr=0) şi (ncit0) -- fişier în citire coadă := coadă+1 mod N1 coadă := coadă+1 mod N2
sau (nscr =1) şi (ncit=0) -- fişier în scriere procedura ieşire(var l:linie); procedura ieşire(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 mulţimi 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 măsură de durată absolută. Acest mod
producătorului şi consumatorului, realizată cu ajutorul monitoarelor . O altă de sincronizare este utilizat în aplicaţiile de timp real, care conţin interacţiuni
posibilitate, constă în a considera operaţiile 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 producătorului şi consumatorului regulate. Aceste impulsuri pot fi utilizate pentru a declanşa o întrerupere
Un proces (producătorul) trimite mesaje unui alt proces (consumatorul), la fiecare impuls sau
utilizând o zonă tampon în memoria comună. Mesajele sunt de lungime fixă pentru a decrementa în mod automat conţinutul unui registru contor, o
şi capacitatea tamponului este de N mesaje. întrerupere este declanşată atunci când conţinutul acestui registru atinge
Specificaţiile comunicaţiei: 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 conţine 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 operaţie “imposibilă” blochează procesul, care încearcă să o execute. iniţializarea 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
Operaţiile de schimb de mesaje pot fi definite ca nişte mecanisme operaţii au fost introduse pentru organizarea executării paralele a
primitive şi să le utilizăm pentru sincronizarea proceselor. programelor pe un sistem multiprocesoral, noţiunea de proces nefiind încă
Primitivele de bază în comunicarea prin mesaje sunt: clară.
emitere(mesaj,destinaţie) 70. SINCRONIZAREA ÎN WINDOWS
recepţie(mesaj,origine) Platforma pe 32 de biţi pune la dispoziţia programatorului instrumente
Specificările acestor primitive trebuie să precizeze: evoluate pentru multiprogramare, atât la nivelul unei mulţimi de lucrări, cât
natura şi forma mesajelor, şi a unei lucrări singulare. Poate să apară întrebarea CÂND să fie utilizată
modul de adresare a proceselor emiţătoare şi destinatare, multiprogramarea în cadrul unei singure aplicaţii. Răspunsul este foarte
modul de sincronizare a acestor procese, simplu: atunci când dorim ca mai multe fragmente de cod să fie executate
tratarea erorilor. simultan. De exemplu, dacă dorim ca unele activităţi să fie îndeplinite în
regim de fond sau programul să continue să reacţioneze la unele evenimente
64. Aplicaţii : relaţia client-server exterioare în timpul îndeplinirii unor calcule foarte „costisitoare”
O aplicaţie curentă a comunicărilor între procese este relaţia 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,
următoarea schemă: încărcat în memoria operativă. Această instanţă poate crea fire (thread) -
Procesul server este asociat unei porţi, unde clienţii îşi depun cererile; el secvenţe de instrucţiuni, care urmează a fi executate
este blocat atâta timp cât nu există cereri de servicii în aşteptare. Î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
obţinere a unui serviciu cu ajutorul proceselor într-un sistem de operare: exemplu, firul principal al unei aplicaţii) şi fire de lucru, care sunt funcţii
apelarea unei procedure de monitor sau activarea unui proces server ciclic simple. În ultimul caz execuţia firului se încheie atunci când calculele,
prin emiterea mesajelor. Alegerea între aceste două scheme este dictată de generate de funcţia respectivă, iau sfârşit.
considerente de eficacitate.
65. Administrarea intrărilor-ieşirilor 72. Necesitatea sincronizării în Windows
Pentru un proces care execută o intrare-ieşire apelând o procedură de În realitate, din cauza multitaskingului controlat se poate întâmpla 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ă, informaţia a fost efectiv transferată (sau o eroare a fost treacă la un alt fir, care utilizează aceeaşi resursă. Rezultatele pot fi
detectată şi semnalizată). Mecanismul de blocare evită aşteptarea 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. aparţin chiar unor procese diferite. Problema poate să apară întotdeauna când
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
Fiecărui periferic îi este asociat un monitor procedurile externe acest mecanism se numeşte sincronizarea firelor .
ale căruia permit executarea intrărilor-ieşirilor la acest periferic. Acest
monitor are următoarea 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,...: condiţie; operare Windows, create şi gestionate program, comune pentru toate firele
<declaraţiile 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 fişier
67. Buferizarea imprimării 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 aceeaşi structură care are rolul de a asigura să aibă sens propriu. Firele pot să testeze starea curentă a mecanismului de
excluderea mutuală şi sincronizarea condiţiilor tampon plin şi tampon vid. sincronizare şi/sau să aştepte modificarea acestei stări, coordonându-şi în
acest fel acţiunile 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 când acesta poate accesa resursa, CSyncObject. Pentru utilizarea acestor clase trebuie consultaţi constructorii
sau când acesta trebuie să aştepte . ş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 funcţiile clasei, care realizează accesarea resursei, îşi
Crearea unui obiect de sincronizare se produce prin apelarea unei funcţii coordonează lucrul cu acest membru.
speciale din WinAPI de tipul Create… (de exemplu, CreateMutex). Acest Utilizând funcţiile 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 funcţiile CSingleLock şi
firele procesului dat. Un obiect de sincronizare poate fi accesat şi dintr-un alt CmultiLock.
proces, dacă acest proces a moştenit descriptorul obiectului dat, sau folosind
funcţia de deschidere a unui obiect (Open…). 81. Exemplu de sincronizare în Windows
Dacă în parametrul timp este indicată constanta simbolică INFINITE, #include <windows.h>
funcţia va aştepta până când starea obiectului va deveni set, fără vre-o #include <iostream.h>
restricţie
Starea mai multor obiecte poate fi aflată cu ajutorul funcţiei void main()
WaitForMultipleObjects. Pentru încheierea lucrului cu un obiect de {
sincronizare şi eliberarea descriptorului se apelează funcţia CloseHandle. DWORD res;
Este important de ştiut, că apelarea unei funcţii de aşteptarea blochează firul HANDLE mutex = CreateMutex(NULL, FALSE,
curent, adică atâta timp cât un fir se află în starea de aşteptare 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! Aşteptare 10 secunde...\n";
set a obiectului corespunde momentului de timp în care obiectul nu cout.flush();
aparţine nici unui fir şi poate fi „utilizat”, iar starea reset – momentului Sleep(10000);
când un fir oarecare controlează deja mutex-ul. Accesarea va fi permisă cout<<"Acum eliberăm obiectul\n"; cout.flush();
doar după eliberare. ReleaseMutex(mutex);
Pentru a lega mutex-ul de firul curent trebuie apelată una din funcţiile de }
aşteptare. Firul, căruia îi aparţine mutex-ul, îl poate „ocupa” de mai multe CloseHandle(mutex);
ori, fără autoblocare, însă mai apoi acesta va trebui eliberat tot de atâtea ori }
cu ajutorul funcţiei ReleaseMutex.
82. Utilizarea secţiunilor critice în Windows
76. Evenimentele În acest caz secţiunile 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
aşteptare, despre producerea unui eveniment. În Windows există două tipuri aplicaţiei, celelalte fire fiind blocate
de evenimente – cu resetare manuală şi automată. Resetarea manuală se Secţiunile critice nu sunt obiecte ale nucleului sistemului de operare.
execută cu funcţia ResetEvent. Aceste evenimente sunt folosite pentru Practic, tot lucrul cu secţiunile critice are loc in procesul care le-a creat. Din
informarea mai multor fire, iar evenimentele cu resetare automată sunt aceasta rezultă, că secţiunile critice pot fi utilizate numai pentru sincronizare
utilizate pentru informarea unui anumit fir, celelalte rămânând în aşteptare. în cadrul unui proces.
Funcţia CreateEvent crează un obiect-eveniment, funcţia SetEvent
setează evenimentul în starea set, iar funcţia ResetEvent resetează 83. Structura RTL_CRITICAL_SECTION
evenimentul. Funcţia PulseEvent setează evenimentul, iar după Este definită după cum urmează:
semnalizarea firelor, care erau în aşteptare 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 utilizări
obiect permite să fie „ocupat” de un număr anume de fire, după care LONG RecursionCount; // Contorul accesării repetate din firul
„ocuparea” va fi posibilă numai dacă unul din fire va „elibera” semaforul. utilizatorului
Semafoarele sunt utilizate pentru a limita numărul de fire, care lucrează HANDLE OwningThread; // ID firului utilizatorului (unic)
simultan cu resursa. HANDLE LockSemaphore; // Obiectul nucleului folosit pentru
78. Secţiunile critice aşteptare
Obiectul-secţiune critică permite programatorului să evidenţieze un ULONG_PTR SpinCount; // Numărul de cicluri goale înaintea
fragment de cod în care firul obţine acces la o resursă partajată, apelării nucleului
preîntâmpinând utilizarea resursei de mai mulţi utilizatori. Pentru a utiliza }
resursa firul va intra mai întâi în secţiunea critică (apelarea funcţiei RTL_CRITICAL_SECTION, *PRTL_CRITICAL_SECTION;
EnterCriticalSection). Într-adevăr, secţiunile critice sunt destinate să protejeze datele la
Diferenţa de mutex constă în faptul că secţiunea critică este utilizată accesarea din câteva fire. Utilizarea multiplă a uneia şi aceeaşi secţiuni
numai pentru firele unui singur proces. critice de un singur fir nu va genera eroare, ceea ce este normal.
Cu ajutorul funcţiei TryEnterCriticalSection se poate stabili, dacă
secţiunea critică este liberă. 84. Funcţii API pentru secţiunile critice
Mai întâi funcţiile BOOL
79. Protejarea accesării variabilelor InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection) şi
Există o serie de funcţii, care permit lucrul cu variabilele globale ale BOOL InitializeCriticalSectionAndSpinCount(LPCRITICAL_SECTION
tuturor firelor, fără a ne preocupa de sincronizare, deoarece aceste funcţii lpCriticalSection, DWORD dwSpinCount).
singure rezolvă problema sincronizării. Aceste funcţii sunt Funcţia DWORD
InterlockedIncrement, InterlockedDecrement, InterlockedExchange, SetCriticalSectionSpinCount(LPCRITICAL_SECTION lpCriticalSection,
InterlockedExchangeAdd şi InterlockedCompareExchange. De DWORD dwSpinCount) setează valoarea câmpului SpinCount şi returnează
exemplu, funcţia InterlockedIncrement incrementează valoarea unei valoarea precedentă a acestuia.
variabile pe 32 biţi cu o unitate. VOID DeleteCriticalSection(LPCRITICAL_SECTION
lpCriticalSection) eliberează resursele, ocupate de secţiunea critică.
80. Sincronizarea în Microsoft Fundation Classes VOID LeaveCriticalSection(LPCRITICAL_SECTION
Biblioteca MFC conţine clase speciale pentru sincronizarea firelor lpCriticalSection) eliberează secţiunea critică.
(CMutex, CEvent, CCriticalSection şi CSemaphore). Aceste clase
85. Clase de secţiuni critice simetrie: prologul şi epilogul trebuie să fie identice pentru toate
Clasele CLock şi CAutoLock sunt utilizate, de obicei, pentru procesele şi independente de numărul lor.
sincronizarea accesării variabilelor clasei, iar CScopeLock este destinat, în
special, pentru a fi utilizată în proceduri. Compilatorul singur va avea grijă să 90. Excluderea mutuală prin aşteptare activă
apeleze ::LeaveCriticalSection() prin intermediul destructorului. Urmează
un exemplu de folosire a CScopeLock. Înainte de a descrie implementarea excluderii mutuale prin operaţii
class CLock elementare de blocare şi deblocare a proceselor prezentăm un mecanism,
{ care permite simularea efectului acestor operaţii, menţinând procesele în
friend class CScopeLock; stare activă. Un proces în aşteptare activă simulează blocarea efectuând o
CRITICAL_SECTION m_CS; testare repetată a condiţiei de depăşire, care poate fi actualizată de alte
public: procese.
void Init() { ::InitializeCriticalSection(&m_CS); }
void Term() { ::DeleteCriticalSection(&m_CS); } 91. Algoritmul lui Dekker
O soluţie (algoritmul lui Dekker) poate totuşi fi construită fără a folosi
void Lock() { ::EnterCriticalSection(&m_CS); } alte mecanisme de excludere mutuală, în afară de indivizibilitatea accesării
BOOL TryLock() { return ::TryEnterCriticalSection(&m_CS); } în citire sau actualizarea unui amplasament de memorie. Prezentăm
void Unlock() { ::LeaveCriticalSection(&m_CS); } algoritmul pentru două procese, deşi el poate fi extins pentru un număr
}; arbitrar de procese. Programul foloseşte trei variabile comune celor două
procese:
86. Depanarea secţiunilor critice var c : array [0..1] of boolean;
Depanarea secţiunilor critice este o ocupaţie foarte interesantă, dar şi tur : 0..1;
dificilă. Poţi căuta ore şi chiar zile în şir cauza apariţiei unei probleme. iniţializare: c[0]:=c[1]:=false;
Erorile, legate de secţiunile critice sunt de două tipuri: de realizare şi de tur:=0;
arhitectură. Erorile de realizare pot fi depistate relativ uşor şi, de regulă, sunt prolog :- pentru procesul i; se va pune j=1-i (celălalt 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 îmbrăţişarea fatală , test: if c[j] and tur=j then
când două fire încearcă să acceseze două şi mai multe secţiuni critice. go to test
-secţiunile critice sunt executate relativ repede şi nu cer multe resurse de endif;
sistem; ...
-pentru sincronizarea accesării a mai multor variabile independente este epilog : -- pentru procesul i
mai bine să fie utilizate câteva secţiuni critice c[i]:=false;
-nu este recomandat să fie apelate metode ale unor obiecte “străine”
dintr-o secţiune critică.
92. Aşteptarea activă în sisteme multiprocesorale: Test & Set
-codul unei secţiuni critice va fi redus la minimum;
Pentru tratarea cu ajutorul aşteptării active a cazului în care mai multe
87. ADMINISTRAREA PROCESELOR procese actualizează şi consultă variabile comune, unele maşini au o
Acest capitol este consacrat implementării noţiunilor proces şi instrucţiune, care realizează într-o manieră indivizibilă consultarea şi
sincronizare în cadrul unui sistem de operare. Mecanismele utilizate sunt actualizarea unui amplasament de memorie. Această instrucţiune, adesea
bazate pe realizarea principiul excluderii mutuale. Principiile directoare ale numită Test And Set (tas), este utilizată în sistemele multiprocesorale
reprezentării ş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 coerenţa acestor 93. Semaforul – instrument elementar pentru excluderea mutuală.
variabile trebuie ea însăşi să fie garantată. La nivelul de bază există două Definiţii. Proprietăţi
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 necesităţile. notat s.c., şi a unui fir de aşteptare, notat s.f. La crearea semaforului
contorului i se atribuie o valoare iniţială s0 (s0≥0), şi firul de aşteptare s.f. este
89. Specificarea problemei vid. Un semafor serveşte la blocarea proceselor aşteptând să se producă o
condiţie pentru deblocarea lor; procesele blocate sunt plasate în s.f.
Vom preciza mai întâi problema excluderii mutuale. Fie {p1, p2,...,pn} o Proprietăţile principale ale sincronizării cu ajutorul semafoarelor pot fi
mulţime de procese pe care le vom considera ciclice; programul fiecărui deduse din câteva relaţii invariante: relaţii verificate iniţial şi care rămân
proces conţine o secţiune critică. Excluderea mutuală este asigurată prin neschimbate după executarea primitivelor P şi V un număr arbitrar de ori.
două fragmente de program (prolog şi epilog), care încadrează secţiunea s.c. = s0 – np(s) + nv(s) (1)
critică a fiecărui proces.Soluţia trebuie să posede următoarele proprietăţi: 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ă secţiunea critică,
absenţa blocajelor intempestive
94. Realizarea excluderii mutuale cu ajutorul semafoarelor
dacă în secţiunea critică nu se află vreun proces, nici un proces nu Fie nc numărul de procese, care se află în secţiunea 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: soluţia trebuie să rămână validă şi în cazul unor
Proprietăţile în cauză pot fi verificate aplicând semaforului mutex relaţia
defecte în unul sau în mai multe procese, care se află în afara secţiunii
(3) din 4.1.3.2:
critice,
nf(mutex) = min(np(mutex), 1+nv(mutex)) (5)
absenţa privaţiunilor: un proces, care a cerut intrarea într-o secţiune Excluderea mutuală
critică nu trebuie să aştepte un timp infinit Din (5) avem:
nf(mutex) ≤ 1+nv(mutex)
şi, utilizând (4), obţinem nc ≤ 1: excluderea mutuală este asigurată. 101. REALIZAREA UNUI NUCLEU DE SINCRONIZARE. Structuri
şi algoritmi
95. FUNCŢIONAREA ŞI STRUCTURA UNUI NUCLEU DE Din momentul creării sale unui proces i se asociază un număr fix (nume
SINCRONIZARE intern, process handler), care serveşte la desemnarea lui şi permite accesarea
În cadrul descrierii unui sistem de operare cu ajutorul maşinilor abstracte blocului său de context. Blocul de context conţine următoarele câmpuri:
ierarhice (v. cap.9), nucleul constituie nivelul cel mai inferior, realizat direct Csp: zona de salvare a cuvântului de stare a programului,
pe maşina fizică. Maşina abstractă, realizată astfel poate fi numită o maşină a Reg : zona de salvare a registrelor generale ale procesorului,
proceselor, care posedă, în afara setului de instrucţiuni de bază, primitivele Stare : valoarea stării 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 : legături de înlănţuire în ierarhia proceselor,
Structura unui nucleu de sincronizare depinde, printre altele, de Suc : legături de înlănţuire în firele de aşteptare (FA).
specificaţiile maşinii fizice şi de specificaţiile maşinii abstracte care trebuie
realizate, îndeosebi de mecanismul de sincronizare ales. 102. REALIZAREA UNUI NUCLEU DE SINCRONIZARE.
Realizarea monitoarelor
96. Stările unui proces. Fire de aşteptare Monitorul, descris mai jos, în raport cu noţiunea clasică de monitor,
Am considerat până acuma că un proces se poate afla în două stări: activ prezintă următoarele diferenţe: Semantica primitivei semnalizare.
sau blocat. Luarea în consideraţie a alocării fizice a unui procesor ne impune Specificarea iniţială a primitivei c.semnalizare precizează că unul din
să descompunem starea activă în două stări noi. Un proces activ se numeşte procesele care sunt în aşteptarea condiţiei c (dacă există) este imediat
ales, dacă el este în curs de execuţie pe un procesor fizic; el se numeşte 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 validităţii monitorului este
Administrarea proceselor face apel la fire de aşteptare. Astfel, fiecărei simplificată, deoarece condiţia de depăşire este consultată în timpul
cauze distincte de blocare i se asociază un fir de aşteptare pentru a stabili o deblocării: procesul care execută semnalizare poate să se mulţumească cu
ordine a proceselor blocate. Mai mult, procesele eligibile sunt menţinute într- garantarea unei condiţii mai slabe decât condiţia de depăşire.
un fir special de aşteptare 103. REALIZAREA UNUI NUCLEU DE SINCRONIZARE.
Algoritmi de bază
Programul monitorului trebuie să asigure două funcţii:
97. Administrarea contextelor şi schemele primitivelor excluderea mutuală pentru procedurile monitorului,
Conţinutul contextului blocarea şi deblocarea asociate primitivelor aşteptare şi semnalizare.
Operaţia de alocare a procesorului fizic impune păstrarea pentru fiecare Fiecărui monitor M îi sunt asociate următoarele structuri de date:
proces a unei copii a contextului. Această copie a contextului descrie starea un dispozitiv de excludere mutuală M.disp (lacăt), care poate lua două
procesorului pentru procesul considerat. În acest scop fiecărui proces i se valori liber sau ocupat, un fir de aşteptare M.fir asociat acestui dispozitiv.
asociază o mulţime de informaţii rezidente în memorie şi numită vector de Iniţial M.disp=liber, M.fir=<vid>.
stare, bloc de control al procesului sau blocul contextului, Fiecărei condiţii c de M îi este asociat un fir M.c.fir, un contor de gardă
Organizarea nucleului M.c.întârziere şi, pentru condiţiile asociate unei întreruperi, un indicator
Execuţia programelor nucleului este declanşată î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 uniformităţii mecanismelor de sincronizare fiecărei
operaţii de sincronizare şi sunt invizibile la nivelurile superioare. întreruperi i se asociază: o condiţie într-un monitor, un proces ciclic care
În ambele cazuri, mecanismul de intrare în nucleu conţine salvarea realizează tratarea întreruperilor, în stare de repaus acest proces este în
automată a cuvântului de stare şi, eventual, a registrelor procesorului aşteptarea condiţiei. O condiţie poate fi asociată unui singur nivel de
Programul unei primitive a nucleului are următoarea schemă generală: întrerupere. Sosirea unei întreruperi provoacă executarea funcţiei
prolog; - salvarea contextului şi intrarea în secţiunea critică semnalizare pentru condiţia 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 ieşirea din secţiunea 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 părinte, care va putea
Procesele pot fi create şi distruse în mod dinamic şi sunt organizate lua măsurile necesare. Pentru aceasta este folosit un fir special f_eroare
ierarhic conform relaţiei de paternitate. Un proces este creat cu ajutorul Presupunem că o eroare care are loc în cursul execuţiei unui proces
primitivei: creare(p, context iniţial, atribute) provoacă o deviere, tratarea căreia se va scrie astfel:
Atributele unui proces conţin prioritatea prolog;
şi drepturile de a executa anumite operaţii. Contextul iniţial specifică p:=<proces apelant>;
starea iniţială a cuvântului de stare, a registrelor procesorului şi a spaţiului 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;
Interfeţele alocare_procesor;
Procesele sunt sincronizate cu ajutorul monitoarelor. Gestiunea
întreruperilor este integrată în mecanismul monitoarelor: o întrerupere este 106. REALIZAREA UNUI NUCLEU DE SINCRONIZARE. Operaţii
asociată unei condiţii. 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ă, condiţionată de gestiunea dinamică a proceselor,
ierarhic conform relaţiei de paternitate. Un proces este creat cu ajutorul
este alocarea contextelor şi numelor proceselor. Pentru aceasta sunt utilizate
primitivei: creare(p, context iniţial, atribute)
două metode principale:
Utilizarea primitivelor creare, distrugere, suspendare şi reluare este
pentru blocurile contextelor sunt rezervate un număr fix de
condiţionată de un drept, care figurează în atributul drepturi al
amplasamente; amplasamentele neutilizate sunt determinate de o valoare
procesului.
specială (nil) a câmpului stare al lor; fiecare bloc este desemnat printr-un
număr, care este numărul 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 execuţieia unui proces , el este distrus eliberând toate
un tabel de corespondenţă, asociază numărului fiecărui proces adresa în resursele, care fusese alocate anterior. Dacă procesul părinte se termină
memorie a blocului său de context. înaintea procesului descendent, ultimul devine “orfan” . Toţi “orfanii” sunt
Distrugerea unui proces trebuie să implice eliberarea resurselor, care îi “înfiaţi” în mod automat de programul init, executat de procesul cu numărul
fuseseră alocate. Printre aceste resurse, doar numele şi contextul sunt 1, care duce evidenţa terminării execuţiei lor. Dacă a fost terminată deja
gestionate direct de nucleu; celelalte resurse, cum ar fi fişierele, sunt preluate execuţia procesului descendent, iar procesul părinte nu este gata să
de mecanisme specifice. recepţioneze de la sistem semnalul despre acest eveniment, descendentul nu
Distrugerea unui proces, care se află în secţiunea critică poate conduce dispare total, ci este transformat în Zombie; în câmpul Stat aceste procese
la o blocare. sunt notate cu litera Z. Procesele Zombi nu cer timp de procesor, dar în
tabelul proceselor este păstrată linia lor şi structurile respective ale nucleului
108. REALIZAREA UNUI NUCLEU DE SINCRONIZARE. nu sunt eliberate. După terminarea execuţiei procesului părinte, procesul
Suspendarea şi reluarea Zombi orfan devine pentru o perioadă scurtă de timp descendentul lui init, ca
Primitiva suspendare permite procesului-părinte să controleze activitatea mai apoi să “moară” definitiv.
unui proces descendent, întrerupând în mod forţat execuţia 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 aşteptare special, fond fără terminal şi care execută anumite operaţii pentru alte procese
Efectul primitivei suspendare poate fi ca şi al unei devieri şi programul De obicei, demonii îşi îndeplinesc în linişte lucrul şi ne amintim de ei
de tratare poate fi analogic. Suspendarea unui proces pune o problemă doar în cazul unor situaţii ieşite din comun: spaţiu insuficient – demonul
analogică celei de distrugere. Primitiva de reluare permite unui proces să singur informând utilizatorul despre aceasta, sau refuz să lucreze şi sunteţi
deblocheze un fir suspendat, după modificarea eventuală a contextului său. întrebat de şef când se vor termina problemele cu imprimantă .

109. REALIZAREA UNUI NUCLEU DE SINCRONIZARE.


Excluderea mutuală şi alocarea procesorului 116. Unix. Obţinerea informaţiilor despre proce
Excluderea mutuală este realizată prin mascarea întreruperilor. Pentru Pentru obţinerea informaţiilor despre procese, vizualizate de programele
aceasta trebuie pregătită masca întreruperii în cuvântul de stare, care ar ps şi top, Linux-ul utilizează un sistem special de fişiere, numit procfs. În
specifica programele asociate primitivelor de tratare a întreruperilor. Dacă majoritatea distributivelor el este iniţializat la lansarea sistemului de operare
notăm prin proces_ales o variabilă globală, care conţine numărul procesului cu titlul de catalog /proc. Datele despre procesul cu numărul 1 se află în
ales, iar prin salv_csp locaţiunea în care a fost salvat cuvântul de stare a subcatalogul /proc/1, despre procesul cu numărul 182 - în /proc/182, etc.
procesorului la apelarea supervizorului sau la întrerupere, prologul va fi de Toate fişierele, deschise de un proces, sunt reprezentate sub forma unor
forma: referinţe simbolice în catalogul /proc/<pid>/fd, iar referinţa la catalogul
prolog: rădăcină este păstrată ca /proc/<pid>/root.
<mascarea întreruperilor> -- masca în cuvântul de stare
csp[proces_ales] := salv_csp; 117. PRINCIPIILE GESTIUNII INFORMAŢIEI. Definiţii generale
salv_registre(Reg[proc_al]); Suportul fizic al informaţiei este memoria. La acest nivel memoria poate
fi considerată un şir de amplasamente caracterizate printr-un conţinut. 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 conţinutul acestui
Realizarea pentru cazul monoprocesor amplasament. Conţinutul unui amplasament poate fi interpretat ca un întreg,
Excluderea mutuală este realizată prin mascarea întreruperilor. Pentru o instrucţiune . Reprezentarea externă este convertită în cuplul
aceasta trebuie pregătită masca întreruperii în cuvântul 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
notăm prin proces_ales o variabilă globală, care conţine numărul procesului accesibil. Sistemul de operare şi tipul obiectului determină durata de
ales, iar prin salv_csp locaţiunea în care a fost salvat cuvântul de stare a existenţă a obiectului. Numim obiect accesibil un obiect căruia 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 cuvântul 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 căii de acces la un obiect prin compunerea
funcţiilor de acces ataşate se numeşte legare. Se spune că un obiect este legat
atunci când pentru el este stabilită calea de acces. În cazul operaţiilor
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 corespondenţei între identificatori şi adrese.
Regimului de funcţionare multiprocesor îi sunt specifice două
instrucţiuni: 119. Construirea căii de acces
Test and Set(R, m) :asigură excluderea mutuală Fie F1 şi F2 doua funcţii de acces, F1 permiţând 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 funcţii. Calea de acces de la o1 la o3 poate fi construită
cuvântului de stare şi a registrelor procesorului în cauză într-o stivă în prin metoda substituţiei sau prin metoda înlănţuirii.
memorie, proprie acestui procesor. Metoda substituţiei stabileşte o nouă funcţie 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 înmulţesc” prin clonare: apelul de sistem, care Metoda înlănţuirii cere ca la fiecare accesare a obiectului o3 pornind de
crează un proces nou, se numeşte clone, iar procesul fiu este o copie aproape la o1 să fie parcursă calea o1F1o2F2o3. Nu se pierde nici o informaţie, dar
exactă a procesului părinte, doar că mai departe va executa codul său, iar accesul este mai lent.
procesul părinte – ceea ce este scris după apelarea lui clone.
113. Unix. Crearea proceselor 120. Structura reprezentărilor. Descriptori
Procesele sunt create prin utilizarea funcţiilor din familia exec ale Numele obiectului compus se află într-un amplasament al cărui conţinut
bibliotecii Linux standard: execl, execlp, execle, execv, execve, execvp. este un descriptor. Utilizarea unui descriptor pentru a accesa un obiect
Deşi formatul de apelare este diferit, în ultimă instanţă execută acelaşi lucru: impune trecerea printr-un program de accesare care va interpreta acest
înlocuiesc codul din procesul curent cu codul, care se află în fişierul indicat. descriptor şi prezintă următoarele avantaje:
Fişierul poate fi un fişier binar executabil Linux, un script al interpretorului
limbajului de comandă, un fişier 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 modificării dinamice a drepturilor de acces.
simplu să administrezi informaţii de volum fix şi cunoscut,
descriptorul constituie un “punct de trecere” impus pentru accesarea 126. DESEMNAREA ŞI LEGAREA FIŞIERELOR ŞI
reperată a obiectului şi, ca rezultat, poate servi la implementarea unor INTRĂRILOR-IEŞIRILOR
controale ale accesării, de măsurare, etc., Vom examina aici modul de desemnare a fişierelor, legarea lor cu
descriptorul asigură un acces indirect la obiectul reperat, ceea ce programele, care le utilizează şi relaţiile lor cu intrările-ieşirile. Nu avem
permite modificarea dinamică a căii de acces (substituirea unui obiect printr- nevoie pentru aceasta să cunoaştem organizarea internă a unui fişier,
un alt obiect) sau deplasarea unui obiect în memorie fără recompilarea interesându-ne doar organizarea lui ca un tot întreg în cazul unui limbaj de
modulului sursă, comandă sau al unui program.
partajarea obiectelor între mai mulţi utilizatori cu drepturi sau
proceduri de accesare diferite poate fi realizată construind tot atâţia 127. Căi de acces la un fişier
descriptori, câţi utilizatori există; aceşti descriptori reperează acelaşi obiect şi Un fişier este desemnat de către utilizatorii externi cu ajutorul
au aceleaşi informaţii 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 căii de acces la un fişier pornind de la unul din numele sale
Vom numi lexică o mulţime de identificatori. Mulţimea obiectelor, externe, sunt numite cataloage sau directorii.
desemnate de identificatorii lexicii la un moment de timp dat, se numeşte În afara numelor interne şi externe, adesea mai este definit un nume, zis
context asociat la această lexică. Starea de execuţie a unui context este starea local sau temporar. Un nume local este definit într-un mediu propriu unui
mulţimii 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 fişier în
specificate regulile de interpretare, care vor fi aplicate identificatorilor din dependenţă de utilizator.
cadrul lexicii. 128. Desemnarea externă a fişierelor. Cataloage. Organizarea
Vom numi mediu mulţimea formată dintr-o lexică şi informaţiile arborescentă
(programe, date, reguli de interpretare) necesare la utilizarea acestei lexici. Un catalog defineşte , un mediu, adică o mulţime de identificatori şi
Aceste informaţii 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 căi de acces. Legarea obiectelor descriptorul fişierului 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 mulţime (care poate fi vidă) de alte
În momentul scrierii programului.’- Un atare program poate fi imediat cataloage şi fişiere; aceste obiecte se numesc incluse în catalog;
executat, dar orice modificare este dificilă şi conţine un risc ridicat de Există un catalog, şi numai unul singur, numit rădăcină, care nu are
eroare. tată. Orice alt catalog are un tată, şi doar unul singur.
La una din fazele de translatare Relaţia de legătură defineşte o arborescenţă de cataloage cu rădăcina în
La o fază de încărcare şi editare a legăturilor- Încărcarea şi editarea catalogul rădăcină.
legăturilor pot fi combinate într-o singură operaţie sau realizate separat.
În timpul execuţiei; legătura este numită în acest caz dinamică. 129. Legarea fişierelor cu fluxurile de intrare-ieşire
Un program schimbă informaţii cu mediul exterior prin intermediul unor
123. Protecţia operaţii de intrare-ieşire. care permit comunicarea cu un fişier sau un
Vom înţelege prin termenul protecţie mulţimea metodelor şi periferic. În momentul elaborării programului nu este încă cunoscut cu care
mecanismelor, care vizează specificarea regulilor de utilizare a obiectelor şi fişier sau periferic se vor produce intrările-ieşirile; adesea este necesar să se
garantează respectarea acestor reguli. utilizeze fişiere sau periferice, care diferă de la o execuţie la altă.
Protecţia este asigurată de o combinaţie de dispozitive fizice şi logice. Un flux de intrare-ieşire este un obiect, care posedă toate caracteristicile
Există legături strânse între desemnarea obiectelor şi protecţia lor. unui periferic de intrare-ieşire (nume, operaţii de acces), dar care nu are o
Trei observaţii, legate de protecţie: existenţă reală
O modalitate simplă de a interzice unui proces orice acces la un obiect La realizarea asocierii este folosită legarea prin înlănţuire. Fiecărui flux i
constă în suprimarea tuturor căilor de acces la acest obiect, altfel spus, de a le se asociază un descriptor. Operaţia de asociere cere ca acest descriptor să
retrage din contextul procesului. conţină un pointer spre descriptorul fişierului sau perifericului, pe care îl
Atunci când operaţiile permise asupra unui obiect sunt specificate prin asociază fluxului.
apartenenţa la o clasă sau un tip, este posibilă verificarea prealabilă execuţiei 130. LEGAREA PROGRAMELOR ŞI DATELOR
În cazul în care verificarea este făcută în momentul execuţiei, o 1. Program interpretat
procedură de acces facilitează implementarea verificării şi reduce riscul unor
erori.
124. Domenii şi drepturi de acces
Regulile de utilizare pot fi exprimate specificând drepturile de
2. Program compilat
acces ale fiecărui obiect activ, adică mulţimea de operaţii pe care
obiectele active sunt autorizate să le execute asupra altor obiecte.
să definim entităţile cărora sunt ataşate drepturile
a posibilităţii evoluţiei dinamice a drepturilor unui proces,
a faptului, că mai multe procese pot avea, în aceleaşi
circumstanţe, acelaşi set de drepturi.
Un domeniu defineşte:
o mulţime de obiecte accesibile sau context,
pentru fiecare dintre aceste obiecte, o mulţime de operaţii
permise (drepturi),
un mecanism, care asigură accesul la aceste obiecte, respectând Compararea acestor două scheme pune în evidenţă diferenţa importantă
între interpretare şi compilare: modificarea unui program interpretat are efect
restricţiile de mai sus.
imediat, în timp ce în cazul compilării suntem nevoiţi să parcurgem toate
etapele, începând cu translatarea.
125. Problemele protecţiei
Prezentăm succint câteva probleme, legate de implementarea protecţiei
în sistemele informatice.
131. Etapele de viaţă a unui program
Protecţie ierarhizată
Subsisteme reciproc suspicioase 1. Program interpretat
2.Program compilat

Compararea acestor două scheme pune în evidenţă diferenţa importantă


între interpretare şi compilare: modificarea unui program interpretat are efect
imediat, în timp ce în cazul compilării suntem nevoiţi să parcurgem toate
etapele, începând cu translatarea.

132. Funcţionarea unui încărcător


Un încărcător este destinat să pună în formă absolută un
program obiect în adrese relative. Această operaţie constă în
înlocuirea tuturor adreselor relative la originea modulului
prin adrese absolute. Pentru aceasta se va efectua un lucru
preliminar în faza de translatare: înregistrărilor modulului
obiect, care conţin o adresă translatabilă, li se va ataşa un
indicator, care va fixa poziţia acestei adrese în interiorul
înregistrării (dacă poziţia nu este specificată în mod implicit).
Adresele translatabile pot să apară:
• sau în câmpul de adresă al instrucţiunii,
• sau în cazul datelor, în ”expresii pentru calcularea adresei”,
destinate a fi utilizate ca relaţii de direcţionare sau să fie
încărcate în registrele de bază.

133. Funcţionarea unui editor de legături


Principiile de funcţionare a unui editor de legături:
El este obligat:
să determine adresa de implantare a acestuia,
să îndeplinească modificările informaţiilor translatabile,
să realizeze legarea referinţelor externe.

134. MECANISME DE GESTIUNE A OBIECTELOR. Segmentarea


Segmentarea poate fi considerată o extensie a adresării cu ajutorul
registrelor de bază, care evită problemele realocării acestor registre, atunci
când este necesară schimbarea segmentului. Un segment este p mulţime de
informaţii considerată ca o unitate logică şi desemnată de un nume;
reprezentarea sa ocupă o mulţime de amplasamente adiacente (contigue). Un
segment poate fi de lungime variabilă. O informaţie este desemnată de un
cuplu care se numeşte adresă segmentată .Este important să se noteze, că
segmentele sunt reciproc independente atât din punct de vedere fizic, cât şi
logic.
pentru utilizator: necesitatea de a se conforma convenţiilor de folosire a
registrelor de bază,
pentru sistemul de operare: necesitatea gestiunii alocării registrelor de
bază, dacă acestea sunt în număr insuficient.

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