Documente Academic
Documente Profesional
Documente Cultură
APEL DE SISTEM
Apelul de sisteme inseamna de fapt apel de Kernel, deci invocarea SO
TIPURI DE MEMORIE
Memorie temporara Cache si RAM
Memorie Permanenta ROM,HDD, CD-ROM, FLASH MEMORY.
MODALITATEA DE FUNCTIONARE A MEMORIEI CACHE
Pentru a se recupera din timpul necesar la memorie se apeleaza la memoria CACHE care retine date
necesare pentru rularea programelor active.
DMA- direct memory acces este un proces prin care un dispozitiv extern preia controlul magistralei,
in locul procesorului. Ideea fundamentala este de a transfera blocuri de date in mod direct intre
memorie si periferice, fara interventia UCP.
PCI perifheral component interconnect. Componentele PCI fac legatura intre dispozitivele hardware
si computer
SCSI small component system interface. Controloarele SCSI sunt folosite in special in sistemele
care au nevoie de performanta si stabilitate ridicata.
USB universal serial bus
IDE integrated drive electronics
IEEE 1934 (firewire) defineste o interfata seriala de viteza inalta care se poate utiliza pentru
conectarea la PC a dispozitivelor periferice.
BIOS basic imput/output system
DIFERENTA DINTRE MODELUL DE FUNCTIONARE PIPELINE SI MODELUL DE
FUNCTIONARE AL UNEI UCP SUPER SCALARE.
In cazul in PIPELINE - UCP are unitati separate pentru extragere, decodare si executare, deci in timp
ce se executa instructiunea n, se decodeaza instructiunea n+1 si se extrage instructiunea n+2. In cazul
modelului super scalar sunt mai multe unitati de executare, deci doua sau mai multe operatii sunt
prelucrate in acelasi timp, decodate si descarcate intr-un buffer de asteptare pana pot fi executate.
SENSOR NODE OPERATING SYSTEM
Este un SO constituit dintr-o retea de senzori. Acesti senzori comunica intre ei si cu o statie de baza,
folosind o conexiune wireless. Acesti senzori reprezinta de fapt mici calculatoare bazate pe o baterie
cu un radio incorporat. Au putere limitata si nu pot functiona pe perioade lungi de timp. Fiecare senzor
este un calculator cu CPU, RAM, ROM. Sistemul de operare trebuie sa fie mic si simplu, deoarece
senzorii au putin RAM si baterii. Un sistem de operare cunoscut este TINY OS.
Curs 2
Ce reprezinta un proces?
Executia unui program se defineste ca o succesiune de procese care se realizeaza sub controlul
sistemului de operare. Procesul reprezinta o secventa de activitati care se executa la un moment dat in
sistemul de calcul si care se caracterizeaza prin:
-
Memoria tampon =>un tampon este o locatie temporara de memorie, care este utilizata in mod
traditional, deoarece instructiunile UCP-ului pur si simplu nu pot referi in mod direct date stocate in
dispozitivele periferice. Astfel, memoria adresabila este utilizata ca stadiu intermediar. In plus, astfel
de tampoane pot fi viabile cand un bloc mare de date este asamblat sau dezasamblat (ca cerinta intr-un
dispozitiv de stocare a datelor), sau cand datele trebuie trimise in alta ordine decat cea in care sunt
produse. Castiful este prezent chiar daca datele tamponate sunt scrise in memoria tampon o singura
data si citite din acesta o singura data.
Caracterizati o conducta.
Shell permite comunicarea intre procese prin conducte (pipes). Conductele sunt canale de date
ce conduc la iesirea unui program catre intrarea altui program, fara crearea unor fisiere intermediare.
asociat acesteia, fisier tratat ca o succesiune de blocuri disc in care se poate scrie sau citi. O astfel de
partitie disc poate contine un sistem logic de fisiere ce consta din: un bloc de boot, superblocul, lista
de inoduri si blocuri de date. Un sistem de fisiere poate fi conectat logic (montat) intr-unul din
nodurile arborelui unui alt sistem de fisiere prin intermediul apelului sistem mount. Demontarea se
face folosind apelul sistem umount.
Ce reprezinta lseek?
Operatia lseek repozitioneaza cursorul de fisier, astfel incat o operatie read/write va lucra
incepand cu aceasta noua pozitie.
Sistemele stratificare ofera o constructie mai clara si o administrare mai facila a sistemului de
operare, cu anumite neajunsuri: definirea diferitelor nivele trebuie realizata cat mai clar inaintea
conceperii efective a sistemului de operare, iar realizarea de apleuri sistem din nivelele superioare
necesita un overhead mare pentru a putea identifica nivelul tinta si nivelul de origine al apelului
sistem.
Masina virtuala face posibila rularea unui alt sistem de operare intr-o fereastra a sistemului de
operare principal, fara a repartitiona hard-disc-ul.
Curs 3:
Definiti procesul.
Un proces este un program secvential in executie, impreuna cu zona sa de date, stiva si
numaratorul de instructiuni (program counter).
Orice proces este executat secvential, iar mai multe processe pot sa ruleze in paralel. De cele
mai multe ori, executia in paralel se realizeaza alocand pe rand procesorul cate unui proces. Desi la un
moment dat se executa un singur proces, in decurs de o secunda de exemplu, pot fi executate portiuni
din mai multe procese. Din aceasta schema rezulta ca un process se poate gasi, la un moment dat, in
una din urmatoarele stari:
- in executie (RUNNING) procesul se gaseste in executie atunci cand procesorul ii
executa instructiunile;
- pregatit pentru executie (READY) este un proces care, desi ar fi gata sa isi continue
executia, este lasat in asteptare din cauza ca un alt proces este in executie in mod voit sau
procesul efectureaza o operatie in afara procesorului, mare consumatoare de timp (cum e
cazul operatiilor de intrare iesire acestea sunt mai lente si intre timp procesorul ar
putea executa parti din alte procese);
- blocat (BLOCKED).
Cum se creaza un proces?
Sunt patru pasi principali care duc la crearea unui proces:
- initializarea sistemului;
- executarea unui sistem de apel pentru crearea unui proces de catre un proces aflat deja in
rulare;
- o cerere de creare proces a utilizatorului;
- initializarea unui set de batch jobs (secventa de comenzi care se executa fara interventie
din afara).
Cum se incheie executia unui proces?
Un proces se poate incheia din cauza unuia din patru motive:
- iesire normala (voluntara);
- iesire pricinuita de eroare (voluntara);
- eroare fatala (involuntara);
- incheiere pricinuita de alt process (involuntar).
Caracterizati ierarhia de procese.
In unele sisteme, cand un proces creaza un altul, procesul parinte contiua sa fie asociet cu cel
copil. Procesul copil poate si el sa creeze unul sau mai multe procese, astfel creandu-se o ierarhie.
Ce reprezinta un thread?
Threadul este cea mai mica unitate de procesare care poate fi programata de un sistem de
operare.
Ce inseamna multithreading?
Termenul multithread se poate referi la faptul ca mai multe threaduri exista in acelasi proces
sau rularea in paralel a mai multor threaduri, echivalentul mai multor procese rulate pe acelasi
calculator.
Modele:
Kernel-level threading threaduri create de utilizator care au corespondenta 1-1 cu entitati
din kernel. Este cea mai simpla implementare de threaduri.
User-level threading (many to one)- toate threadurile de la nivel de aplicatie ajung intr-o
singura entitate de la nivel kernel. Singurul dezavantaj major este ca nu poate beneficia de accelerare
hardware pe procesoarele multithread sau pe sistemele multi-procesor.
Un program paralel const din mai multe procese independente ce coopereaz pentru a rezolva o
problem. Cooperarea se poate realiza prin intermediul unei memorii partajate.Sistemul de operare
trebuie s ofere cel putin un mecanism de baz care s permit comunicarea i sincronizarea n cadrul
unui set de procese.
n sistemele multiprogramate, aceste operaii de comunicaie se pot realiza prin intermediul
fiierelor.Un proces poate oferi unui proces informaii scriind date ntr-un fiier astfel nct cellalt
proces s poat deschide fiierul i s poat citi informaiile respective. n general,comunicarea i
sincronizarea prin intermediul fiierelor partajate este greoaie, iar procesele trebuie s fie capabile s
se sincronizeze pe baza unui mecanism mai simplu dect acela de a partaja accesul la un fiier.
Sistemele de tip timesharing stimuleaz nevoia unei metode mai facile de comunicare i sincronizare
ntre procese. n astfel de sisteme, un singur utilizator poate s creeeze dou procese, rezultatul
primului proces putnd fi rutat spre intrarea celui de-al doilea proces. Conductele (pipe) UNIX
implementeaz o astfel de facilitate. Programele bazate pe conlucrare trebuie s fie construite astfel
nct procesele s poat accesa informaiile comune, totui far a interfera unul cu altul pe parcursul
unor poriuni critice ale execuiei lor. Aceast condiie introduce o problem de sincronizare numit
problema seciunii critice. O a doua problem este existena unui punct de blocare ( deadlock) n
cadrul proceselor cooperante. Acest lucru nseamna c dou sau mai multe procese pot fi n situia n
care fiecare deine resursele necesare celuilalt proces i nici unul nu poate continua executia fr ca s
i cedeze celuilalt resursele. (Dodescu, 2003)
Dati un exemplu de situatie in care doua procese se gasesc n conditii de competitie.
Considerm existenta a doua procese A i B a cror scop este tiprirea unui fiier la imprimant. Cnd
un proces vrea s tipareasc un fiier, introduce numele fiierului ntr-un catalog de tiprire special
(spooler directory). Alt proces, care se ocup de tiprirea documentelor (printer daemon), verific
periodic dac exist fiiere de tiprit i, dac exist, le tiparete i apoi terge numele lor din catalog.
Acest catalog de tiprire are un numr foarte mare de locaii, identificate prin 0,1,2... fiecare fiind
capabil s memoreze numele unui fiier n fiecare lot. De asemenea exist dou variabile partajate,
out, care indic urmtorul fiier care trebuie tiparit i in, care indic urmtorul loc liber n
catalog.Aceste doua variabile pot fi pstrate foarte bine ntr-un fiier de doua cuvinte, disponibil
tuturor proceselor.
n figur se constat c loturile de la 0 pana la 3 sunt libere (fiierele au fost deja tiprite) i loturile de
la 4 pna la 6 sunt ncarcate (cu numele fiierelor care ateapt s fie tiprite).
Situaia care o discutm este urmtoarea: mai mult sau mai puin simultan, procesele A i B solicit s
nscrie un fiier pentru tiprire. Poate aprea situaia n care procesul A citete variabila in i salveaz
valoarea 7, ntr-o variabil local numit urmtorul_loc_liber. Chiar atunci apare o ntrerupere de ceas
i UCP decide c procesul A s-a executat suficient, aa c va comuta la procesul B. Procesul B citete
i el in i primete tot un 7. i el o va salva n variabila sa local urmtorul_loc_liber. n acest moment
ambele procese consider c urmtorul loc disponibil este 7.
Procesul B continu sa se execute. Salveaz numele fiierului lui n locul cu numrul 7 i actualizeaz
in la valoarea 8.Apoi, se execut mai departe. La un moment dat, procesul A i va relua execuia.
Verific urmtorul_loc_liber, gsete valoarea 7 acolo i scrie numele fiierului lui n locul cu numrul
7, tergnd numele pe care procesul B tocmai l scrisese acolo.Apoi calculeaza urmatotul_loc_liber +1,
adica 8 i seteaz in la valoarea 8. Catalogul de tiprire are acum o stare intern consistent, aa c
procesul care se ocup de imprimare nu va observa nimic n neregul, dar procesul B nu va primi
niciodata un rezultat. Utilizatorul B va atepta lnga imprimant ani de zile, tnjind dup rezultatul
care nu va veni niciodata. Situaii ca acestea, n care dou sau mai multe procese citesc sau scriu date
partajate i rezultatul final depinde de care proces ruleaz i cnd anume sunt numite condiii de cursa
(race conditions). (Tanembaum, 2001)
Doua procese sunt mutual exclusive.Explicati.
Pentru a preveni efectele generate de condiiile de competiie este necesar ca procesele s fie mutual
exclusive.Dac un proces ruleaz i partajeaz resurse cu alt proces, acesta din urm nu se poate lansa
n execuie pn la finalizarea execuiei primului.Zona n care dou procese acceseaz memoria
partajat de ambele se numete seciune critic.
Dac reuim ca dou procese s nu se afle n seciunea critic simultan putem evita competiian sine.
Condiiile obinerii exclusivitii mutuale sunt:
i. Dou procese nu se pot afla simultan n zona critic.
ii. Nu ne raportm la numrul i viteza de prelucrare a procesoarelor.
iii. Niciun proces, care ruleaz n afara seciunii sale critice nu poate bloca un alt proces.
iv. Un proces nu poate fi blocat la infinit la intrarea sa n seciunea critic.
Exemplu:
Situaia pe care o discutm este urmtoarea:
ltan tiprirea unui fiier.Procesul A citete variabila In i o
stocheza 7.Procesorul blocheaz execuia Procesului A i red controlul Procesului B. Procesul B se
execut i plaseaz numele fiierului de tiprit n 7 i seteaza In=8.
blocheaz Procesul B i transfer controlul Procesului A.
Pentru a mpiedica dou procese s intre n acelai timp n regiunile lor critice, soluia este prezentat
mai jos:
Ceea ce este prezentat mai sus este o subrutin de patru instruciuni, ntr-un limbaj de asamblare fictiv
(dar tipic). Prima instruciune copiaz vechea valoare a lui Lock n registru i seteaya apoi Lock la 1.
Apoi, vechea valoare este comparat cu 0. Dac nu este 0, nseamn c LOCK esra deja setat, astfel c
programul reia codul de la nceput i testeaz din nou condiia. Mai devreme sau mai trziu va deveni
0 (atunci cnd procesorul se afla n regiunea lui critic va termina cu aceasta), iar subrutina se va
termina, cu LOCK setat. Eliberarea lui LOCK este simpl. Programul salveaz pur i simplu un 0 n
lock. Nu sunt necesare instruciuni speciale.
O soluie la problema regiunii critiice este clar. nainte de a intra n regiune critic proprie, un proces
apeleaz enter_region, care execut ateptare ocupat pn cnd LOCK este liber: apoi, preia
LOCKuli se intoarce din apelul enter?region. Dup regiunea critic, procesul apeleaz leave_region,
care salveaz un 0 n zvor. La fel ca n cazul tuturor soluiilor bazate pe regiuni critice, procesele
trebuie s apeleze enter_region i leave_region la momentele de timp corecte pentru ca mecanismul s
funcioneze. Dac un proces trieaz, excluderea mutual va eua.
(Tanembaum, 2001)
De ce avem nevoie de metoda sleep/wakeup?
Datorit faptului c soluia lui Peterson nu poate gestiona problema inversrii prioritii s-a propus
metoda Sleep and Wakeup.S presupunem c dou procese partajeaz un buffer de dimensiune fix.
Un proces adaug date, cellalt extrage date.Aceast problem se mai numete problema productorconsumator, unde p. care adaug date n buffer este productor, iar cel care extrage date este
consumator.Dac se ntmpl ca procesorul s ntrerup execuia procesului consumatorului i din
punct de vedere logic consumatorul se afl nc n starea wakeup, productorul va genera un semnal de
wakeup, care se va pierde datorit faptului ca nu exist o structur care s rein cte apeluri wakeup
au fost realizate.
Tratati problema producator consumator utilizand metoda sleep/wakeup.
Metoda cu apeluri sleep/wake-up este o metod simplu de implementat unde folosim apelul de sistem
sleep care are ca efect blocarea apelantului, adic suspendarea execuiei acestuia i apelul de sistem
wake/up pentru a trezi un proces.
Funcionarea acestei metode este urmtoarea: Fiecare dintre procese va verifica dac este cazul s l
trezeasc pe cellalt i dac da, l va trezi. Condiia de curs apare pentru c accesul la condiia
Memoria tampon plin? este nerestricionat. Poate aprea urmtoarea situaie- zona tampon este goal
i consumatorul tocmai a verificat condiia Memoria tampon goal? pentru a verifica dac este DA. n
acest moment planificatorul de procese decide s suspende execuia consumatorului i ncepe s
execute productorul.
Productorul introduce un element n memorie i observ c acum condiia Memoria tampon plin?
este acum DA. Deoarece condiia tocmai a fost NU i deci consumatorul este suspendat, productorul
apeleaz wakeup pentru a trezi consumatorul. Consumatorul nu este i logic suspendat i semnalul de
trezire se va pierde i astfel data urmtoare cnd consumatorul se va executa acesta va verifica condiia
Memoria tampon goal? Citit anterior, va gsi DA i i va suspenda execuia. Dup ctva timp
productorul i va suspenda i el execuia. Ambele procese vor fi suspendate. (stst.elia.pub.ro)
Prezentati cazul in care metoda sleep/wakeup devine ineficienta pentru rezolvarea problemei
producator consumator.
Problema acestei metode este pierderea suspendrii consumatorului. Din pcate, consumatorul nu este
i logic suspendat, astfel c semnalul de trezire este pierdut. Data urmtoare cnd se va executa
consumatorul, acesta va verifica valoarea lui count citit anterior, va gsi 0 i i va suspenda execuia.
Dup ctva timp, productorul va umple zona tampon i i va suspenda i el execuia. Ambele procese
vor fi suspendate pentru totdeauna.
Soluie : memorarea bitului de trezire, dac se trimite unui proces treaz. Ulterior, dac acesta vrea s se
autoblocheze, nu o va face, dar va terge bitul de memorare a trezirii. Fiecare proces care poate trezi
un proces nc treaz va trebui s i aib bitul memorat, mpreuna cu adresa procesului la care se
refer.
Curs 5:
Motivatia planificarii proceselor.
n cazul folosirii multiprogramrii pe un calculator, acesta conine frecvent mai multe procese care
concureaz simultan pt controlul UCP. Aceast situatie apare ori de cate ori doua sau mai multe
procese se afl simultan n starea gata de execuie.Dac este disponibil o singura UCP, trebuie facuta
o alegere cu privire la procesul care va rula n continuare. Componenta sistemului de operare care face
aceast alegere se numete planificator(scheduler) i algoritmul folosit de aceasta se numeste algoritm
de planificare.
Definitia algoritmului de planificare preemtiv.
Un algoritm de planificare preemtiv alege un proces i l las s se execute o durat maxim fixat. n
caz c procesul este nc n execuie la sfritul intervalului de timp, este suspendat i planificatorul
alege alt proces (daca exist un proces disponibil). Efectuarea unei planificri preemtive necesit o
intrerupere de ceas la sfritul intervalului menionat pentru a muta controlul asupra UCP inapoi la
planificator.Dac nu exist un ceas, singura opiune este planificarea non-preemtiv.
Definitia algoritmului de planificare nonpreemtiv.
Un algoritm nonpreemtiv alege un proces pentru execuie i apoi l las s ruleze pn se blocheaz
(fie la o operaie I/E sau n ateptarea altui proces) sau pn cnd procesul renunt voluntar la UCP.
Chiar daca ruleaz ore intregi, procesul nu va fi suspendat forat. De fapt, nu se ia nicio decizie in
timpul ntreruperilor de ceas. Dupa ce s-a terminat procesarea ntreruperii, procesul care rula nainte de
ntrerupere este executat n continuare.
Definitia compute-bound process.
Anumite procese petrec majoritatea timpului efectund calcule, acestea se numesc procese limitate de
calcule (compute-bound). Ele au n mod obinuit rafale de utilizare a UCP mai lungi si ca atare
perioade de ateptare a operaiilor I/E rare.
Definitia I/O-bound process.
Exist de asemenea anumite procese care ii petrec majoritatea timpului ateptnd completarea
operaiilor de I/E, acestea se numesc procese limitate de I/E (I/O- bound). Procesele limitate de I/E au
rafale UCP scurte i perioade( frecvente) de asteptare a operaiilor de I/E. S observam c factorul
cheie este lungimea rafalei UCP i nu lungimea rafalei I/E. Procesele limitate de I/E sunt de acest tip
pentru c nu efectueaz multe calcule ntre cererile de I/E, pentru c nu au cereri I/E deosebit de lungi.
Care sunt obiectivele generale ale unui algoritm de planificare.
1. Corectitudine: fiecare proces primete o capacitate egal de UCP.
respectivul proces i se atribuie altui proces. Dac procesul s-a blocat sau s-a terminat nainte de
terminarea cuantei de timp, comutarea UCP se face n momentul blocrii procesului.
2. Planificarea bazat pe prioriti. Fiecare process are o prioritate i se permite rularea procesului gata
de execuie cu cea mai mare prioritate. Pentru a prentmpina cazurile n care procesele cu prioritate
mare ruleaz la infinit, planificatorul poate decrete prioritatea procesului curent la fiecare semnal de
ceas (adic la fiecare ntrerupere de ceas). Daca aceast aciune determin prioritatea respectivului
proces s scad sub a urmatorului din ierarhie, acest ultim proces are posibilitatea s se execute.
3. Cozi multiple. Poiectanii creeaz clase de prioritate. Procesele din cea mai mare clas erau rulate
pentru o cuant de timp. Procesele din urmatorarea clas se rulau pe trei cuante de timp, urmatoarele
pe patru cuante de timp .a.m.d. Cnd un proces folosea n ntregime cuanta alocat, era mutat n jos o
clasa.
4. Shortest process next. Procesele interactive urmeaz de obicei modelul n care se asteapt o
comand, se execut comanda, se asteapt comanda, se execut comanda .a.m.d. Dac privim
execuia fiecrei comenzi ca pe o lucrare separat, atunci putem minimiza ntreg timpul de rspuns
executnd n continuare cea mai scurt lucrare. Singura problem const n a realiza care din procesele
executabile este cel mai scurt. O abordare const n a face estimri bazate pe comportamentul anterior
i a rula procesul cu cel mai mic timp de execuie estimate. Tehnica prin care se estimeaz urmtoarea
valoare ntr o serie prin considerarea sumei ponderate a ntregii valori curente msurate i a valorii
estimate anterioare se numete mbtrnire (aging).
5. Planificarea garantat. O abordare complet diferit la problema planificrii const n a face
promisiuni reale utilizatorilor referitoare la performan i de a le respecta. Dac exist n utilizatori
conectai n sistem n timp ce noi lucrm, vom primi aproximativ 1/n din puterea de calcul; n mod
similar, pe un sistem cu un singur utilizator pe care ruleaz n procese, toate fiind egale, fiecare ar
trebui s beneficieze de 1/n din ciclurile procesorului. Pentru a respecta aceast promisiune, sistemul
trebuie s in evidena capacitii de calcul consumate de fiecare proces de la crearea sa. Se
calculeaz apoi capacitatea la care are dreptul fiecare, mai precis intervalul de la creare este mpartit la
n.
6. Planificarea n sistem de loterie. Ideea fundamental este de a atribui proceselor bilete de loterie
pentru diferite resurse ale sistemului, cum ar fi timpul alocat pe UCP. Atunci cnd trebuie luat o
decizie de planificare se alege un bilet de loterie la ntamplare i procesul care deine biletul primete
resursa. Aplicat planificrii proceselor pe UCP, acest sistem poate desfura o loterie de 50 de ori pe
secunda, fiecare ctigtor primind ca premiu 20 msec de timp alocat pe UCP.
7. Planificare cu pri egale(Fair-Share Scheduling). Unele sisteme iau n considerare i posesorul
procesului inainte de planificare. n acest model, fiecare utilizator are alocat o anumit proporie a
capacitii UCP, iar planificatorul alege procesele astfel nct s se respecte aceast regula. Astfel dac
2 utilizatori au primit promisiunea c li se va aloca aproximativ 50 % din capacitatea UCP, fiecare va
primi exact atat , indiferent de cte procese are.
Algoritmi de planificare utilizati pentru sistemele n timp real.
Algoritmii de planificare pentru sistemele de timp real pot fi statici sau dinamici. Primii iau deciziile
de planificare nainte de inceperea rulrii sistemului. Cei din urm iau deciziile in timpul rulrii, adica
chiar n momentul apariiei evenimentelor externe. Planificarea statistic funcioneaz numai dac sunt
disponibile informaii perfecte apriori despre operaiile ce trebuie efectuate i termenele care trebuie
respectate. Algoritmii de planificare dinamic nu au aceste restricii.
(Tanembaum, 2001)
Unul dintre algoritmii de planificare n timp real foarte utilizai este algoritmul monotonic. Acesta
acord prioriti proceselor proportional cu frecvena de apariie a evenimentului ce declaneaz
procesul respectiv. De exemplu, un proces ce este declanat de un eveniment ce apare cu o perioad de
25 ms va primi prioritatea 40, n timp ce un proces ce este declanat cu o perioada de 125 ms va primi
prioritatea 8.
Un al doilea algoritm este cel al timpului de rezerva minim. De exemplu, dac un proces are nevoie
de 100 ms pentru a fi rulat, iar el trebuie terminat n cel mult 200 ms, atunci sistemul calculeaz timpul
de rezerv pe care l are la dispoziie pentru acest proces: 200-100=100 ms. Planificatorul menine o
lista a proceselor ordonat dupa acest timp de rezerv si atribuie UCP procesului cu timpul de rezerv
cel mai mic.
Alt algoritm de planificare n timp real este algoritmul termenului limita cel mai scurt . Atunci cnd
apare un eveniment extern, procesul care trateaz acel eveniment va fi adaugat la o lista cu procese
gata de execuie. Aceast lista este meninut sortat dup termenul limit n care trebuie tratat
evenimentul. Procesul cu termenul limita cel mai apropiat va fi primul rulat.
(Dodescu, 2003)
Planificarea user-thread-urilor.
n cazul n care mai multe procese au fiecare fire de execuie multiple, exist doua nivele de
paralelism: procese si fire. Planificarea n astfel de sisteme este substanial diferit, depinznd de tipul
de implementare suportat (n spaiul user, n spaiul kernel, sau ambele).
n cazul firelor de execuie implementate n spaiul utilizator, nucleul nu este contient de existena
firelor i opereaz n modul obinuit alegnd un proces , pe care l numim A si d procesului controlul
pe parcursul cuantei sale de timp. Planificatorul de fire de execuie din interiorul procesului A decide
ce fir sa ruleze, s spunem A1. Deoarece nu exist vreo ntrerupere de ceas pentru a multiprograma
firele, acest fir poate continua s se execute ct timp doreste. Dac foloseste toata cuanta procesului,
nucleul va selecta un alt proces spre execuie.
Atunci cnd procesul A ruleaz din nou, firul A1 va rencepe s se execute. Firul ca continua s
consume timpul procesului A pna cnd termin. n orice caz, comportamentul su antisocial nu va
afecta celelalte procese. Acestea vor obine cuanta considerat potrivit de planificator, indiferent de
ce se intampl n interiorul procesului A.
Considernd cazul n care firele de execuie ale lui A au relative puin de procesat ntr-o rafal de
utilizare a UCP, s spunem 5 msec de lucru ntr-o cuant de 50 msec. n consecin, fiecare ruleaz o
perioad scurt de timp, apoi cedeaz UCP planificatorului de fire. Aceast comportare poate duce la
secvena A1, A2, A3, A1, A2, A3 ,A1, A2, A3, A1, nainte ca nucleul s comute la procesul B.
Aceast situaie este ilustrat n figura urmatoare:
Algoritmul de planificare folosit de executive poate fi oricare din cele descrise mai sus.n practic,
cele mai des folosite sunt round i planificarea bazat pe prioriti. Singura constrngere este lipsa
unui ceas pentru a ntrerupe un fir de execuie care a rulat prea mult.
Planificarea kernel-thread-urilor.
n cazul firelor implementate n nucleu, nucleul alege un anumit fir spre execuie. Nu este nevoie ca
nucleul s in seam de procesul cruia i aparine firul, dar poate face acest lucru dac dorete. Firul
primeste o cuanta de timp i este suspendat forat dac depaete aceast cuant. Cu o cuant de 50
msec, dar cu fire de execuie care se blocheaz dupa 5 msec, ordinea firelor pentru o perioad de 30
msec ar putea fi A1, B1, A2, B2, A3, B3, ceea ce nu era posibil cu aceeasi parametrii n cazul firelor
implementate n spaiul utilizator. Aceast situaie este ilustrat parial n urmatoarea figur:
Deoarece nucleul tie c a comuta de la un fir al procesului A la un fir al procesului B este mai
costisitor dect s ruleze un al doilea fir al lui A ( datorit necesitii schimbrii harii de memorie i
stricrii memoriei ascunse), poate lua aceast informaie n considerare atunci cnd ia o decizie. De
exemplu, dac lum dou fire care sunt la fel de importante , dintre care unul aparine procesului al
crui fir tocmai s-a blocat i cellalt aparinnd unui alt proces, preferinele se ndreapt spre primul fir
de execuie.
Avantaje si dezavantaje ale planificrii user-thread-urilor comparativ cu kernel-thread-urilor
Performana reprezint o diferen major ntre firele din spaiul utilizator i cele din
nucleu.Efectuarea unei comutri de fire n spaiul utilizator este format din cteva instruciuni.n
cazul firelor din nucleu, este necesar o comutare de context complet, schimbarea harii de memorie,
invalidarea memoriei ascunse, operaia fiind mai lent cu cateva ordine de mrime. Pe de alt parte, n
cazul firelor implementate n nucleu, blocarea unui fir la o operaie I/E nu cauzeaz blocarea
procesului cum se ntampl n cazul implementrii n spaiul utilizator.
Un alt factor important este acela c firele din spaiul utilizator pot angaja un planificator specific
aplicaiei. Dac am considera spre exemplu cazul serverului de web, presupunem c un fir de lucru
tocmai s-a blocat i firul de dispecerizare i 2 fire de lucru sunt gata de execuie.Executivul tiind ce
poate face fiecare thread, poate s aleag cu uurin firul de dispecerizare, pentru c acesta s
porneasc execuia unui alt fir de execuie.Aceast strategie maximizeaz paralelismul ntr-un mediu
n care firele de lucru se blocheaz frecvent n memorii de I/E. n cazul firelor implementate n nucleu,
nucleul nu ar putea tii niciodata ce a facut fiecare fir (dei acestea ar putea avea prioritai diferite):
CURS 6
Un set de procese este blocat daca fiecare process din setul respective asteapta un eveniment care
poate fi cauzat doar de un alt process din acest set. Niciunul din procese nu poate rula, elibera resurse,
sau sa treaca in starea awake.
O resursa care poate fi luata de la procesul care o detine fara efecte nedorite. Memoria este un exemplu
de resursa preemtibila.
Este o resursa care nu poate fi luata de la detinatorul ei fara ca executia acestuia sa esueze. Daca un
process a inceput sa inscriptioneze un cd-rom, de exemplu, si deodata I se ia accesul la unitatea de
inscriptionare si se da altui process, va rezulta un cd cu informative amestecata, fara sens. In general
blocajele sunt non-preemtibile.
-excluziune mutual o resursa este fie ocupata de un process, fie este libera
-de detinere-asteptare a unei resurse : un process ce detine resurse poate solicita resurse noi
-nonpreemtivitatii: resursele ocupate nu pot fi retrase fortat unui process.
-de asteptare circular: lantul circular de asteptare este format din cel putin 2 procese, fiecare resursa
solicitata este detinuta de urmatorul process din lantul circular.
Cu ajutorul grafurilor orientate. Grafurile au doua tipuri de noduri : procesele, reprezentate prin
cercuri, si resursele, reprezentate prin patrate. Un arc de la un nod tip resursa catre un nod de tip
process arata ca acea resursa a fost ceruta, accesul la ea a fost acordat si ea este in present detinuta de
procesul respectiv.
Se bazeaza pe prezumtia ca nu exista blocaje. Prezumtia este rezonabila daca blocajele apar foarte rar
sau costul prevenirii blocajelor este mare.Unix si Windows utilizeaza aceasta abordare. Este un
compromise intre comoditate si corectitudine.
Cand se foloseste tehnica aceasta , sistemul nu incearca sa previna aparitia blocajelor. In schimb, le
lasa sa apara, incearca sa detecteze cand ele se intampla si apoi sa ia masuri pt recuperare. Poate fi
dentificat un ciclu care denota aparitia unui blocaj. In acest caz, se trece larezolvarea blocajelor :
1.prin preemtiune. Eliberarea unei resurse allocate unui alt process; metoda dependent de natura
resursei; 2. Prin rollback. Marcarea punctelor de executie ale uni process, salvarea starii unui process
si utilizarea ei; restartarea procesului din punctual de executie marcat daca se identifica blocaj. 3.
Oprirea proceselor. Sea mai simpla si eficienta metoda, pp. oprirea proceselor a caror executie poate fi
rulata de la inceput de exemplu nu se opreste un process de actualizare a unei baze de date.
O stare este numita sigura-safe- daca sistemul nu se afla in interblocare in acel moment si exista o
ordine de planificare in care fiecare process poate rula pana la terminare, chiar daca procesele arc ere
deodata numarul lor maxim de resurse.
O stare nesigura nu este o stare in care sistemul se afla in interblocare. Dintr-o astefel de stare nu se
poate garanta faptul ca toate procesele se vor termina, pe cand la cea sigur avem aceasta garantie.
Un algoritm de planificare care poate evita blocajele este o extensie a lgoritmului de detectare a
blocajelor. Algoritmul este modelat dupa felul in care un bancher dintr-un oras mic gestioneaza un
grup de client carora le-a deschis linii de credit. Acesta verifica daca acceptrea unei cereri va duce
la o stare nesigura.Daca da, cererea este respinsa. Daca cererea duce la o stare sigura, ea este
indeplinita. Algoritmul ia in considereare fiecare cerere pe masura aparitiei ei si se uita daca
acceptarea va duce la o stare sigura. Pentru a verifica asta, verifica daca are suficiente resurse
pentru a satisface cativ client. IN caz ca are, se presupune ca aceste imprumuturi vor fi returnate si
in continuare va fi verificat clientul cel mai apropiat de limita si asa mai departe. Daca toate
imprumuturile pot fi retunate, starea este sigura si cererea initiate va fi acceptata.
Cauta pe rand, un R, ale carui nevoi de resurse sunt mai mici sau egale cu A. Daca nu exista niciun
astfel de rand, sistemul se va bloca in cele din durma deoarece niciun process nu va putea relua pana la
terminare. Presupunem ca procesul ales cere toate resursele de care are nevoie si se termina.
Marcheaza acest proces ca fiind terminat si adauga toate resursele in vectorul A. Repeta acesti pasi fie
pana cand toate procesele sunt marcate ca fiind terminate, in acest caz starea initiala este sigura, fie
pana cand aparet un blocaj, caz in care starea initiala este nesigura. Acest algoritm este foarte bine
reliefat in teorie, dar practice este nefolositor deoarece rareori procesle stiu in avans care vor fi nevoile
lor maxime de resurse, iar numarul de procese variaz pe masura ce apar sau dispar utilizatori.
Blocajele se previn cu ajutorula patru conditii. Daca ne asiguram ca cel putin una dintre ele nu va fi
niciodata satisfacuta, atunci este imposibil sa apara blocaje.
1.Combaterea contidiei de excludere mutuala. Daca nicio resursa nu ar fi alocata exclusive pt un
rproces, nu am avea niciodata blocaje. Totusi, daca am permite ca doua procese sa scrie in acelasi timp
s-ar crea haos. Prin introducere in coasa de asteptare(spooling) mai multe rpocese pot genera simultan
date de iesire. Insa, nu toate dispozitivele pot face spooling. Procesele care gestioneaza o actiune, sunt
programate sa actioneze doar dup ace sunt disponibile doate datele de iesire. In acest caz avem doua
procese care au furnizat fiecare o parte din datele de iesire, dar nu toate si de acees nu se poate
continua. Niciunul dintre procese nu se va termina vreodata, asadar avem un blocaj. Totusi frecvent, se
evita alocarea unei resurse cand aceasta nu este absolute necesara si se incearca asigurarea ca vor
exista ca mai putine procese care ar putea cere resursa.
2. Combaterea conditiei de detinere si asteptare. Daca am putea impiedica procesele care detin resurse
sa mai astepte prolucrarea altor resurse, am pute alumina blocajele. Un mod de a face asta este sa le
cerem tuturor proceseloe sa ceara toate resursele inainte de inceperea executiei. Daca totul este
disponbil, procesului ii va fi alocat tot ceea ce ii trebuie si va putea rula pana se va termina. Daca una
sau mai multe resurse sunt ocupate, nu se va aloca nimic si procesul doar va astepta. Un alt mode de
combatere a cond de detinere si asteptare este ca fiecarui process care doreste o resursa sa I s e ceara
sa elibereze temporar toate resursele pe care le detine in present. Apoi va incerca sa ia dintr-o data tot
ce are nevoie.
3.Combaterea lipsei de preeemptie este destul de rar folosita . Daca uni process i-a fost alocata
imprimanta de ex, si se afla in mijlocul tiparirii datelor de iesire, faptul ca I s-ar lua fortat imprimanta
deoarece un trasator cerut nu este disponibil, ar fi derutant sau chiar imposibil.
4. Combaterea conditiei de asteptare circular. Asteptarea circular poate fi eliminate in mai multe
fe;luri. Un mod ar fi sa impunem regula ca orice process are dreptul la o singura resursa la un moment
dat. Daca are nevoie de o a doua, trebuie sa o elibereze pe prima. Pt un proces care are nevoie sa
scoata la imprimanta un fisier urias pe o banda magnetic, aceasta restrictive este inacceptabila. Un at
mod ar fi realizarea unei numerotari globale a resurselor. Regula este urmatoarea : procesele pot cere
resurse oricand vor, dar toate cererile rebuiesc facute in ordinea numerelor. Un process poate cere mai
intai o imprimanta si apoi o banda magnetic, dar nu va putea cere mai intai un trasator si apoi o
imprimanta.Cu aceasta regula, nu pot exista niciodata cilcuri. Desi ordonarea numerica a resurselor
elimiba problema blocajelor, ar putea fi indisponibila alegerea unei ordini in care sa satisfaca pe toata
lumea. Cand resursele include intrari in tabela de procese, spatial de pe disc alocat pt spooling,
intregistrari detinute din baza de date si alte surse, atat ele cat si diverse folosiri pot fi atat de
numeroase a.i. nicio abordare nu mai este posibila.
Desi atat evitarea cat si prevenirea blocajelor nu sunt foarte promitatoare, in multe sisteme de date, o
operatie care apare frecvent este blocarea ccesului ca cateva inregistrari si avoi vizualizarea lor. In
momentul in care exista mai multe procese care ruleaza in acelasi timp exista un real risc de aparitie a
interblocarii. Abordarea folosita este denumita blocarea in doua faze. Aici, procesul incearca mai intai
sa blocheze accesul pe rand la toate inregistrarile de care are nevoie. Dca reusese, incepe faza a doua
in care realizeza actualizarile si apoi blocheaza accesul. In rima faza nu este realizata nicio
modificcare. Daca in prima faza este nevoie de o inregistrare care este dj blocata de altcineva,
procesul deblocheaza toate inregistrarile si reia aceasta etapa. Intr-un anumit sens aceasta abordare
este similara cu cereaza in avans a tuturor resurselor necesar, sau cel putin inainte de a se realize ceva
ireversibil. In ultimele versiuni ale blocarii in doaua faze nu are loc eliberarea si reluarea in cazul in
care prima faza este intalnita cu o resursa dj blocata. In aceste versiuni poate aparea un blocaj.
Algoritmul functioneaza doar in acele situatii in care programatorul are lucrurile aranjate foarte atent
astfel incat programul sa poata fi oprit in orice punct in timpul unei faze si reluat. Multe aplicatii nu
pot fi structurate in acest fel.
Intr-un system dynamic, au tot timpul loc cereri de resurse. Este necesara o politica pt a stabili cine sa
ia o anumita resursa sic and. Aceasta politica, dei pare rezonabila, poate duce sa ramanerea in asteptare
a unor procee care nu vor fi niciodata luate in considerere, desi ele nu se afla in blocaj. Ca exemplu ,
sa luam alocarea imprimantei. Sa ne imaginam sa un system foloseste un anumit tip de algoritm pt a
se asigura ca alocarea imprmantei nu duce la interblocare. Sa presupunem ca acum exista cateva
procese cre o vor toate deosata. Care o va primii? Un posibil algoritm de alocare este ca ea sa fie data
asta procesului cu fisierul cel mai mic de tiparit . Aceasta abordare maximizeaza numarul clientilor
fericiti. Daca un system aglomerat are un fiesier urias de tiparit, de fiecare data cand imprimanta este
libera, se va uita in jur-sistemul- si va allege procesul cu fisierul cel mai mic. Dca nu exista un flux
constant de procese cu fisiere mici, imprimanta nu-I va fi alocata niciodata procesului cu fisierul
uriam. Pur si simplu acesta va muri de foame(amanat la nesfarsit, chair daca nu e blocat). Infometarea
poate fi evitata prin folosirea unor politici de locare a resurselor de tip primul sosit primul servit. In
aceasta abordare este servit procesul care a asteptat cel mai mult. In timp, fiecare process va devein in
cele din urma cel mai vechi si astfel isi va primi resursa de care are nevoie.
CURS 7
Alocarea spaiului din memoria interna se realizeazn funcie de disponibilitatea memoriein acel moment, fapt care nu
permite cunoaterea adreselor reale ocupate de program la momentul execuiei (numite i adrese fizice) n etapele
scrierii i translatrii programelor a cror adrese de memorie, sunt simbolice (numiteadrese
logice). Translatarea adreselor logice n adrese fizice se realizeazprintr-o funcie de translatare care
precede execuia instruciunii respective.Activitatea de gestiune a memoriei are la baz trei algoritmi
:1) algoritmul detransfer care determin cnd un bloc trebuie transferat din memoria externn memoria internnaintea execuiei sau n timpul execuiei;2) algoritmul de plasarecare determin ce zonnealocat din memoria
intern este folosit pentru plasarea blocului ncrcat din memoria extern;3) algoritmul dereamplasarecare
determin careblocuri i la ce moment trebuie rencrcate n memoria intern.
ocupata sau libera, se retine adresa de inceput a zonei si adresa de sfarsit a zonei si un pointer catre
elementele vecine. Lista de obicei este ordonata dupa adrese astfel incat atunci cand trebuie
modificata aceasta sa se faca usor : atunci cand se dezaloca memorie dintr-o zona elementele
corespunzatoare zonelor vecine libere impreuna cu elmentul respectiv se combina formand un nou
element cu adresa de inceput a primului si adresa de final a ultimului si marcat ca liber.
Pentru a aduce un proces din memorie trebuie cautata o zona de memorie
adecvata, pentru aceasta exista mai multi algoritmi cum ar fi first fit (care alege prima zona suficient
de mare pentru a tine procesul respectiv, dupa care la urmatorul process cautarea se face din nou de la
inceput), next fit (alege prima zona suficient de mare, dupa care la urmatorul proces cautarea se face
incepand cu ultima zona unde s-a ajuns), best-fit (se cauta prin toata lista pana se gaseste cea mai mica
zona liberacapabila sa acomodeze procesul respectiv), worst fit (se cauta prin toata lista si se alege cea
mai mare zona libera).
Caracterizati memoria virtuala.
Memoria virtual reprezint o metod de organizare a memoriei prin intermediul creia
programatorul "vede" un spaiu virtual de adresare foarte mare care este mapat n memoria
fizic disponibil, fr ca programatorul s "simt aceasta. Aceasta soluie a aparut din nevoia unui
spatiu mare de memorie, pentru programe prea mari pentru a intra in memoria disponibila. Soluia
folosit n mod uzual a fost mprireaprogramului respectiv n buci numite overlay. Overlay 0
ncepea s ruleze primul. Atuncicnd acesta termin, chem un alt overlay. Unele sisteme bazate pe
overlay erau destul de
complexe permind mai multe overlay-uri n memorie, n acelai timp. Overalay-urile erau
inute pe disc i erau schimbate ntre ele n memorie, n mod dinamic, conform cerinelor.
Schimbarea efectiva a overlay-urilor si operaia de mprire a programului n buci este
fcut de sistem, cu ajutorul memoriei virtuale. Ideea de baz a memoriei virtuale este aceea c
mrimea total a programului, a datelor, poate depi mrimea memoriei fizice disponibile pentru
acesta. Programul menine
prile ce sunt folosite n memorie iar restul prilor sunt inute pe disc. De exemplu, un
program de 16 MB poate rula pe un sistem cu 4MB alegnd cu grij care 4MB trebuie s fie
meninui n memorie n orice moment, iar prile de care este nevoie se vor schimba ntre
disc i memorie. Prin mecanismele de memorie virtual se mrete probabilitatea ca informaia ce se
dorete a fi accesat de ctre CPU din spaiul virtual (disc), s se afle n memoria principal,
reducndu-se astfel n mod semnificativ timpul de acces de la 10-15 ms (timp acces discuri), la 50-80
ns (timp acces DRAM-uri) n tehnologiile actuale.
Ce reprezinta TLB ?
OPTIMAL. Fiecare pagin se eticheteaz cu numrul de instruciuni ce se vor executa pn cnd este
referit pagina pentru prima dat. Atunci cnd trebuie eliminat o pagin din memorie, se selecteaz
pagina cu cea mai mare valoare a etichetei. Dei acest algoritm genereaz cea mai mic rat de pagini
invalidate, el nu poate fi implementat, deoarece sistemul de operare nu poate determina cnd urmeaz
s fie referit o pagin. Acest algoritm este utilizat doar pentru studii comparative. De exemplu,
pentru un algoritm care nu este optimal, este util de tiut c are performane cu 12% mai slabe dect
cele optimal.
NRU. Pentru fiecare pagin existent n memorie, intrarea corespunztoare din tabela paginilor
conine doi bii de stare: R i M: bitul R este pus pe 1 ori de cte ori pagina este referit (n citire sau
scriere), bitul M devine 1 atunci cnd pagina este modificat. Aceti biii trebuie actualizai la
fiecare referire a memoriei. Dac un bit devine 1, el rmne pe aceeai valoare pn cnd este resetat
explicit de ctre sistemul de operare. La prima intrarea n execuie a unui proces, biii R i M asociai
paginilor ce aparin procesului sunt pui pe 0 de ctre sistemul de operare. Periodic (ex. la fiecare
ntrerupere de ceas) bitul R este pus pe 0 pentru a putea face distincie ntre paginile care nu au fost
referite recent i cele care au fost referite. n momentul generrii unei ntreruperi de pagin invalid
de operare inspecteaz toate paginile i le mparte n 4 categorii pe baza valorilor biilor R i M. Clasa
0: nereferit, nemodificatClasa 1: nereferit, modificatClasa 2: referit, nemodificatClasa 3:
referit, modificatPagina care va fi eliminat din memorie este selectat aleator din clasa nevid
avnd cel mai mic indice.
FIFO.Acest algoritm asociaz fiecare pagini momentul la care a fost adus n memorie. Cnd se pune
problema nlocuirii unei pagini se selecteaz pagina cea mai veche. Nu mai trebuie memorat momentul
la care o pagin este adus n memorie dac sistemul de operare menine o list nlnuit a paginilor
din memorie, pagina din capul listei fiind cea mai veche, iar cea de la sfritul listei fiind cea mai
nou. Pagina eliminat din memorie va fi pagina din capul listei, iar atunci cnd se aduce n memorie o
pagin ea va fi nserat la sfritul listei.
SECOND CHANCE ALGORITHM.Folosind algoritmul FIFO exist posibilitatea de a elimina din
memoriei o pagin utilizat intens. Eliminarea unei astfel de pagini va conduce doar la creterea ratei
de pagini invalide. Pentru a evita o astfel de problem se poate modifica algoritmi FIFO astfel nct s
se verifice bitul R al celei mai vechi pagini. Dac R este 0 pagina este veche i neutilizat, deci va fi
nlocuit imediat. Dac R este 1, se reseteaz bitul R, pagina este mutat la sfritul listei i procesul
de cutare continu. Aceast variant modificat a algoritmului FIFO este denumit algoritmul celei
de a doua anse. Acest algoritm caut o pagin veche care nu a fost referit n perioada anterioar de
ceas.
LAST RECENTLY USED. Este o aproximare bun a algoritmului optimal i se bazeaz pe
observaia c paginile care au fost utilizate intens n ultimele cteva instruciuni vor fi, probabil,
utilizate intens i n urmtoarele cteva instruciuni. Aceste observaii sugereaz c atunci cnd se
refer o pagin inexistent n memorie se va nlocui pagina care a fost neutilizat cel mai mult timp.
Algoritmul LRU poate fi implementat n 2 moduri: a) cu ajutorul unei liste nlnuite a tuturor
paginilor din memorie. n capul listei sunt plasate pagini referite recent, iar la sfritul listei se gsesc
pagini nereferite de mult timp. La fiecare referire a unei pagini din memorie ea trebuie cutat n list
i mutat n capul listei. n cazul n care trebuie eliminat o pagin din memorie se va alege ultima
pagin din list. b) cu ajutorul unui contor C (contor hardware) care este incrementat dup fiecare
instruciune. Fiecare intrare din tabela paginilor trebuie s dein un cmp n care s se poat stoca
valoarea contorului C. Dup fiecare referire la memorie, valoarea curent a lui C se stocheaz n
intrarea din tabela paginii corespunztoare paginii referite. La o ntrerupere de pagin invalid se va
selecta pagina din memorie avnd cea mai micvaloare a contorului C (care a fost neutilizat cel mai
mult timp).
CURS 8
Astfel, ultima pagin va fi parial ocupat, restul de memorie neocupat din acea pagin
neputnd fi utilizat. Astfel, dimensiunea mare a paginilor va crete probabilitatea ca poriuni
mari din memorie s nu poat fi utilizate. Dimensiunea mic a paginilor asigur o mai bun
egalitate ntre dimensiunea memoriei si dimensiunea total a proceselor.
Spaiul datelor i spaiul instruciunilor
Instruciunile i datele ocup spaii de adrese diferite n memorie. Astfel, exist o
adresa 0 n spaiul adreselor instruciunilor, care pointeaz ctre o locaie unde este
memorat o instruciune; la fel i pentru date.
La un calculator cu acest design, ambele spaii de adrese (al instruciunilor i al
datelor) sunt paginate independent una de cealalt. Fiecare are tabela ei de pagini, cu legturi
independente ntre adrese virtuale si adrese fizice de date i instruciuni. Cnd este nevoie de
o instruciune, procesorul tie ca trebuie s foloseasc spaiul instruciunilor si tabela de
pagini a instruciunilor. La fel i pentru date.
Pagini partajate
Intr-un sistem multiprogramat, este ceva normal ca mai muli utilizatori s ruleze
acelai program n acelai timp. Este evident c este mai eficient s se utilizeze aceleai
pagini, dect s fie mai multe copii ale acelor pagini n memorie.
41Dac exist spaii separate pentru date i instruciuni, este evident c pentru a
partaja programele, procesele vor folosi aceeasi tabel de pagini pentru instruciuni, dar
tabele de pagini diferite pentru date. Tabelele de pagini sunt structuri de date independente
de tabela de procese. Fiecare proces are doi pointeri n tabela de procese: unul pentru tabela
de date i unul pentru tabela de instruciuni.
Cnd mai multe procese folosesc aceleai instruciuni, apar probleme cu paginile
pe care le folosesc. Daca un proces se execut si este eliminat din memorie, toate
coninuturile paginilor care i-au fost alocate sunt terse, iar paginile vor fi alocate altor
procese. Astfel, procesele care foloseau paginile primului proces vor genera multe fault-uri,
pentru a ncrca n memorie paginile necesare lor. Similar, cnd un procesul i termin
execuia, este esenial s se tie care dintre paginile lui sunt folosite de alte programe, pentru
a nu fi golite din greeal. Se folosesc astfel structuri de date speciale care memoreaz care
pagini sunt folosite de mai multe procese i care sunt aceste procese.
n cazul datelor, fiecrui proces i este alocat o tabel de pagini, fiecare pointnd
cre acelai set de date. Nu este nevoie s sa copieye setul de date, pentru fiecare proces.
Paginile de date sunt Read Only pentru fiecare proces n parte.
Atta timp ct procesele nu modific datele, ci doar le citesc, nu este nici o
problem. Cnd un proces modific o anume data din memorie, se creaz o copie a paginii,
astfel ca fiecare proces are acum pagina lui de date. Acestea sunt acum Read Write, astfel c
viitoare modificri ale datelor nu vor produce nici o violare n sistem.
Aceast strategie mrete performanele sistemului, deoarece paginile al cror
coninut nu este modificat nu vor fi copiate.
Eliberarea (curarea) paginilor
Cnd este nevoie de o nou pagin, iar nu este nici o pagin goal n memorie
spre a fi scris cu noua informaie, una din paginile actuale trebuie mutat pe disc (swap).
Toate sistemele au un proces numit paging daemon, care cerceteaz periodic
memoria i menine un numar suficient de pagini goale spre a fi folosite la nevoie. El
selecteaz i transfer pe disc, prin algoritmii specifici de alocare a paginilor, paginile care au
fost modificate dup ce au fost ncrcate.
Interfaa memoriei virtuale
Memoria virtual este transparent proceselor i utilizatorlor, este un spaiu mare
de adrese vituale, pe un calculator cu puina memorie fizic.
n unele cazuri, utilizatorii au puin control asupra memoriei i pot modifica modul
de comportare al diveselor programe.
Cea mai utiliyata tehnic de management a memoriei este DSM Distributed
Shared Memory. Scopul este acela de a permite mai multor procese ntr-o reea s aib
acces la acelai set de pagini, printr-un singur spaiu de adrese. Cnd apare un fault,
procedura de tratare a fault-urilor detecteaz n reea ce calculator are pagina cerut i trimite
un mesaj prin care pagina este eliminat din tabela de pagini si din memoria surs, este
trimis prin reea celui care a cerut-o, care o va indexa intr-o tabela de pagini i o va aloca
programului care are nevoie.
Paginare
Segmentare
Nu
Da
Mai multe
Da
Da
Nu
Da
Tabelele de pagini de
dimensiune variabil pot fi
gestionate uor?
Nu
Da
Nu
Da
Pentru a simula un
spaiu de adresare
contiguu mai mare fr
a achiziiona mai mult
memorie
Fragmentarea externa.
Problema golurilor aflate intre diferitele procese aflate in memorie poarta numele de fragmentare
externa. Memoria care nu este alocata devine in timp din ce in ce mai fragmentata.Fragmentarea
externa poate fi eliminata prin tehnici costisitoare de compactare a memoriei
Ce reprezinta un selector?
Selectori = Registre: cs, ds, ss, es, fs, gs Index: Indexeaz tabela de descriptori .TI: indic tabela: GDT
sau LDT .Tabelele sunt inute n memorie la adrese specificate n registre: gdtr i ldtr .RPL: dac
selectorul este ncrcat n CS, specific nivelul curent de privilegiu (CPL).
Un selector e un numar reprezentat pe 16 biti dintre care unul din bitii selectorului precizeaza daca
selectorul e local sau global
Ce reprezinta un descriptor?
descriptorii - plasai ntr-un tabel ;accesul la un segment - pe baza indicelui n tabelul de descriptori
(selector).adresa virtual - 2 componente: indicele n tabelul de descriptori si deplasamentul n cadrul
segmentului .adresa fizic = adresa de nceput a segmentului + deplasamentul
Fiecare program are un tabel de segmente, cu acte un descriptor pentru fiecare segment.Deoarece
exista mai bine de un sfert de milion de intrari in tabel, descriptorul este el insusi un segment si este
paginat.Descriptorul de segment contine o indicatie care atesta, sau nu, apartenenta segmentului la
memoria principala.Daca vreo parte din segment se afla in memorie, atunci se considera ca segmentul
si tabelul sau de pagini se afla in memorie.Daca segmentul este in memorie, descriptoul sau contine un
pointer de 18 biti catre tabelul sau de pagini.
PFF (Frecvena de eroare de pagin) Este un algoritm de spaiu variabil care folosete o abordare
mult mai ad-hoc. Monitorizeaz frecvena de eroare pentru fiecare proces.Dac aceasta este peste
un prag nalt ales, i se d procesului mai mult memorie, astfel nct s fie mai puine defecte,dar nu
funcionez ntotdeauna (Ex.: FIFO, anomalia lui Belady).Dac frecvena de eroare este sub un alt
prag ales, jos, se ia memorie de la proces.Ar fi normal ca el s produc mai multe defecte, dar nu este
regul. Este greu s se utilizeze PFF pentru a distinge ntre schimbrile de localitate i schimbrile n
dimensiunea WS-ului.
Una din propietatile placate ale sirului distanta este ca paote fi folosit pentru predictia
numarului de defecte de pagina ce vor avea loc cu memorii de diferite marimi.
Scopul este realizarea unei treceri prin sirul distantelor si din informatia adunata, predictia nr
de defecte de pagina pe care procesul le va avea in memorii cu 1,2,3.,n cadre de pagina,
unde n este nr de pagini virtuale in spatiul de adrese al procesului.
Algoritmul incepe prin parcurgerea sirului distantelor, pagina cu pagina.Aceasta tine evidenta
nr de aparitii ale lui 1, numarul de aparitii ale lui 2 s.a.m.d.Fie C numarul de aparitii ale lui
i.Fie C nr de aparitii ale lui in sirul distantelor.
Clacula acum vectorul F in functie de formula:
Valoarea lui Fm reprezinta numarul de defecte de pagina care vor avea loc cu sirul distantelor
date si m cadre de pagina.
De exemplu:Daca F1 este 20 ,insemnand ca , in conditiile in care o memorie sticheaza doar 1
cadru de pagina , din cele 24 de referinte din sir , toate vor genera defecte de pagina cu
exceptia celor 4 cadre care sunt la fel cu referinta paginii precedente.
Un defect de pagina este genrat de fiecare data cand un element al sirului distanta este egal cu
m+1 sau ami mult.Suma din formula de mai sus aduna numarul de aparitii ale unor astefl de
elemnte.
Nu.
Sistemul de fiiere este o bucat dintr-un sistem de operare (adic o parte dintr-un program, de fapt);
aceast bucat este vizibil utilizatorului ca un set de proceduri (apeluri de sistem, pentru a fi mai
precii) care opereaz cu fiiere, manipulnd o structur de date pe un suport permanent de memorie.
Sistemul de fiiere ofer structura modului de organizare a informaiilor n sistem: structura
arborescent (ierarhic) de directoare i fiiere. De fapt, aceast concepie a fost preluat de
celelalte sisteme de operare(DOS, Windows, Netware).
Ideea care st la baza sistemului de fiiere este ierarhia. Se ceeaz astfel imaginea unui sistem
de fiiere ierarhizat sub form de arbore, n vrful cruia se afl directorul radacina (root), notat \, la
care se pot conecta un numr de directoare i fiiere. Fiecare director poate conine
alte directoare i fiiere, directoare care la rndul lor pot conine alte directoare i fiiere, pe un numr
nelimitat
de nivele.
Aceast structur
arborescent este
folosit
de
sistemul UNIX pentru gestionarea i localizarea fiierelor proprii i ale utilizatorilor.
Sistemul Unix utilizeaz patru tipuri de fiiere: ordinare, director, speciale, pipe.
Acces aleator .Citirea octeilor/nregistrrilor n orice ordine .Esenial pentru sistemele de baze
de date .Citirea se realizeaz prin dou metode:Mutarea marcatorului de fiier (seek), apoi
citete sau ; Citete i apoi muta marcatorul de fiier .
Atribute.
-protection. Cine si cum poate accessa fisierul
-password
-creator .idul persoanei care a creat fisierul
-owner.
-read-only flag. 0 pt citire sau scriere , 1 pt read only
-hidden flag. 0 pt normal 1 pt a nu fi afisat
-archive flag,ascii, random access flag, temporary flag,lock flags,record length, key position, key
length, creation time, time of acess, time of last change, current size, maximum size.
Operatii.Create Delete Open Close Read Write Append Seek Get attributes Set Attributes Rename.
Definitie:
Directorul este un caz particular de fiier ce arat ca un cuprins de
carte. El conine dou coloane de informaie - numerele inode ale fiierelor
i numele fiierelor. Fiecare director conine o referin ctre el nsui
(identificat prin semnul .) i ctre directorul printe (identificat prin ..).
Chiar i directorul rdcin root conine o referin ctre directorul
printe, care n acest caz este o referin ctre el nsui. Directoarele pot
conine subdirectoare i fiiere. La rndul lor, subdirectoarele pot conine
alte subdirectoare i alte fiiere. Orice sistem de operare posed o anumit
modalitate de structur a directoarelor pentru organizarea informaiei pe
hard-disc; n UNIX un director se numete directory, iar n Windows i
MacOS un director se numete folder, avnd ns aceeai semnificaie.
Forme:
Aceste directoare au urmtorul coninut:
/bin Comenzi UNIX
/dev Director pentru dispozitive speciale
/etc Programe i fiiere de date suplimentare
/lib Directorul bibliotecii de programe C
/mnt Directorul mount; rezervat pentru montarea sistemelor de
fiiere
/opt Conine aa numitele software storage objects (SSO's)
/tmp Director temporar
/usr Conine rutine utilizator
/var Fiiere obiect nepartajate
/home Directorul utilizatorilor sistemului
Cale:
1.
2.
3.
4.
5.
6.
7.
8.
Operatii:
Create-creaza
Delete-sterge
Opendir-deschide
Closedir-inchide
Readdir-citeste
Rename-redenumire
Link-creaza o legatura-o legatura hard
Unlink-sterge o legatura
Implementarea fisierelor
Schema general a unui sistem de fiiere
(a) Alocarea contigu a spaiului de pe disc pentru 7 fiiere
(b) Starea discului dup tergerea fiierelor D i F
Stocarea unui fiier ca o list nlnuit de blocuri
O list nlnuit de blocuri ce utilizeaz FAT(file allocation table) n RAM
Implementarea directoarelor
Sistemul de fiiere al unui SO determin modalitatea n care fiierele sunt denumite, modul i locul n
care acestea sunt stocate pe hard-disk sau pe alt mediu de stocare. SO Windows, Macintosh, UNIX i
Linux posed sisteme de fiiere ce utilizeaz o structur ierarhic.
ntr-un sistem de fiiere ierarhic, fiierele sunt plasate n aa numite containere logice ce
sunt aranjate ntr-o structur de arbore. Sistemul de fiiere pornete cu rdcina arborelui. UNIX i
Linux denumesc containerul din vrful structurii arborescente director. Containerele din cadrul
fiecrui director se numesc subdirectoare. Windows i Macintosh utilizeaz termenele de folder i
subfolder pentru a descrie directoarele i subdirectoarele.
Sistemul de fiiere al unui SO determin modul n care fiierele i directoarele sunt
organizate din punct de vedere logic. Tipul sistemului de fiiere utilizat de ctre calculator determin
modul n care fiierele pot fi securizate (sau nu) fa de ali utilizatori sau programe. Sistemul de
fiiere definete, de asemenea, modul n care datele sunt aranjate n mod fizic pe mediul de stocare.
Unele sisteme de fiiere utilizeaz spaiul de stocare ntr-o manier mai eficient dect altele.
Un sistem de fiiere clasic este File Allocation Table (FAT). Sistemele FAT sunt
administrate pe disc de ctre SO. Tabela FAT conine o hart de fiiere precum i modul n care
acestea sunt stocate pe disc. Sistemul FAT conine referine ctre clusterele de pe disc. Clusterul este
unitatea de baz a stocrii logice pe disc. Un fiier poate fi stocat pe mai muli clusteri, dar un cluster
poate conine date provenind de la un singur fiier. Clusterii pot fi aranjai (sau nu) unul lng cellalt.
SO utilizeaz sistemul FAT pentru a identifica toi clusterii de pe disc n care un fiiere este stocat.
Exist trei tipuri de sisteme FAT. Versiunea original este aceea ce a pstrat numele de
FAT, iar versiunile FAT16 i FAT32 reprezint versiuni mbuntite ale acesteia.
Sistemul FAT original a fost folosit prima oar pe primele versiuni de MS-DOS, nefind
capabil s fie utilizat pentru hard discuri mai mari sau pe sisteme de operare mai avansate precum
Windows 3.1, Windows 95/98. Sistemul original FAT avea limitri i n privina numelor de fiiere,
putnd recunoate nume de fiiere pn la 8 caractere n lungime. Alte limitri erau cele legate de
imposibilitatea utilizrii hard discurilor de capaciti mari i de nerecunoaterea de ctre SO avansate.
Sistemul FAT nu putea s utilizeze n mod eficient spaiul de pe discurile cu capaciti mai mari.
Aceast modalitate de utilizare ineficient a reprezentat aceeai problem cu care s-a confruntat i
FAT16 (i a determinat apariia lui FAT32). FAT16 a fost creat pentru a putea utiliza partiii pn la 4
GB.
Cu toate c discurile mari pot fi formatate folosind FAT16, aceast manier este ineficient
deoarece partiiile mari au i dimensiuni mai mari de clusteri. Spre exemplu, la o partiie de 512 MB,
dimensiunea clusterilor este de 8 KB. Asta nseamn c fie i pentru un fiier de dimensiune 1 KB, el
va folosi 8 KB de spaiu pe disc, deoarece doar un fiier poate fi stocat ntr-un cluster. Rezult deci 7
KB irosii. Pentru a rezolva aceast problem, a fost dezvoltat FAT32. Acest sistem de fiiere pe 32 de
bii utilizeaz clusteri de dimensiuni mai mici i ofer suport pentru partiii pn la 2 TB.
SO diferite utilizeaz sisteme de fiiere diferite iar unele SO pot utiliza mai multe sisteme de
fiiere. Spre exemplu, dei Windows 3.x poate utiliza doar sistemul FAT16, Windows 2000 poate
utiliza FAT16, FAT32 sau NTFS (New Technology File System).
Sistemul de fiiere determin conveniile pentru denumirea fiierelor i formatul pentru specificarea
cii (drumului) ctre locaia fiierului. Aceste reguli pentru stabilirea numelor fiierelor variaz n
funcie de sistemul de fiiere i cuprind urmtoarele probleme:
Numrul maxim de caractere permise n numele fiierului
Numrul maxim de extensii sau sufixe
Dac sunt admise sau nu spaii n numele fiierelor
Dac numele fiierelor sunt case sensitive
Ce caractere pot fi utilizate pentru numele fiierelor
Formatul de specificare a cii ctre fiier
Curs 10:
Ideea este :
Pstrarea unui jurnal a operaiilor planificate pe sistemul de fiiere astfel nct dac
sistemul se va bloca sau va fi repornit s se poat continua operaia ntrerupt.
Numai dup ce jurnalul este editat (se nregistreaz operaiile planificate) operaiile se
vor executa.
Sistemele de fiiere NTFS i ReiserFS utilizeaz jurnalizare.
SO Windows poate conine la un moment dat mai multe sisteme de fiiere eterogene pe
diferite partiii
SO Unix integreaz sisteme de fiiere multiple ntr-o singur structur utiliznd conceptul de
VFS(Virtual File System)
Sistemul de fiiere virtual se bazeaz pe existena :
O interfa cu procesele utilizator numit i interfaa POSIX
O interfa la sistemul de fiiere propriu-zis
Unui comutator ntre interfee
Descrieti un i-node.
Reprezentarea interna a unui fisier si informatiile referitoare la carcateristicile sale sunt
continute de o structura de date numita i-nod (information node), care contine date despre:
pozitia pe disc a datelor din fisier, proprietarul fisierului, drepturile de acces, momentul
ultimului acces la fisier sau ultima modificare a fisierului sau I-nodului. Un fisier poate avea
mai multe nume, dar exista un singur i-nod asociat. Relatia stabilita intre nume si i-nod se
numeste legatura . Fiecare i-nod are asociat un numar de ordine (inumber) ce desemneaza in
mod unic numele interne ale fisierelor, iar cataloagele contin numai tabela de traducere a
numelui extern al fisierului in numarul de ordine asociat. Cand un proces creeaza un nou
fisier, nucleul asociaza acestuia un i-nod liber al carui numar de ordine devine identificatorul
intern al fisierului si creeaza o noua intrare in catalogul corespunzator. I-nodurile sunt
memorate in sistemul de fisiere dar, pentru a micsora timpul de executie a operatiilor care
necesita informatii despre fisiere, o copie a tabelei de i-noduri este pastrata in memoria
interna.
Nucleul sistemului de operare contine urmatoarele structuri de date: o tabela de fisiere, cate o
tabela de descriptori de fisier pentru fiecare proces. Tabela descriptorilor de fisier identifica
toate fisierele create sau deschise de un anumit proces. Tabela de fisiere inregistreaza, pentru
fiecare fisier, pozitia in octeti de la care se va face urmatoarea operatie de citire sau scriere
asupra fisierului. In momentul in care procesul va lansa o comanda de deschidere sau creare
de fisier, nucleul sistemului de operare ii va intoarce indexul fisierului din tabela descriptorilor
de fisier alocata acelui proces. Daca procesul lanseaza o comanda de scriere/citire asupra
fisierului, comanda va contine ca argument si acest index, pe baza caruia sistemul de operare
va identifica descriptorul acelui fisier, apoi pozitia sa in sistemul de fisiere si in cele din urma inodul asociat (din informatiile cuprinse in i-nod se identifica zona de date a fisierului.
Curs 11:
1. Principii ale dispozitivelor hardware de I/O
Dispozitive de I/O pot fi mprite n dou categorii:
~dispozitive orientate pe blocuri stocheaz informaii n blocuri orientate de dimensiune
fix,
fiecare bloc avnd adres proprie. Principala proprietate a unui dispozitiv orientat pe
blocuri const n posibilitatea de a citi sau scrie fiecare bloc independent de celelalte.
Unitile de disc sunt cele mai uzuale dispozitive orientate pe blocuri.
~dispozitivele orientate pe caractere dispozitive care furnizeaz sau accept un flux de
caractere, nu sunt adresabile i nu dispun de o operaie de cutare (imprimante, interfa de
reea, mouse-ul, tastatura, etc).
2. Ce este un controler?
Controlerul de memorie este un circuit digital care gestioneaza fluxul de date din memoria
principala. Poate fi un cip separat sau integrat in alt cip.
3. Ce este o intrerupere?
Intreruperea este un semnal electric generat de controller si trimis unui circuit special numit
controller de intreruperi numite IRQ(Interact Request)
4. Mecanismul DMA.
Fara mecanismul DMA, un controller de disc citeste un bloc de pe disc bit cu bit si
asambleaza acest flux intr-un bloc intr un buffer intern.
Apoi, detecteaza si conecteaza posibile erori si genereaza intreruperi.Sist. De operare citeste
blocul de date din bufferul controllerului si il transforma in memorie. Tot acest process este
consummator de timp. Mecanismul DMA a fost creat pentru a scuti procesul de operatie de
transfer a datelor.
Ca atare, procesul furnizeaza controllerului pe langa adresa blocului de date care trebuie citit
si: - adresa din memoria unde va fi stocat blocul citit de pe disc
~ nr de octeti transferat
Dupa citirea blocului, controllerul transfera blocul in memorie si nu procesorul
Controllerul foloseste un contor pentru a tine evidenta tuturor octetilor transferati incheind op
de transfer cand controllerul=0. Apoi, se genereaza o intrerupere pt a informa sist. ca blocul de
date e disponibil in memorie. Astfel, sist de operare nu trebuie sa copie blocul pt ca acesta este
deja in memoria principala.
Daca nu utilize bufferul, ar trebui sa utilizam magistrala care poate fi ocupata cu rezolvarea
altor tranzactii si ca atare controllerul ar genera numeroase mesaje de eroare.
5. Principii ale software-ului de I/O
-denumirea lor e uniforma (UNIX trateaza dispoz ca niste fisiere)
-toate erorile se trateaza prin rutine de tratare a intreruperilor
6. Nivelurile software-ului de I/O
-soft I/E de nivel utilizator
-nivelul sistemului de operare independent de echipament
-drivere de echipament
-rutinele de tratare a intreruperii
-hard