Documente Academic
Documente Profesional
Documente Cultură
1.INTRODUCERE
1.1. NOIUNI DE BAZ I CLASIFICRI
1.1.1.
1.1.2.
1.1.3.
1.1.4.
1.1.4.1.
1.1.4.2.
1.1.4.3.
1.1.4.4.
1.1.4.5.
Prin noiunea de sistem de operare nelegem modulele program ale unui SC,
care administreaz resursele tehnice. Modulele n cauz soluioneaz situaiile de
conflict, optimizeaz productivitatea sistemului, sporesc eficiena utilizrii lui. Ele
joac rol de intermediar (interfa) ntre programele utilizatorului i
componentele tehnice ale calculatorului. Alte denumiri istorice ale SO: program
de administrare, monitor, supervizor.
Aplicaii
Software de sistem
Sisteme de
operare
Drivere de
dispozitiv
Programe
utilitare
Limbaje de
programare
Constau din
unul sau mai
multe
programe
Controleaz
echipamentele
hardware
Gestioneaz
toate celelalte
aplicaii
Sunt concepute
pentru a lucra
cu o anumit
arhitectura
hardware
Sunt
programe ce
ofer
calculatorului
informaii
specifice
privind un
anumit
echipament
hardware
Sunt utilizate
de SO pentru
comunicarea
cu
echipamentel
Majoritatea
utilitarelor
trateaz
operaiile de
stocare i
gestionare a
fiierelor
Unele
utilitare sunt
incluse ca
pri ale SO
Sunt utilizate
pentru a scrie
programe, ce
pot fi
executate apoi
de ctre
calculator
Permit
utilizatorilor
s introduc
instruciuni
mai inteligibile
dect limbajul
5
main
1.1.
1.1.2.
User
Task
Creat de sistem
Ansamblul
Pas de task
. . . . .
Proces
Componente
standard ale
sistemului de
operare
Componente
definite de
utilizator
Pas de task
. . . . .
Proces
Regulator
Regulator I/O
Planificator
Planificator I/O
Sistem de fiiere
...
...
Sistem de fiiere
Program Main
Subprogram A
Subprogram B
Bufere date
...
...
programelor
i datelor accesate n
timpul procesului,
formeaz spaiul de
adrese. Fig. conine
dou exemple de spaii
de adresare unul
pentru procesul de
intrare/ieire i altul
pentru procesul UC. Una
din destinaiile sistemului
de operare este de a
asigura proiectarea
spaiului de adresare
a unui proces n memoria
fizic. Pentru rezolvarea
acestei probleme sunt
utilizate att resurse tehnice
ct i resurse logice.
1.1.3.
Tipuri de sisteme de operare, obiective i funcii
Valorile concrete ale atributelor sistemelor de operare i combinaii ale
acestora determin diverse tipuri de SO. Conform acestor atribute pot fi
evideniate urmtoarele tipuri de sisteme de operare:
secveniale,
cu multiprogramare,
cu prelucrare multipl,
1.1.4.
fiabilitatea;
eficacitatea;
simplitatea utilizrii;
facilitatea extensibilitii.
14
Captoare
C
Semnale de
msur
nregistrri
Semnale de comand
Calculator
19
1.2.
Sistemul de operare i procesele
Noiunea de proces este asociat conceptului de lucrare i poate fi definit ca
o suit temporal de execuii de instruciuni, considerat ca fiind o entitate
de baz n descrierea sau analiza funcionrii unui sistem. Evoluia n timp a
unui proces presupune un consum de resurse, dictat de natura i
complexitatea instruciunilor de execuie. Orice utilizare a unei resurse este
asociat, la un moment dat, unui proces i procesul respectiv i asum
rspunderea de utilizare a acestei resurse. n particular, rezult c ori de cte
ori se execut procedurile de sistem, resursele, pe care le utilizeaz acesta,
intr n administrarea procesului, care a cerut serviciul. Resursele alocate
unui proces variaz n timp.
Anterior un sistem de operare a fost definit ca un set de programe destinat
s administreze resursele. Care sunt relaiile dintre componentele sistemului
de operare?
Atunci cnd un proces este creat,
care
Procesul
1 este ordinea de utilizare a unui
program anume?
Procesul 2
Procesul 3
Sistemul de
operare
20
Fig.1.7. Trei procese ntr-un sistem cu multiprogramare.
Ciclul de via a unui proces poate fi reprezentat printr-un set de stri ale
procesului i trecerea de la o stare la alta. Vom evidenia trei stri
elementare ale unui proces: proces ales (sau exe) procesului i s-a alocat un
procesor, este n curs de execuie, proces blocat procesul ateapt s se
produc un anumit eveniment, al crui apariie este indispensabil, proces
eligibil procesul are la dispoziie toate resursele necesare, lips fiind doar
procesorul, adic procesul este pregtit s se execute din momentul alocrii
unitii centrale (fig.1.8).
Procesului i s-a
alocat
procesorul
Procesul
ateapt
terminarea
operaiei I/O
Ales (Exe)
Operaia de
I/O s-a
terminat
Eligibil
(Ready)
Blocat
(Wait)
21
Administrarea
memoriei
Administrarea
dispozitivelor
Expirarea
intervalului
de timp
Starea
procesorului
Administrarea
procesoarelor
Administrarea
procesoarelor
Eliberarea
memoriei
Eliberarea
procesorului
Eliberarea
dispozitivelor
Ales
Terminare
Administrarea
procesoarelor
Prezentare
Cerere de citire
informaii
Pstrare
Eligibil
Blocat
Gestiunea
informaiei
Administrarea
resurselor
Administrarea
procesoarelor
MO este accesibil?
Gestiunea
informaiei
Administrarea
memoriei
Toate
dispozitivele sunt
alocate?
Administrarea
dispozitivelor
Iniiere I/O
Administrarea
procesoarelor
Semnal
Administrarea
dispozitivelor
Creare proces I/O
Administrarea
procesoarelor
22
1.3.
Procesul 2
Maina extins
Maina goal
Procesul 4
Programele
utilizatorului
(procese)
Sistemul de operare
Procesul 3
Sistemul de operare
Procesul A
Procesul B
Procesul 1
Procesul 2
Maina extins extern
Maina extins
intern
Maina
goal
Programele
utilizatorului
(procese)
Alte funcii
ale S.O.
Procesul 3
25
Taskuri
Planificator de taskuri
Procesul 1
Procesul 2
Procesul 3
I/O de sistem
Proces creat
de utilizator
Proces I/O
Nivelul 5
Stratul 2
Stratul 1
Nivelul 4
Nivelul 3
Nivelul 2
Stratul 0
Nivelul 1
Maina
goal
Administrare
procesoare (P,V),
planificare procese
Administrare memorie
Administrare procesoare (nivel superior,
mesaje, creare i distrugere procese)
Administrare dispozitive
Administrare informaie
26
Fig.1.12. Structura ierarhic a sistemului de
1.4.
Alte puncte de vedere asupra sistemelor de operare
Sistemele de operare pot fi abordate din diferite puncte de vedere, cum ar fi
SO i procesele, SO i maina extins sau SO i maina ierarhic. Exist i
alte puncte de vedere asupra sistemelor de operare pe care un specialist ar
trebui s le cunoasc.
1.4.1.
Abordare funcional
Pentru un utilizator obinuit, convins c un calculator este doar un
instrument care l ajut n soluionarea unor probleme din domeniul su de
activitate, noiunile, cum ar fi administrarea memoriei cu paginaie sau
driverele dispozitivelor, nu semnific prea multe. Destinaia principal a unui
sistem de operare pentru aceast categorie de utilizatori este punerea la
dispoziie a unui set de programe care l-ar ajuta n formularea i soluionare
problemelor concrete ce in de domeniul su de activitate.
1.4.2.
Abordare din punctul de vedere al interfeei cu utilizatorul
Interfaa sistemului de operare cu utilizatorul prezint un interes aparte.
Progresul n acest domeniu este spectaculos, dac vom lua n consideraie c
n primele sisteme de operare utilizatorul era obligat s indice n mod explicit
i manual (n regim textual) fiecare pas, orict de nesemnificativ ar fi prut.
Formularea pailor cu ajutorul unui limbaj specializat, cum ar fi Job Control
Language (JCL), nu a schimbat substanial situaia.
27
28
Cazul procedurilor.
Structura de date - stiva de execuie. Descriem o organizare foarte apropiat
schemei de execuie din limbajul de programare C, presupunnd
respectarea urmtoarelor ipoteze:
1.
Parametrii unei proceduri sunt transmii prin valori; la retur un singur rezultat
este returnat,
2.
Procedurile pot fi apelate recursiv (direct sau indirect).
La fiecare apelare a procedurii o structur de date numit regiune a mediului
(sau simplu mediul procedurii) este creat n vrful stivei de execuie,
care va dispare la returul respectiv. O procedur apelat recursiv are n
stiv attea medii cte execuii neterminate exist pentru aceast
procedur. La un moment concret de timp mediul din top-ul stivei
corespunde procedurii q n curs de execuie (procedura activ), mediul
imediat urmtor este al procedurii p, care a apelat procedura q, etc.
Stiva este administrat prin intermediul a doi pointeri (fig.2.1.):
baza
pointerul care indic baza mediului procedurii active,
top
top
pointerul care indic primul amplasament
liber pentru a crea un nou
q
mediu. top
baza
baza
Stiv
Mediul procedurii
Stiv
Dup apelarea procedurii q
31
parametri
n+1 amplasamente, primul coninnd numrul de parametri,
variabilele locale i spaiul de lucru al procedurii.
ordonarea parametrilor
executarea unei ramificaii la procedura apelat.
Retur
salvarea rezultatului ntr-un amplasament stabilit Rezumat: contextul memoriei
unei activiti la un moment
restabilirea informaiilor de retur i eliberarea mediului
curent de timp conine, n afara
temp:=adresa de retur
top:=baza
baza:=baza_veche
returul
ramificare *temp
ramificare indirect
segmentului
procedurii
n
curs
de
execuie
i
segmentele de date, zona
mediului curent din stiva de
32
execuie.
Modul de funcionare:
Protecie - se permite doar programelor SO executarea unor instruciuni anumite
(speciale), programele utilizatorilor neavnd acces la aceste instruciuni. Aceasta
poate fi realizat definind dou moduri de funcionare a calculatorului, care se
deosebesc printr-un bit indicator n cuvntul de stare: modul supervizor i modul
program.
Masca ntreruperilor.
Referitoare la contextul accesibil al memoriei i drepturile de acces asociate: tabele de
segmente, indicatori de protecie a memoriei, etc.
urmtoare (contor ordinal). Pentru unele calculatoare contorul, care conine adresa
operaiei urmtoare, poate fi un registru distinct al cuvntului de stare, pentru altele el
programul supervizor
programul pentru I/E
ciclu
ciclu
if D=1 then
if DEX(i)=1 then
caut PES(i);
execut I/E;
DEX(i):=1;
<sincron>
FEX(i):=0;
FEX(i):=1;
endif
endif
endciclu
<test terminare execuie>
if FEX(i)=1 then
F:=1;
endif
endciclu
Comentarii:
1.
2.
3.
36
Comutarea contextului, descris mai sus, este declanat sub influena strii
unor indicatori interni (din PSW) pe care procesorul i consult la
interpretarea fiecrei instruciuni. Conform semnificaiei acestor indicatori i
maniera n care ei sunt modificai, pot fi evideniate trei mecanisme de
comutare, descrise n tabelul de mai jos:
Denumirea
mecanismului
ntrerupere
Exterioar derulrii
instruciunii curente
Reacionare la un eveniment
asincron extern
Deviere
Legat de derularea
instruciunii curente
Apelarea supervizorului
Comutare explicit
Adesea toate aceste trei denumiri sunt nlocuite cu una singur - ntrerupere.
38
2.2.3. ntreruperi
ntreruperea - comutarea contextului procesorului declanat de o cauz
extern derulrii instruciunii curente. Fizic = trimiterea unui semnal
procesorului, acest semnal provocnd schimbarea strii unuia dintre
indicatorii, consultai n cursul executrii fiecrei instruciuni. Semnalul
poate proveni de la alt procesor, de la un organ de I/E, de la un dispozitiv
extern, i n genere, de la orice proces fizic, extern procesorului ntrerupt.
O ntrerupere permite s cerem procesorului s suspende executarea
programului curent, din primul punct ntreruptibil, i s treac la execuia
unui program predefinit. Acesta din urm este numit program de tratare
a ntreruperii (interrupt handler, eng., traitant de l'interruption, fr.).
Programul de tratare a ntreruperii este executat ntr-un context diferit
de cel al programului ntrerupt, diferena fiind legat de modul de
tratare, protecie, informaiile accesibile, etc.
Nivele de prioritate. Cauzele care duc la necesitatea ntreruperii unui procesor
sunt diferite, drept rezultat i programele predefinite, care trateaz
ntreruperile difer. Mecanismul ntreruperilor trebuie s poat deosebi
aceste cauze. Dou scheme de baz sunt utilizate n acest scop:
1.
2.
Fiecrei cauze este ataat un indicator, se mai spune c fiecare cauz este
ataat unui nivel de ntrerupere. Fiecrui nivel i corespunde un program
39
Armare
Dezarmat
ntrerupere
Declanare
programat
Dezarmare
Armat
[ Punct de ntrerupere ]
Ateptare
[ Nivel cu masca eliminat ]
[Nu exist nivel activ cu o prioritate mai mare]
Activ
Achitare
40
42
masca ntreruperii
cheie de protecie
codul caracterelor
masca ntreruperii
1 - ateptare, 0 - activ
0 - stpn, 1 - sclav.
<16-31>
<32-33>
<34-35>
<36-39>
<40-63>
codul ntreruperii
lungimea instruciunii
codul condiiei
suprimarea devierii
contor ordinal
2.
3.
4.
coninutul unui cuvnt de stare este reprezentat prin notaia <activitate, mod,
mascare, contor ordinal>. Primele trei cmpuri pot lua, respectiv, valorile:
ateptare/activ, master/slave, mascat/demascat. Dac csp desemneaz un
cuvnt de stare, cmpurile sale vor fi desemnate de csp.act, csp.mod, csp.masc
i csp.co.
operatorul adr aplicat unui identificator de variabil sau de procedur,
desemneaz adresa amplasamentului unde se afl variabila sau prima
instruciune a procedurii,
notaia Mp[adr] desemneaz coninutul amplasamentului cu adresa adr.
notaiile svc_vechi, dev_vechi, intr_x_vechi, svc_nou, dev_nou, intr_x_nou
desemneaz amplasamentele unde sunt plasate i de unde sunt ncrcate
cuvintele de stare.
instruciune inexistent:
cod_op:=Mp[dev_vechi.co].cod_operaie;
case cod_op of
else
-- caz de eroare
<tratarea erorii>
end;
end;
restabilire(zon);
ncarc_csp(dev_vechi)
47
apel_lim_timp_ex:
-- parametrii p, q, tratare_eroare
ceas:=q;
cspretur:=svc_vechi; -- salvare pentru retur
csplucrare:= <activ,slave,demascat,adr p>;
csperoare:= <activ,slave,demascat,adr tratare_eroare>;
armare(intr_ceas);
restabilete(zon);
ncarc_csp(csplucrare);
retur:
-- datorat terminrii procedurii p
dezarmare(intr_ceas);
ncarc_csp(cspretur);
endcase
procedura intr_ceas;
-- expirarea timpului limit
dezarmare(intr_ceas);
ncarc_csp(csperoare);
49
Fond
Fond
Fond
Iniializare
const q = 20000
-- 100ms/5s
100 ms
100 ms
100 ms
100 ms
procedura iniializare;
begin
intr_ceas_nou:=<activ,master,mascat,adr intr_ceas>;
csplucrare:= <activ,slave,demascat,adr fond>;
cspmsurare:= <activ,slave,demascat,adr msurare>;
ceas:=q;
ncarc_csp(cspdev)
end
procedura intr_ceas;
begin
save(zon);
salvarea contextului de fond
cspsave:=intr_ceas_vechi;
salvarea cuvntului de stare pentru fundal
ceas:=q;
ncarc_csp(cspmsurare)
programul de culegere a datelor
end
100 ms
2.3.3. Concluzii
Exemplele precedente ilustreaz modurile elementare de comunicare dintre
programele unui sistem de operare i mediul exterior. Programele
sistemului sunt activate:
1.
2.
51
Magistral
UC
UC
Cp
Cp
ADM
M
p
p
(a)
Cp
Cp
(b)
UC
UC
Magistral
(c)
Cp
Cp
Cp
UC
M
C
ADM
Cp
p
: unitate central
: memorie
: canal
: acces direct la memorie
: controler
: dispozitiv periferic
53
Un canal (sau unitate de schimb) este un procesor specializat n operaiile de intrareieire. El poate fi lansat doar de un procesor central, nu posed ntreruperi, dar poate
ntrerupe un procesor central. Setul de instruciuni ale canalului i permite s
acioneze controlerele i perifericele, care-i sunt conectate. Mini- i
microcalculatoarele pot poseda organe, numite Uniti de acces direct la memorie
(ADM), care sunt nite canale simplificate.
Un periferic este un organ capabil s transfere informaii din sau spre un suport extern.
Controlerul este legat de periferic printr-o interfa, care conine un set de funcii
(intrare, ieire, semnalizri de comand i de accident) i o linie de comunicaie, care
servete la transferul informaiilor.
Un canal poate comanda un singur dispozitiv periferic cu debit ridicat (disc, de ex.) sau
54
poate fi multiplexat pentru mai multe periferice cu debitul mai mic.
Diferite organe sunt desemnate, la fiecare nivel, printr-o adres care permite s evideniem:
canale legate de memorie,
controlere ataate fiecrui canal,
dispozitive periferice ataate fiecrui controler.
Adresa este un simplu numr de ordine. Un periferic este desemnat printr-o adres compus din
<numrul canalului, numrul controlerului, numrul dispozitivului periferic>.
p
Controler
0
Canal
0
1
Canal
00
Controler
01, 10
0
1
0
1
010
100
011
101
110
11
p
1
001
0
Controler
Aceast
organizare
permite
ameliorarea
performanelor
i
disponibilitii sistemului. Existena
mai multor ci de acces la un periferic
diminueaz riscul unor indisponibiliti
din cauza saturaiei sau ieirii din
funciune a unui canal sau controler.
000
111
55
Programul driver-ului
Fie c vrem s extragem o secven de n caractere care se afl ntr-un masiv
T[0..n-1]. Caracterul T[i], dac i>0, poate fi extras doar dac a fost
transferat T[i-1]. Pentru a verifica aceast condiie se testeaz iterativ
(ateptare activ) indicatorul term.
iniializare : term:=false;
TEST(adr_perif);
if nonpreg then
<tratare eroare>
endif;
for i:=0 to n-1 do
OUT(adr T[i],adr_perif);
ciclu :
TEST(adr_perif);
if err then
<tratare eroare>
endif;
if nonterm then
goto ciclu
endif;
endfor
Intrrile-ieirile sincrone sunt folosite la microprocesoarele cele mai simple
sau atunci cnd procesorul nu poate fi exploatat n mod util n timpul
57
transferului.
<tratare paralel>
if term then
programul de tratare a
(la prsirea lui T[i])
save context;
TEST(adr_perif);
if err then
<tratare eroare>
else
if i<n-1 then
i:=i+1;
OUT(adr T[i], adr_perif)
else
58
term:=TRUE
endif
endif;
Zon-tampon cu N locaiuni
procedura citire(nreg)
tratare ntrerupere
(apelare supervizor)
if tamponul_nu este_vid then
if tamponul_nu este_plin then
extragere(nreg, tampon);
lansare_transfer;
lansare_transfer n caz de necesitate;
if ateptare then // ateptare
pentru citire
else
reluare citire
lansare_transfer n caz de necesitate;
endif
60
ateptare
endif
Scriere
Schema care corespunde unei scrieri se obine din precedenta, nlocuind dup cum
urmeaz:
citire
prin scriere
extragere
prin introducere
tampon_vid prin
tampon_plin
tampon_plin prin
tampon_vid
programul utilizator
periferic de
scriere (nreg)
ieire
Zon-tampon cu N locaiuni
procedura scriere(nreg)
(apelare supervizor)
if tamponul_nu este_plin then
introducere(nreg, tampon);
lansare_transfer n caz de necesitate;
else
lansare_transfer n caz de necesitate;
ateptare
endif
tratare ntrerupere
if tamponul_nu este_vid then
lansare_transfer;
if ateptare then
reluare scriere
endif
61
Programe
Zona-tampon: fir de ateptare, gestionat circular cu ajutorul a doi pointeri:
citire (nreg)
Zon-tampon
qcitire
Variabile
L
Ncitire
nvcitire
citire_activ
tcitire, qcitire
suc()
Semnificaie
lungimea unei casete (nregistrri)
numrul de casete a zonei-tampon
numrul de casete vide
indicator al activitii perifericului de intrare
pointeri top i coad
pointer spre caseta urmtoare
tcitire
Valoare iniial
const.
const
Ncitire
false
0, 0
62
citire(nreg)
tratare_ntrerupere_perif_de_intrare
save(zon_svc);
save(zon_ntrerupere);
nceput:
qcitire:=suc(qcitire);
if nvcitire<Ncitire then
nvcitire:=nvcitire-1;
nreg:=tampon[tcitire];
if nvcitire>0 then
tcitire:=suc(tcitire);
lansare_perif_de_intrare(qcitire)
nvcitire:=nvcitire+1;
else
if non citire_activ then
citire_activ:=false
citire_activ:=true;
endif;
lansare_perif_de_intrare(qcitire)
if ateptare_citire then
endif
ntrerupere_veche.act:=activ;
else
ateptare_citire:=false
if non citire_activ then
endif;
citire_activ:=true;
restabilire(zon_ntrerupere);
lansare_perif_de_intrare(qcitire)
ncrcare_csp(ntrerupere_veche);
endif;
csplucrare:=<ateptare,slave,demascat,
adr
nceput>;
lansare_perif_de_intrare(qcitire)
ateptare_citire:=true;
elaborare prog.canal:
ncrcare_csp(csplucrare);
<sens=citire
endif;
adr.memorie=adr
tampon[qcitire]
restabilire(zon_svc);
contor_octei=L>
ncrcare_csp(svc_vechi);
SIO
<prog=prog.canal
perif= perif_de_intrare>
63
Excluderea mutual
Remarc. Executarea tratrii ntreruperii este declanat de sfritul transferului fizic al unei
nregistrri, activitate, care are loc paralel cu executarea programului primitivei
citire(nreg) pe procesor. Drept rezultat, este posibil ca ntreruperea s survin ntr-un
punct oarecare (observabil) al executrii acestei primitive, ceea ce va nsemna intercalarea
executrii programului de tratare a ntreruperii ntre dou puncte oarecare ale programului
citire(nreg).
Exemplu. S considerm instruciunea a doua
if non citire_activ then
citire_activ:=true;
lansare_perif_de_intrare(qcitire)
endif
din programul citire(nreg). Ea se descompune n urmtoarele instruciuni elementare:
a)
load R, citire_activ
b)
jifz R, urm
-- ramificare dac true
c)
urm:
<ateptare>
Presupunem c ntreruperea sosete ntre instruciunile (a) i (b), valoarea pus n R de (a) este
true; programul de tratare a ntreruperii pune citire_activ n false. Dup prelucrarea
ntreruperii, instruciunea (b) este executat cu R avnd valoarea true i activitatea
apelant trece n starea de ateptare n care rmne un timp indefinit.
Putem afirma, c validitatea variabilelor comune (de ex. citire_activ, nvcitire etc.,) nu poate fi
garantat dac autorizm sosirea ntreruperilor de terminare a operaiilor de intrare-ieire
n orice moment de timp. Apelarea supervizorului pentru a realiza secvena de cod
citire_nreg trebuie executat cu ntreruperile de intrare-ieire mascate.
Situaia dat este cunoscut sub numele de excludere mutual i este o consecin a execuiei
64
activitilor asincrone.
paralele
3.1. Exemple introductive
3.1.1. Administrarea tamponat a intrrilor-ieirelor
3.1.2. Comanda unui proces industrial
65
SD
CD
tm1
IF
tm2
(memorie)
td
(memorie)
(disc)
Fig.3.1. Gestionarea buferizat a unei imprimante
1)
2)
3)
4)
primitiva scriere_linie SL
scriere pe disc
citire de pe disc
CD
imprimare fizic
IF
(unitatea central)
SD
(canal 1)
(canal 2)
(canal 3)
Aceste patru activiti sunt n mare msur autonome - ele sunt executate pe
procesoare distincte, cu programe diferite.
Ele nu sunt totui independente, deoarece acceseaz obiecte comune: dou
tampoane n memorie, tm1 i tm2 i un tampon pe disc, td.
66
1)
Aciune
scriere n tm1
citire din tm1
scriere n td
citire din td
scriere n tm2
citire din tm2
Condiie
tm1 nu este plin
tm1 nu este vid
td nu este plin
td nu este vid
tm2 nu este plin
tm2 nu este vid
2)
Proces unic
Executarea unui program se traduce ntr-o suit de aciuni a1, a2,..., ai,..., cu
nceput(ai)<sfrit(ai)
O astfel de suit este numit proces secvenial sau simplu proces.
Un proces poate, deci, fi descris cu ajutorul succesiunii evenimentelor nceput(a1),
sfrit(a1), nceput(a2), sfrit(a2),...
Nume. Numele unui proces, care servete pentru identificarea lui, este de regul, un
numr intern atribuit la crearea procesului i care permite s se ajung la
reprezentarea contextului su.
Prioritate. Prioritatea proceselor permite ordonarea lor pentru alocarea procesorului.
Drepturi. Drepturile unui proces specific operaiile care i sunt permise, n scopul
asigurrii proteciei informaiei.
71
Traiectoria temporal a unui proces este definit de irul strilor contextului su.
72
(3)
Comment:
schema 1: este executat mai nti tot procesul p, apoi procesul q la fel n ntregime,
schema 2: sunt executate iruri de instruciuni ale procesului p n mod alternativ cu 73
iruri
de instruciuni ale procesului q, i tot aa pn la terminarea ambelor procese,
schema 3: executarea proceselor p i q este simultan; n acest caz sunt necesare dou
Nivelul de observare cel mai fin (cel al instruciunilor) este numit nivel de baz.
S ne situm mai nti la nivelul de observare la care, prin convenie, executarea
complet a
fiecrei dintre programele P i Q reprezint o aciune unic. Definiiile care
urmeaz sunt
pentru acest nivel.
a)
b)
2)
Conceptual, totul va avea loc ca i cum procesele s-ar derula paralel, conform
unei scheme,
numite logice sau virtuale, analogice schemei 3 din fig.3.2. Cu toate acestea,
trebuie de
menionat, c aceast schem logic reprezint doar o notaie compact pentru
mulimea
schemelor reale posibile i c ele sunt obligatoriu de forma 1 sau 2 din
considerentele
unicitii procesorului. Pentru o schem real i una virtual a unui proces dat
este pstrat
doar ordinea de succesiune a evenimentelor (nceputul i sfritul aciunii) i nu
sunt
pstrate valorile absolute ale intervalelor de timp, care le separ.
Timpul folosit la reperarea evenimentelor n schema logic este numit timp logic.
a1
a2
+------+-----------------+------+
procesul p
b1
b2
(timp logic)
+--+-------+---------+
procesul q
a1
+------+---+
+----------+
+--+--+
b1
a1
a2
+----+------+
+-----+---------+
b2
a2
Exemplul 3.9.
var e : eveniment memorizat;
n : integer init 0;
procesul pi
<debut i>;
A
n:=n+1;
B
if n<N then
ateptare(e)
else
e:=sosit
endif
<continuare i>
O analiz mai atent, analogic celei din exemplul din 3.2.2.3, ne arat c acest
program este incorect. Notnd un registru local al procesului i prin Ri,
aciunile (A) i (B) pot fi descompuse dup cum urmeaz:
load
Ri, n
ai
Ri, 1
-- adunare imediat
ci
Ri, N
--comparare imediat
br () etichet
-- salt dac Ri N
<ateptare (e)>
...
etichet :
...
Presupunem, c toate proceselor sunt n ateptarea punctelor lor de rendez-vous,
cu excepia a dou, notate prin pj i pk. Dac pj i pk vor fi executate pe
traiectoria temporal (1j, 1k, 2j,...), atunci fiecare va atribui lui n valoarea
final N-1 i se va bloca, drept rezultat toate procesele se vor bloca pentru
81
un timp indefinit.
Exemplul 3.10.
var
sinc: monitor;
fact:
boolean;
term: condiie;
procedura terminare_scriere;
begin
fact:=true;
term.semnalizare
end
procedura debut_citire;
if non fact then
term.ateptare
endif
begin
-- iniializare
fact := false
end
end sinc
Exemplul 3.11.
rendez-vous : monitor;
var n
: integer;
toi_sosii
: condiie;
procedura sosire;
begin
n := n+1;
if n < N then
toi_sosii.ateptare
endif
toi_sosii.semnalizare
end
begin
-- iniializare
n:=0
end
end rendez_vous
Programul procesului pi va fi de forma:
procesul pi
<debut i>
rendez_vous.sosire;
<continuare i>
84
85
resurse : monitor
type element : struct
lungime : integer
proc
: proces
end;
var nlibere : integer;
disp
: array[proces] of condiie;
<declaraia f.de at. f i procedurilor sale de accesare: introducere, extragere, primul>
procedura cerere(n);
begin
var e: element;
if n>nlibere then
e.lungime:=n;
e.proc:=p;
-- p este procesul apelant
introducere(e,f);
-- n ordinea de cretere a lungimii
disp[p].ateptare
endif;
nlibere:=nlibere-n
end;
procedura eliberare(n);
var e: element;
begin
nlibere:=nlibere+n;
while primul(f).lungime nlibere do
extragere(e,f);
-- elementul extras = primul (f)
disp[e.proc].semnalizare -- e.proc = procesul deblocat
endwhile;
end;
begin
-- iniializare
nlibere:=N;
f:=<vid>
end
end resurse
88
89
fich : monitor;
var scr
: boolean;
nc
: integer;
c_scr, c_cit : condiie;
procedura debut_citire;
begin
nc:=nc+1;
if scr then
c_cit.ateptare;
endif
end
procedura terminare_citire;
begin
nc:=nc-1;
if nc=0 then -- ultimul cititor a terminat
c_scr.semnalizare
endif
end
procedura debut_scriere;
begin
if scr or nc>0 then -- scriere sau citire n curs
c_scr.ateptare
endif;
scr:=true
end
procedura terminare_scriere;
begin
scr:=false;
if nc>0 then
-- prioritate
cititorilor care ateap
c_cit.semnalizare
else
c_scr.semnalizare
endif
end
begin
-- iniializare
scr:=false;
nc:=0
end
end fich
90
un mesaj dat poate fi preluat doar o singur dat dup ce a fost depozitat n
tampon,
tampon : monitor;
var n
: 0..N;
non_plin, non_vid : condiie;
<declaraii ale procedurilor introducere i
extragere>
procedura depozitare(m:mesaj);
begin
if n=N then
non_plin.ateptare
endif;
n:=n+1;
introducere(m);
non_vid.semnalizare
end
procedura preluare(var m:mesaj);
begin
if n=0 then
non_vid.ateptare
endif;
extragere(m);
n:=n-1;
non_plin.semnalizare
end;
begin
-- iniializare
n:=0;
end
end tampon
Procedurile introducere(m) i
extragere(m) definesc politica de
gestionare a tamponului i
reprezentarea intern a mesajelor.
type mesaj : <descrierea formatului
mesajelor>
pt
: 0..N-1;
var fa : array[pt] of mesaj;
top, coad: ptr;
procedura introducere(m:mesaj);
begin
fa[coad]:=m;
coad:=coad+1 mod N
end;
procedura extragere(var m:mesaj);
begin
m:= fa[top];
top:=top+1 mod N
end;
<iniializarea se va completa cu top:=0;
coad:=0;>
Schema poate fi extins pentru mai
muli productori i consumatori.
92
Drept efect, procedurile
monitorului asigur accesarea
3.4.3.3. Client-server
O aplicaie curent a comunicrilor ntre procese este relaia client-server. Un
proces server are n arj ndeplinirea unor servicii (executarea unor
programe predefinite) proceselor client. Pentru aceasta este utilizat
urmtoarea schem:
procesul server
procesul client
ciclu
poart_serviciu.emitere(cerere)
poart_serviciu.recepionare(cerere)
<executare serviciu>
...
[poart_client.emitere(rezultat)]
...
endciclu
[poart_client.recepionarere(rezultat)]
Procesul server este asociat unei pori, unde clienii i depun cererile; el este
blocat atta timp ct nu exist cereri de servicii n ateptare.
Serviciul cerut poate conine trimiterea la client a rezultatului. n acest caz
clientul trebuie s trimit serverului n cererea sa numrul unei pori la care
el se va bloca n ateptarea rezultatului.
Modelul din 3.4.2.1 (alocarea resurselor banalizate) i modelul client-server sunt
reprezentative pentru dou scheme de obinere a unui serviciu cu ajutorul
proceselor ntr-un sistem de operare: apelarea unei procedure de monitor
94
sau activarea unui proces server ciclic prin emiterea mesajelor. Alegerea
monitor;
var ..., sfr_schimb_i,...: condiie;
<declaraiile variabilelor de stare ale perifericului>
...
procedura schimb_i(<parametri>);
begin
<mascarea ntreruperilor>;
if starea preg then
<tratare eroare(perifericul nu este gata)>
endif;
lansare_transfer_i(parametri);
sfr_schimb_i.ateptare;
-- ntrerupere demascat
if starea ok then-- n timpul ateptrii
<tratare eroare(incident de transfer)>
endif;
<demascare ntreruperi>
end;
...
begin
<iniializare>
end
end perif
Procedura lansare_transfer_i pregtete programul pentru schimbul cerut (construirea
programului canalului, innd cont de parametrii schimbului) i lanseaz execuia sa
(instruciunea SIO). Procesele apelante ateapt sfritul transferului datorit condiiei
sfr_schimb_i. Sosirea unei ntreruperi, care marcheaz sfritul schimbului de tip i provoac n
95
mod automat executarea urmtoarei secvene:
if sfr_schimb_i.vid then <tratarea eroare ntrerupere care nu este ateptat>
<pentru tm 2>
procedura intrare(l:linie);
tm2[coad] := l;
coad := coad+1 mod N2
96
100
101
103
4.1.3.2. Proprieti
Proprietile principale ale sincronizrii cu ajutorul semafoarelor pot fi deduse din
cteva relaii invariante: relaii verificate iniial i care rmn neschimbate
dup executarea primitivelor P i V un numr arbitrar de ori.
Fie, pentru un semafor s:
np(s) numrul total de execuii a operaiei P(s),
nv(s) numrul total de execuii a operaiei V(s).
Are loc relaia:
s.c. = s0 np(s) + nv(s)
(1)
deoarece valoarea iniial a lui s.c. este s0, fiecare operaie P(s) scade din aceast
valoare o unitate, iar V(s) adaug 1.
Aceste operaii, fiind executate n excludere mutual, nici o modificare nu este
pierdut.
Fie nbloc(s) numrul proceselor blocate n s.f. Are loc relaia:
nbloc(s) = if s.c. 0 then 0 else s.c. endif
(2)
care poate fi de asemenea scris
nbloc(s) = max(0, s.c.)
(21)
106
Relaia (2) poate fi scris sub o alt form, care ne va fi util mai departe.
Fie nf(s) numrul de treceri de ctre procese a primitivei P(s), adic suma
numrului de executri a lui P(s) fr blocare i a numrului de deblocri
realizate de ctre V(s).
Vom avea n acest caz:
nbloc(s) = np(s) nf(s).
Introducnd aceast valoare n (21) obinem:
- nf(s) = max(-np(s), -s.c.-np(s)), sau
nf(s) = min(np(s), s.c.+np(s)).
n fine, utiliznd valoarea lui s.c. din (1), avem:
nf(s) = min(np(s), s.c.+nv(s)).
(3)
107
108
Absena blocajelor
Presupunem, c nici un proces nu se afl n seciunea critic. Vom avea n acest caz
nc = 0, sau
nf(mutex) = nv(mutex) sau nc
nf(mutex) 1+nv(mutex)
Conform relaiei (5):
nf(mutex) = np(mutex) sau
nbloc(mutex) = 0
Proprietatea b este prezent, ca i proprietatea c, deoarece nu s-a fcut nici o
ipotez despre starea proceselor, dac ele nu se afl n seciunea lor critic.
1). Seciuni critice incorporate. Blocaje
Fie dou procese p i q pentru care programul conine dou seciuni critice,
corespunztoare utilizrii a dou resurse critice distincte.
procesul p
procesul q
...
...
(1) P(mutex1)
(11)
P(mutex2)
...
...
(2) P(mutex2)
(21)
P(mutex1)
...
...
V(mutex2)
V(mutex1)
...
...
V(mutex1)
V(mutex2)
109
Dac traiectoria temporal de execuie a proceselor p i q ncepe cu (1, 11, 2, 21),
se va ajunge la o situaie n care ambele procese sunt blocate pentru un timp
(ready)
(4)
(exe)
(3)
blocat
(wait)
112
planificator
proces ales
113
Asocierea unui concret proces, care trateaz o ntrerupere. Doar acest proces se va
afla n ateptarea unei ntreruperi anume, existnd pentru aceasta o instruciune
special.
Asocierea unei operaii de deblocare (semnalizare asociat unei condiii, V la un
semafor, etc.) la o ntrerupere.
115
Problemele de mascare i de prioritate a ntreruperilor sunt tratate asociind
prioriti proceselor.
Sincronizarea
Procesele sunt sincronizate cu ajutorul monitoarelor. Gestiunea ntreruperilor
este integrat n mecanismul monitoarelor: o ntrerupere este asociat
unei condiii.
Monitoarele sunt declarate n programele proceselor; un monitor este creat la
compilarea programului, unde el este declarat, i este mai apoi utilizat
conform regulilor, definite de limbajul de programare utilizat.
4.3.1.2. Structuri i algoritmi
Din momentul crerii sale unui proces i se asociaz un numr fix (nume
intern, process handler), care servete la desemnarea lui i permite
accesarea blocului su de context. Blocul de context conine urmtoarele
cmpuri:
Csp
: zona de salvare a cuvntului de stare a programului,
Reg
: zona de salvare a registrelor generale ale procesorului,
Stare
: valoarea strii procesului (eligibil, blocat, ...),
Prio
: prioritatea procesului,
Drepturi : drepturile procesului,
Fire
: legturi de nlnuire n ierarhia proceselor,
Suc
: legturi de nlnuire n firele de ateptare (FA).
117
Stare[i]
Drepturi[i]
Prio[i]
legturi de nlnuire n FA
..
.
context n memorie
blocul contextului i
Fig.4.4. Organizarea unui FA de procese
118
Deblocare multipl
Problema deblocrii multiple poate fi rezolvat uor introducnd o primitiv nou
c.difuzare_semnal efectul creia se exprim astfel:
while c.non_vid do
c.semnalizare
endwhile
Fiind dat, c toate procesele deblocate vor testa din nou condiia i cer din nou
acces la monitor, aceast primitiv va avea evident efectul ateptat.
ntrziere de gard.
Din probleme de securitate, n special pentru tratarea blocajelor, poate fi util s
se asocieze o ntrziere de gard condiiei unui monitor. Aceast ntrziere
este egal cu durata maxim de blocare a unui proces ntr-un fir de ateptare
asociat condiiei date. La expirarea ntrzierii de gard va fi efectuat o
tratare specificat. Aceast tratare poate consta n simpla deblocare a
procesului (care va testa din nou condiia de depire) sau transferul su
ntr-un fir de ateptare special.
Fie M.c.ntrziere ntrzierea de gard asociat unei condiii c n monitorul M. Se
presupune disponibil un ceas habs, care pune la dispoziie timpul absolut.
Trebuie s adugm n programul primitivei c.semnalizare instruciunea
urmtoare:
hdeblocare[p]:=habs+M.c.ntrziere
unde hdeblocare[p] este un cmp nou al blocului de context al procesului p. Un
120
proces, numit gardian, deblocat la intervale regulate de timp parcurge
mulimea contextelor i efectueaz tratamentul specificat proceselor pentru
un dispozitiv de excludere mutual M.disp (lact), care poate lua dou valori
liber sau ocupat,
c.semnalizare:
prolog;
p:=<proces apelant>;
if non_vid(M.c.fir) then
ieire(q, M.c.fir);
cerere_disp(M, p);
cerere_disp(M, q);
eliberare_disp(M)
else
intrare(p, f_eligibil)
endif
alocare_procesor;
S ne amintim, c secvena prolog asigur salvarea contextului i intrarea n
seciunea critic, iar secvena alocare_procesor asigur alocarea procesorului
i prsirea seciunii critice.
Notm, c n primitiva semnalizare, procesul apelant p i procesul deblocat q sunt
introduse (cu ajutorul primitivei cerere_disp) n firul de ateptare pentru122
a intra
n monitor. Procesul activat prin intermediul primitivei este primul proces din
pentru blocurile contextelor sunt rezervate un numr fix de amplasamente; amplasamentele neutilizate
-o valoare special (nil) a cmpului stare; blocul este desemnat de un numr, care este numrul utilizat
pentru desemnarea procesului asociat;
amplasamentele rezervate blocurilor sunt alocate dinamic n memorie; numerele sunt alocate
proceselor de asemenea n mod dinamic i un tabel de coresponden, asociaz numrului fiecrui
proces adresa n memorie a blocului su de context.
126
f_eligibil
Cuvnt de stare
proc_al
Csp
Reg
Prio=6
p1
Registre
Csp
Reg
5
p2
Procesor
p3
p4
c.fiier
p5
p6
Cuvnt de stare
proc_al
f_eligibil
Registre
Procesor
6
p1
5
p3
p2
c.fiier
5
p5
2
p4
1
p6
129
134
de creare,
de modificare,
de cutare,
de distrugere a obiectelor.
Fiecare obiect are o reprezentare extern (n afara calculatorului) i una
intern, determinat de suportul fizic. Un obiect poate fi accesat cu
ajutorul funciilor de acces.
Problema central a administrrii informaiei const n conversia reprezentrii externe
i a funciilor de acces asociate n reprezentarea intern i funciile de acces135
corespunztoare tuturor obiectelor sistemului.
Programul unui sistem utilizeaz nume pentru a desemna obiectele acestui sistem.
Numele unui obiect este o informaie cu funcie dubl: pe de o parte permite
s se fac distincia obiectului dat de alte obiecte; pe de alt parte, el
servete ca i cale de acces la obiect, adic el poate fi interpretat n scopul
efecturii unor aciuni asupra obiectului. Numele respect anumite reguli
proprii limbajului de programare. Nume sunt identificatorii, care desemneaz
variabilele i procedurile ntr-un limbaj de programare sau fiierele ntr-un
limbaj de comand.
n cazul reprezentrii externe un identificator desemneaz un anumit obiect, care
poate fi o constant sau o informaie ce permite accesul la un alt obiect
(obiectul permite referirea unui alt obiect, fig.5.1).
Program
..
.
identificator
..
.
obiect/reper
Ri
obiect
n cazul n care obiectul este pasat ca parametru unei proceduri este suficient s fie
transmis descriptorul sau adresa acestuia: este mult mai simplu s administrezi informaii
de volum fix i cunoscut,
descriptorul constituie un punct de trecere impus pentru accesarea reperat a
obiectului i, ca rezultat, poate servi la implementarea unor controale ale accesrii, de
msurare, etc.,
descriptorul asigur un acces indirect la obiectul reperat, ceea ce permite modificarea
dinamic a cii de acces (substituirea unui obiect printr-un alt obiect) sau deplasarea unui
obiect n memorie fr recompilarea modulului surs,
141
partajarea obiectelor ntre mai muli utilizatori cu drepturi sau proceduri de accesare
diferite poate fi realizat construind tot atia descriptori, ci utilizatori exist; aceti
lexica
context
reguli de
interpretare
obiect
cale de acces
mediul
Fig.5.3. Contextul de execuie a unui proces
143
Conform specificaiilor sistemului de operare, identificatorii fiierelor pot sau nu pot
Exemplul 5.3. Cu titlu de exemplu vom indica diferite clase de obiecte, accesibile unui
proces n cursul execuiei unei proceduri, exprimat ntr-un limbaj de
programare de nivel nalt. Aceste clase difer din punct de vedere a duratei de
via, duratei legturii i modului de partajare a obiectelor.
1. Obiecte interne: acestea sunt instruciunile, care compun textul procedurii.
Ele sunt desemnate de etichetele, utilizate pentru instruciunile de
ramificare. Durat lor de via coincide cu durat de via a procedurii.
2. Obiecte locale: acestea sunt variabilele, declarate n interiorul procedurii.
Aceste obiecte sunt create la fiecare apel al procedurii i distruse la retur. n
cazul unui apel recursiv, un exemplar nou al fiecrui obiect local este creat
la fiecare apel i identificatorul su desemneaz ultimul exemplar creat
(celelalte rmnnd inaccesibile pn la returul la nivelul corespunztor).
3. Obiecte remanente i obiecte globale: acestea sunt obiectele care existau
deja la apelul procedurii i care vor supravieui la retur; durata lor de via
este fie cea a procesului (obiecte remanente), fie cea a unei proceduri, care
nglobeaz procedura dat (obiecte globale).
4. Obiecte externe: sunt obiectele construite i pstrate independent de
procedura i procesul considerat (alte proceduri, fiiere, etc.). Durata lor de
via nu depinde de cea a procedurii sau a procesului; ele pot fi create sau
distruse n mod dinamic n timpul execuiei procedurii.
5. Parametri: parametrii formali sunt identificatori, utilizai n interiorul
procedurii i care sunt legai doar n momentul apelrii. Obiectele legate de
acestea sunt numite parametri efectivi sau activi; parametrii efectivi sunt
furnizai de ctre procedura apelant sau sunt obiecte externe. Legtura
dintre parametrii formali i cei efectivi poate lua diferite forme n
145
dependen de regulile definite n limbajul de programare: apelare prin
5.1.3. Legarea
Numim legare procesul construirii unei ci de acces. Legarea obiectelor unui program
poate fi efectuat la diferite momente de via a programului n sistem:
n momentul scrierii programului. Cazul unui program scris direct n cod binar
cnd fiecare obiect este desemnat prin adresa absolut a amplasamentului,
care-l conine. Un atare program poate fi imediat executat, dar orice modificare
este dificil i conine un risc ridicat de eroare.
5.1.4. Protecia
Vom nelege prin termenul protecie mulimea metodelor i mecanismelor, care
vizeaz specificarea regulilor de utilizare a obiectelor i garanteaz respectarea
acestor reguli.
Protecia este asigurat de o combinaie de dispozitive fizice i logice. Exist legturi
strnse ntre desemnarea obiectelor i protecia lor.
Trei observaii, legate de protecie:
O modalitate simpl de a interzice unui proces orice acces la un obiect const n
suprimarea tuturor cilor de acces la acest obiect, altfel spus, de a le retrage din
contextul procesului.
Atunci cnd operaiile permise asupra unui obiect sunt specificate prin apartenena
la o clas sau un tip, este posibil verificarea prealabil execuiei (adic n
momentul compilrii sau editrii legturilor) dac obiectul este utilizat conform
regulilor specificate,
n cazul n care verificarea este fcut n momentul execuiei, o procedur de acces
faciliteaz implementarea verificrii i reduce riscul unor erori. Aceast
procedur poate fi la nivel logic (un interpretor, de exemplu) sau fizic (un
dispozitiv va aproba trecerea mai departe).
147
a faptului, c mai multe procese pot avea, n aceleai circumstane, acelai set
de drepturi.
Pentru a ine cont de aceste dou aspecte a fost introdus noiunea de domeniu de
protecie. Aceast noiune este un caz particular al noiunii de mediu - un
domeniu definete:
Domeniile de protecie pot fi definite prin mai multe modaliti; exemplificm cteva
mai jos.
un domeniu pentru sistemul de operare, unul pentru fiecare utilizator,
un domeniu pentru fiecare subsistem, care realizeaz o funcie particular,
un domeniu pentru fiecare mediu (definit, de exemplu, de cuplul (procedur, catalog
curent)).
Alegerea depinde de funciile cerute i, cel mai important, de mecanismele
disponibile.
Presupunem pentru nceput, c exist un numr constant de obiecte. Regulile de
protecie pot fi reprezentate sub forma unui tablou bidimensional, numit
matricea drepturilor. Acest tablou conine cte o linie pentru fiecare domeniu Di
i cte ofiierul
coloan
fiecare
Oj (notm, c
1 pentrufiierul
2 obiect
periferic
D1 domeniile,
D2 fiind obiecte
D3
apar de <citire,
asemenea
i n coloane).
drepturile
pe
Dparticulare,
<citire, scriere,
scriere,
<alocare, Caseta
<> (i, j) conine
<apelare>
<schimbare
1
care leexecutare>
are un proces, executare>
care se execut
n domeniul Di, asupra unui obiect
Oj.
retragere>
drepturi>
D2
D3
<citire, scriere,
executare>
<citire, scriere,
executare>
<citire, scriere,
executare>
<citire, scriere,
executare>
<cerere,
eliberare>
<>
<apelare>
<>
<apelare>
<nil>
<apelare>
<>
149
Notaia nil semnific faptul, c obiectul Oj nu figureaz n contextul domeniului Di,
151
fiier
program
...
test
...
...
...
doc
Christy
doc
program
Eugen
...
doc
program
152
fiier
(a) pn la asociere
descriptor
de flux
fiier
tampon
descriptor
de fiier
procedur
de acces
perif
tampon
descriptor
de periferic
procedur
de acces
program interpretat
rezultat
2. Program compilat
program surs
translator
program obiect
(adrese relative)
ncrctor
date
program obiect
(adrese absolute)
calculatorul
rezultatul
156
6. Gestiunea fiierelor
6.1. Noiuni generale
6.1.1. Funciile unui sistem de gestiune a fiierelor
6.1.2. Organizarea general a unui sistem de gestiune a fiierelor
6.2. Organizarea logic a fiierelor
6.2.1. Introducere
6.2.2. Acces secvenial
6.2.3. Acces direct
6.3. Organizarea fizic a fiierelor
6.3.1. Implantare secvenial
6.3.2. Implantare non contigu
6.3.3. Alocarea memoriei secundare
6.4. Realizarea funciilor de acces elementar
6.4.1. Organizarea descriptorilor
6.4.2. Crearea i distrugerea
6.4.3. Deschiderea i nchiderea
6.4.4. Acces elementar la informaii
6.5. Securitatea i protecia fiierelor
6.5.1. Despre securitate i protecie
6.5.2. Securitatea fiierelor
6.5.3. Protecia fiierelor
6.5.4. Autentificarea n Windows NT
6.6. SGF din sistemul de operare Unix
6.6.1. Caracteristici generale
6.6.2. Organizarea datelor
158
6.6.3. Funcionarea i utilizarea
Aceste funcii sunt materializate prin operaiile de baz, prezente n toate SGF.
Trebuie s adugm aici diverse funcii detaliile crora depind de organizarea
sistemului de gestiune: specificarea i consultarea drepturilor de acces,
consultarea caracteristicilor (data crerii, modificrii, etc.), operaii asupra
numelui (schimbarea numelui, etc.).
Pstrarea fiierelor i realizarea funciilor de acces impune SGF s aib n arj:
gestiunea suporturilor fizice, ascunznd unui utilizator obinuit detaliile organizrii fizice,
securitatea i protecia fiierelor, adic garantarea integritii lor n caz de accident sau de rea voin i
respectarea
regulilor stabilite de utilizare (drepturi de acces, condiii de
partajare).
ntr-un sistem de operare SGF joac rolul central, deoarece el trebuie s comande
cea mai mare parte a informaiilor utilizatorilor, ct i a sistemului propriu-zis.
SGF are legturi strnse cu sistemul de intrare-ieire, este adesea convenabil
conceptual s nu se fac distincie ntre fiiere i unitile periferice ca suport
160
surs sau destinaie a informaiei n timpul execuiei unui program.
adres logic
adres fizic
161
Nume externe
i locale
Interfaa
utilizatorului
legarea numelor
Interpretarea numelor
locale
Interpretarea numelor
externe
Nume
interne
Realizarea
funciilor de acces
logic
Adrese
logice
Realizarea
funciilor de acces
fizic
Adrese
fizice
Alocarea
memoriei
secundare
Realizarea
I-E
fizice
Exemplul 6.1.
Fiier secvenial de caractere.
Fiecare nregistrare a fiierului posed urmtoarele atribute:
(numr de ordine, <ntreg>)
(coninut, <caracter ASCII>)
Restricia este, c articolele fiierului sunt ordonate, articolele succesive
avnd drept numr de ordine valori ntregi consecutive.
n reprezentarea fiierului atributul numr de ordine nu este reprezentat
explicit, dar este definit de ordinea articolelor. Mai mult, atributul
valoare este reprezentat doar prin valoarea sa, iar fiierul este
reprezentat sub forma unei suite de caractere.
Utilizarea atributului numr de ordine permite specificarea diferitor funcii
de acces. De exemplu, dac ne vom limita la consultare:
citire(urm) citete caracterul, care urmeaz dup o poziie curent
specificat (poziia ultimei lecturi); pune valoarea caracterului n urm.
citire(i, c) citete caracterul cu numrul i; valoarea acestuia este pus n
c.
164
Exemplul 6.2.
166
f(cheie2)= f(cheie3)
articol 2
al2=f(cheie2)
cheie 1
cheie 2
funcie de
dispersare
f(cheie1)
articol 1
al1=f(cheie1)
cheie 3
tratare
coliziuni
articol 3
al 3
170
Fiiere indexate
Metodele accesului indexat sunt utilizate n cazul cnd mulimea cheilor este
ordonat. Relaia dintre cheie i adresa logic este materializat printr-un tabel,
numit tabel al indicilor, n care ordinea cheilor este semnificativ. Schema
principiului organizrii indexate este dat de fig.6.4
Schemele utilizate efectiv n practic sunt mai complexe pentru a permite:
171
tabelul
indicilor
referinelo
r
adres
logic
tabelul
indicilor
autorilor
nregistrr
i
tabelul
indicilor
editorilor
tabelul
indicilor
anilor
Fig.6.6. Organizarea unui fiier inversat
173
174
178
Informaii despre structura logic. Aici pot fi plasate informaiile care permit
trecerea de la structura logic la structura fizic a fiierului. De exemplu, n
cazul nregistrrilor de lungime fix este convenabil s se aleag lungimea
nregistrrii multiplu sau submultiplu al lungimii blocului fizic. Raportul lungimea
blocului/lungimea nregistrrii, adesea numit factor de bloc, figureaz n cadrul
descriptorului.
180
specificrile interfeei,
181
6.4.2.1. Crearea
Specificarea interfeei
Parametrii furnizai sunt:
numele fiierului
tipul
lungimea
starea iniial
(opional)
(opional)
(opional)
Cel mai frecvent, parametrii starea iniial i lungimea nu sunt furnizai, avnd valori
implicite: lungimea = 0, fiierul este nchis, lista de acces predefinit.
Operaii
s se creeze un descriptor pentru fiier, obinem astfel un nume intern,
dac numele furnizat este un nume extern, s se creeze o intrare a acestui nume n
catalogul curent,
s se aloce memorie fiierului; chiar dac lungimea sa este nul, un fiier conine un
antet, care ocup primul su bloc,
s se iniializeze descriptorul cu informaiile de localizare, lungime, protecie (lista
drepturilor iniiale de acces),
dac descriptorul nu se conine direct n catalog, s se introduc o intrare n catalog
cu numele intern al fiierului (adresa descriptorului).
Cazuri anormale
nume furnizat incorect (incorect construit sau care desemneaz un fiier deja
existent);
memorie insuficient n memoria secundar.
Fiierul nu poate fi creat i situaia anormal este semnalat.
182
6.4.2.2. Distrugerea
Specificarea interfeei
Unicul parametru furnizat este numele fiierului. Efectul operaiei este de a suprima
orice acces ulterior la fiier, invalidnd toate numele acestuia i elibernd toate
resursele pe care fiierul le utilizeaz (intrri n tabele, memorie).
Operaii
s se elibereze toat memoria, care a fost alocat fiierului;
s se elibereze memoria alocat descriptorului i numele intern s devin reutilizabil;
suprimarea numelui extern al fiierului n catalogul, care-l include, de asemenea,
dac este cazul, n tabelul numelor locale.
Aceast ultim operaie poate fi destul de delicat, dac exist mai multe ci de
acces la fiier.
Poate fi utilizat una din urmtoarele soluii:
dac cile multiple de acces sunt legturi, nu se va lua nici o msur; un acces
ulterior prin una din aceste legturi va conduce la numele extern. Inexistena
fiierului va fi detectat (cu excepia cazului n care un fiier cu acelai nume a
fost creat n intervalul de timp dat);
dac cile multiple de acces sunt nume (ceea ce se poate produce, dac structura
catalogului nu este o arborescen) vor fi utilizate sau legturi inverse (metod
costisitoare), sau un contor al referinelor pstrat n descriptor, care duce
evidena numrului cilor de acces. Un fiier poate fi distrus doar dac exist o
183
singur cale de acces. Aceast soluie este utilizat, de exemplu, n sistemul
Unix.
6.4.3.1. Deschiderea
Specificarea interfeei
Parametrii operaiei de deschidere sunt:
numele fiierului, condiiile de utilizare: modul de acces (citire, scriere, execuie,
etc.), procedurile de acces (secvenial, direct, sincron, etc.), parametrii de
transfer (tampoane, etc.)
Scopul - de a pune un fiier n starea n care accesul este posibil conform modului
specificat. Aceast operaiei este de dubl utilitate pentru SGF:
Protecie. SGF poate s controleze:
la deschidere, dac utilizatorul este autorizat s acceseze fiierul n condiiile
specificate,
la fiecare accesare a fiierului, dac condiiile de acces sunt compatibile cu cele
specificate la deschidere,
n caz de partajare, dac condiiile de accesare ale utilizatorilor sunt reciproc
compatibile.
Eficien. SGF poate s accelereze accesul la fiierele deschise, aducnd n memorie
descriptorii lor, tabelele de implantare i textele procedurilor de acces. Fiierul
nsui poate fi transferat, eventual, pe un suport cu acces mai rapid; dac el se
afl pe un suport amovibil nemontat, montarea este necesar.
Operaii
La deschidere vor fi realizate urmtoarele operaii:
localizarea fiierului i, eventual, transferarea lui pe un suport mai rapid,
controlarea dreptului utilizatorului de a deschide fiierul n modul specificat,
crearea unui descriptor local i atribuirea unui nume local,
184
alocarea eventual a memoriei pentru zonele tampon de intrare-ieire.
Cazuri anormale
6.4.3.2. nchiderea
Specificarea interfeei
Unicul parametru necesar este numele fiierului. Efectul operaiei este de a interzice
orice acces ulterior la fiier i de a-l transfera ntr-o stare coerent i stabil,
redndu-i definitiv toate modificrile operate n perioada ct a fost deschis.
Operaii
Descriptorul fiierului este actualizat (dac aceasta nu a fost fcut anterior) pentru a
nregistra definitiv modificrile operate n perioada ct a fost deschis;
descriptorul local este suprimat, numele local putnd fi reutilizat. Memoria
ocupat de zonele tampon i procedurile de intrare-ieire este eliberat, dac ea
a fost alocat doar pentru perioada de deschidere a fiierului. Fiierul este,
eventual, transferat pe suportul su de origine; o cerere de demontare este
trimis dac suportul de origine este amovibil.
Unele sisteme opereaz cu fiiere temporare, adic fiiere desemnate doar de
numele local. La nchiderea unui astfel de fiier, utilizatorul are de ales ntre
dou posibiliti:
s catalogheze fiierul, atribuindu-i un nume extern; fiierul va fi n acest caz salvat.
(implicit) s nu fac nimic, fiierul fiind distrus n acest caz.
Cazuri anormale
Pentru garantarea coerenei fiierului, n timpul nchiderii nu trebuie s aib loc
operaii de transfer (a descriptorului sau a fiierului).
185
186
187
189
7. Alocarea resurselor
7.1. Noiuni generale
7.1.1. Definiii
7.1.2. Probleme n alocarea resurselor
7.1.3. Exemple de sisteme cu fire de ateptare
7.2. Modele pentru alocarea unei resurse unice
7.2.1. Alocarea procesorului
7.2.1.1. Introducere
7.2.1.2. Prim sosit, prim servit
7.2.1.3. Cererea cea mai scurt servit prima
7.2.1.4. Caruselul i modele derivate
7.2.2. Disc de paginare
7.3. Tratarea blocrilor
7.3.1. Enunul problemei
7.3.2. Algoritmi de prevenire
7.3.2.1. Algoritmi de profilaxie
7.3.2.2. Algoritmul bancherului
7.3.3. Algoritmi de detectare i tratare
7.4. Exerciii la capitolul 7
n acest capitol prezentm principiile de alocare a resurselor ntr-un sistem
informatic. Sunt abordate dou aspecte:
utilizarea rezultatelor teoriei firelor de ateptare pentru analiza ctorva modele simple ale sistemelor
informatice, n special pentru alocarea procesoarelor;
prezentarea unor metode de evitare a impasurilor (blocarea reciproc a mai multor procese rezultat din
alocarea eronat a unor resurse comune).
190
O resurs este alocat unui proces dac procesul poate utiliza resursa, folosind
procedurile ei de acces. Legarea unei resurse de un proces poate fi implicit sau
explicit. n primul caz, este suficient trecerea procesului ntr-o anumit stare
pentru ca el s devin candidat la utilizarea resursei; n cel de-al doilea caz,
solicitarea trebuie s fie formulat explicit sub forma unei cereri adresate unui
alocator al resursei.
Alocatoarele i cererile pot lua forme diverse: de exemplu, un alocator poate fi un
proces cruia cererile i sunt transmise prin emiterea unor mesaje; sau chiar un
monitor o procedur a cruia servete la emiterea unor mesaje.
Reacia unui alocator la o cerere poate de asemenea fi diferit: alocarea resursei
solicitate, refuz cu sau fr blocarea procesului solicitant. Terminarea utilizrii
unei resurse de ctre un proces poate la fel lua diferite forme: eliberarea
191
explicit sau implicit a resursei sau retragerea forat a resursei de ctre
alocator.
Exemplul 7.1.
Procesorul. Procedurile de acces la procesor sunt
determinate de instruciuni i cuvntul de stare; alocarea procesorului unui
proces se face prin ncrcarea cuvntului su de stare. Nu exist cereri explicite:
pentru a fi n stare s depun o astfel de cerere, procesul ar trebui s posede
deja procesorul obiectul cererii! Un proces devine n mod implicit candidat la
utilizarea procesorului din momentul cnd trece n starea eligibil. Alocatorul
const din dou proceduri: planificatorul i dispecerul.
Exemplul 7.2.
Memoria principal. Alocarea memoriei principale pune n
funcie dou mecanisme distincte:
Alocarea explicit: este mecanismul de obinere a unei zone de memorie fie de ctre
un program n curs de execuie, fie de ctre sistemul de operare naintea
ncrcrii unui program nou.
Alocarea implicit: pentru acest mod de alocare cererea este emis n momentul
executrii unei instruciuni, cnd adresa emis de procesor este adresa unui
amplasament nealocat procesorului. Acest mecanism st la baza realizrii
memoriei virtuale.
Exemplul 7.3.
Memoria secundar. Memoria secundar este alocat prin
blocuri banalizate de lungime fix. Alocarea i eliberarea poate fi explicit sau
implicit (de exemplu, extinderea unui fiier provoac emiterea unei cereri
pentru un bloc suplimentar).
Exemplul 7.4.
Linii de comunicaie. Dac mai multe procese partajeaz
serviciile unui dispozitiv de intrare-ieire comun (o imprimant sau o linie de
192
comunicaie, de exemplu), cererile sunt transmise sub form de mesaje unui
proces, numit server, care administreaz acest dispozitiv. Fiecare mesaj conine
prioritate variabil n timp: funcie de timpul de ateptare scurs, de serviciul deja acordat,
etc.
Variabila principal, care prezint interes este timpul mediu de rspuns. Cererea este
caracterizat de repartiia intervalelor de sosire i de timpul de servire.
Din practic este cunoscut, c un utilizator suport cu att mai greu ateptarea
servirii unei cereri cu ct lucrul trimis de el este de durat mai mic; aceasta
este adevrat att pentru lucrul interactiv, ct i pentru cel de fond. Din aceste
considerente metodele de alocare a procesorului au drept scop reducerea
timpului mediu de ateptare a lucrrilor celor mai scurte.
195
Ele difer conform modului de estimare a duratei lucrrilor i n dependen de
tm
Var(ts
)
1
=ts
Fig.7.2. Timpul mediu de rspuns pentru
Variaia timpului mediu de rspuns f de ncrcarea sistemului i de variaia timpului
de servire.
Putem remarca:
2[1 (t s )]
tm(ts) =
cu
(7.2)
2
2
t m (1 C t )
pentru valori mici ale ts, unde (ts) poate fi neglijat:
2
s
tm(ts)
(7.3)
2
2
t m (1 C t )
pentru valori mari ale
(ts) este aproape de tms, fie :
2(1 ts,unde
)2
s
tm(ts)
(7.4)
197
CSSP
ieire
intrar
e
proc_ale
f_eligibil
s
Fig.7.4. Alocarea procesorului: metoda
caruselului
Caruselul este un exemplu de disciplin cu retragere. Ea poate fi considerat o
aproximare a disciplinei cel mai scurt primul pentru cazul cnd durata
execuiei lucrrilor nu este cunoscut anticipat. Este utilizat n sistemele
interactive; valoarea cuantei este aleas astfel ca majoritatea cererilor
interactive s poat fi executate n timpul unei cuante. Evident, valoarea199
cuantei
trebuie s fie net mai mare dect durata comutrii procesorului.
Analiza este mai simpl n cazul limit ( 0, iar timpul de comutare a procesorului
neglijat)
- procesor partajat (PP), totul are loc ca i cum fiecare proces dispune imediat de un
procesor viteza de procesare a cruia este cea a procesorului real, divizat la
numrul curent al proceselor servite:
ta(ts) = ts/(1-),
iar timpul de rspuns este
t(ts) = ts/(1-).
Modelul procesorului partajat realizeaz o alocare echitabil, n care timpul de aflare
a unui proces n sistem este proporional cu durata serviciului cerut.
O mbuntire a modelului caruselului, chemat s reduc timpul de servire a
lucrrilor de scurt durat, este caruselul multinivel.
Acest model conine n fire de ateptare F0, F1,..., Fn-1. Fiecrui fir Fi i este asociat o
cuant proprie i, valoarea creia crete odat cu i. O lucrare din Fi este servit
doar dac firele de numr inferior lui i sunt vide.
Dac o lucrare din Fi i-a epuizat cuanta sa fr a se termina, ea intr n firul Fi+1;
lucrrile din Fn-1 se ntorc tot aici. Lucrrile noi intr n F0 (fig. 7.5).
200
t(ts)
t(ts)
CM PP
CM
PP
CSSP
CSSP
intrare
procesor
Fig. 7.5. Carusel cu mai multe niveluri
ieire
ts
ts
FIFO prim sosit prim servit PP procesor partajat
CSSP cerere scurt servit prima CM carusel
multinivel
Fig. 7.6. Compararea disciplinelor de alocare a procesorului
201
8. ADMINISTRAREA MEMORIEI
8.1. Concepte de baz
8.1.1. Memorie virtual
8.1.2. Probleme de alocare a memoriei
8.1.3. Alocarea dinamic a memoriei
8.2. Comportamentul programului
8.2.1. Comportamentul ntr-o memorie virtual liniar
8.2.2. Comportamentul programelor segmentate
8.3. Partiionarea memoriei fr reamplasare
8.3.1. Metoda du-te vino simpl
8.3.2. Partiionarea memoriei
8.4. Alocarea dinamic a zonelor de memorie
8.4.1. Mecanisme de reamplasare dinamic
8.4.2. Algoritmi de alocare
8.5. Principiile i mecanismele de baz ale paginaiei
8.5.1. Paginarea unei memorii liniare
8.5.2. Paginarea unei memorii segmentate
8.5.3. Implementarea paginrii
8.6. Gestiunea memoriei virtuale paginate
8.6.1. Parametrii unei discipline de alocare
8.6.2. Algoritmi de reamplsare cu partiie fix
8.6.3. Algoritmi cu partiie variabil. Reglarea arjei
8.7. Gestiunea unei memorii cu mai multe nivele ierarhice
8.7.1. Memorii ierarhice
8.7.2. Administrarea transferurilor
8.8. Resurse tehnice de administrare a memoriei n procesoarele Intel
203
obiecte
nume
desemnare
legare
memorie
virtual
alocarea
memoriei
memoria
fizic
2)
configuraia 1
configuraia 2
Fig.8.1. Execuie cu reacoperire
205
decuparea n segmente este realizat explicit de ctre programator, care specific arborele de
reacoperire,
2. Alocare dinamic
- corespondena virtual-fizic variabil n timp
Alocarea memoriei fizice
pe zone (de lungime variabil)
pe pagini (de lungime fix)
Scopul unei discipline de alocare dinamic a memoriei este s asigure, c la orice
instan de timp informaia necesar pentru execuia instruciunii curente este
accesibil procesorului imediat, adic se afl n memoria principal. O disciplin
de alocare trebuie s specifice urmtoarele momente:
Cnd va fi ncrcat un obiect n memoria principal?
atunci cnd este necesar (ncrcare la cerere),
nainte de a fi necesar (prencrcare).
Unde va fi ncrcat acest obiect?
dac exist spaiu liber suficient, n care amplasamente (problema amplasrii),
n caz contrar, care obiecte s fie ntoarse n memoria secundar (problema
reamplasrii).
Criterii pentru evaluarea i compararea algoritmilor de alocare a memoriei:
legate de utilizarea memoriei, msurat, de exemplu, prin rata spaiului
neutilizat,
legate de accesarea informaiei, cum ar fi timpul mediu de acces sau rata206
paginilor absente,
capacitatea memoriei
Fig.8.3.
Intervalul mediu ntre dou absene de
pagini n funcie de capacitatea memoriei
210
memoria
fizic
A
C
programe
1) Alocarea memoriei
A(1)
Unitatea
Activit central
Canalul
i
B(2)
B(2)
A(1)
C(1)
C(1)
B(2)
programele
(zone)
ncrcare
salvare
2) Cronograma
Fig.8.6.activitilor
Sistem cu partiii fixe
211
Atunci cnd un program este transferat din sau spre zona sa, un alt program dintr-o
alt zon poate fi executat; bineneles este necesar un procesor de intrare-
212
213
Segmentare.
Segmentarea poate fi considerat o extensie a adresrii cu ajutorul registrelor de
baz, care evit problemele realocrii acestor registre, atunci cnd este
necesar schimbarea segmentului. Fiecrui segment i este asociat un
descriptor, care conine printre altele, adresa sa de origine i capacitatea;
descriptorii sunt aranjai ntr-un tabel, desemnat de un registru special. Calculul
adresei fizice corespunztoare adresei segmentate (s, d) este urmtorul:
desc := tab_desc[s];
if d < desc.capacitate then
adr.fiz.:= desc.orig+d
else
<eroare> - deviere tratat de sistem
endif
Orice accesare a memoriei cere o accesare suplimentar pentru citirea descriptorului.
Pentru sporirea eficienei acceselor este folosit un dispozitiv de accelerare,
constituit dintr-o memorie asociativ de capacitate mic (de obicei, cu 8 sau 16
intrri), n care sunt pstrai descriptorii segmentelor la care au fost fcute cele
mai recente referine, numerele acestor segmente servesc drept chei de
referin. La o accesare a memoriei, descriptorul segmentului este cutat mai
nti n memoria asociativ, tabelul segmentelor fiind consultat doar n cazul
unui eec.
Memoria asociativ funcioneaz ca o memorie cache pentru descriptori, proprietatea
214
de localizare asigurnd o rat nalt a succeselor.
217
B2
B3
B4
B3
B4
liber
liber
liber
Liber
Liber
liber
Baz Lungime
Lucrri
Lucrri
Sistem
rezident
Sistem
rezident
dup terminarea T2
La unele calculatoare (de exemplu, DEC PDP-10), zonele cu programe (care nu pot fi
modificate) i cu date erau separate pentru fiecare lucrare cu ajutorul unui
registru de baz distinct pentru fiecare zon. Aceasta permitea s fie redus
lungimea zonelor alocate i cantitatea informaiilor transferate (deoarece zonele
cu programe nu trebuie salvate), i d posibilitatea partajrii programelor ntre
mai multe lucrri.
Unele sisteme (de exemplu, CDC, Univac) la terminarea fiecrei lucrri efectuau o
defragmentare a memoriei pentru a pstra un spaiu liber unic; imaginile
registrelor baz-limit sau tabelul segmentelor trebuie rennoite pentru lucrrile
deplasate (fig.8.10).
liber
liber
Liber
Lucrri
Sistem
rezident
Sistem
rezident
Baz Limit
dup terminarea T2
8.4.2.3. Concluzii
Concluzionnd aceast scurt trecere n revist a metodelor de alocare a
memoriei pe zone insistm asupra faptului, c nu exist metode optimale,
oricare ar fi criteriul de optimalitate ales (utilizarea memoriei, timpi de
execuie, etc.), pentru toate situaiile i este necesar s se cunoasc,
mcar n linii generale, caracteristicile cererilor naintea alegerii unui
algoritm.
Limitele metodei alocrii pe zone rezult din restricia contiguitii zonelor
alocate. Drept rezultat, amplasamentele libere nu sunt resurse banalizate
deoarece, un segment logic nu poate fi ncrcat n dou zone libere, care
nu sunt vecine chiar dac spaiul total este suficient. Reorganizarea
memoriei rmne o operaie prea costisitoare pentru a putea fi practicat
frecvent.
Ideea, care a condus la introducerea paginaiei, este de a banaliza resursa
memorie, alocnd-o prin uniti de lungime fix i nu obligator contigue.
Rmne doar s rezolvm problema adresrii (este necesar echivalentul
registrului de baz pentru fiecare unitate de alocare) i s gsim un
compromis n alegerea lungimii acestei uniti.
222
Funcie de
paginare
npf
1)
Memorie asociativ. O memorie asociativ, care are cte o intrare pentru fiecare
pagin fizic, conine pentru fiecare intrare numrul paginii virtuale, care este
amplasat n pagina fizic respectiv. Acest principiu a fost utilizat n primul
calculator cu paginaie (Atlas), care avea 32 pagini fizice (fig.8.12, a). Preul
foarte mare al acestei metode a defavorizat extinderea principiului pentru
memorii de capacitate mai mare. Totui, ideea utilizrii unor mici memorii
asociative a fost preluat n calitate de mecanism de accelerare.
adres virtual
adres virtual
1)
eec
npf
adres fizic
Dac nu (cazul cel mai frecvent), ncrcarea unui obiect partajat fixeaz n
mod definitiv amplasarea sa, care trebuie s fie aceeai n toate
memoriile virtuale. Este necesar, deci, s fie rezervate n fiecare memorie
228
virtual adrese fixe, definite prin convenie pentru fiecare obiect partajat.
Acesta este cazul componentelor sistemului de operare, partajate de
229
Este mai puin costisitor s fie reamplasat o pagin, care nu a fost modificat n
toat perioada ncrcrii sale (pagin curat), dect una care a suferit
modificri (pagin murdar). O pagin curat posed o copie n memoria
secundar i nu este necesar s fie salvat. Indicatorul modif[p], ntreinut n
mod automat, permite aplicarea acestui criteriu.
2) Pagini partajate
Este preferabil ca o pagin, utilizat de un singur utilizator s fie nlocuit cu o
pagin partajat ntre mai multe procese.
3) Pagini cu statut special
n unele cazuri este de dorit s se acorde temporar unei pagini un statut special,
care ar proteja-o de nlocuire. Acesta este cazul paginilor utilizate ca bufere
de intrare-ieire pe durata transferului.
231
232
Algoritmul celei de-a doua anse sau FINUFO (First In Not Used, First O
Este o aproximare (foarte brutal) a LRU.
Fiecrei pagini fizice este asociat un bit de utilizare U, pus n 1 atunci cnd are loc
o referire a paginii logice pe care o conine.
Paginile fizice sunt ordonate ntr-un fir circular i un pointer ptr indic ultima
pagin fizic ncrcat. Algoritmul poate fi descris dup cum urmeaz:
ptr := urmtorul(ptr);
while U[ptr] 0 do
U[ptr] = 0;
ptr := urmtorul(ptr);
endwhile;
victima := ptr;
Pointerul se deplaseaz pn la prima pagin fizic cu bitul U zero, iar bitul U egal
cu 1 al paginilor ntlnite n drum este pus n 0.
Acest algoritm mai este numit algoritmul ceasului (Clock), deplasarea
pointerului fiind asemnat cu cea a acelor de ceasornic.
Punerea n 1 a bitului U atunci cnd are loc o referire poate fi realizat cu ajutorul
unui mecanism hardware sau software.
234
235
inclusiv
mecanismele de susinere a memoriei virtuale i mecanismele de comutare a lucrrilor. n
afar de aceasta, n modul protejat pentru fiecare lucrare procesorul i386 poate emula
procesoarele 8086 i 286, care se vor numi n acest caz procesoare virtuale. n aa fel, n
regimul multitasking modul protejat procesorul i386 lucreaz ca un set de procesoare
virtuale cu memorie comun.
Regimul procesorului virtual i86, care este numit V86, susine organizarea
paginat a memoriei i multitaskingul. Din aceast cauz lucrrile,
care sunt executate n modul V86 folosesc aceleai mijloace de
protecie reciproc a lucrrilor i a SO de lucrrile utilizatorului, ca i
lucrrile, executate n mod protejat i386.
Comutarea procesorului i386 din modul real n protejat i invers are loc
prin simpla executare a instruciunii MOV, care modific bitul de mod n
unul din registrele de control ale procesorului.
Comutarea n modul V86 are loc analogic modificnd valoarea unui
indicator anume ntr-un alt registru.
239
242
243
Organizarea logic
Organizarea fizic
Operaii cu fiierele
Intrri-ieiri logice i gestiunea fluxurilor
Schema general
Mediul de execuie
ncrcarea unui program
Tratarea erorilor de execuie
245
2)
246
247
Aceast schem poate fi generalizat: dac vom admite c o main poate utiliza primitive
furnizate de orice main de nivel inferior vom obine schema (b), iar dac unica
restricie impus grafului de dependen este lipsa circuitelor, vom avea schema (c) n
care mainile sunt repartizate pe nivele de abstractizare: o main de nivel i (i>0)
utilizeaz doar maini inferioare nivelului i: maina de la nivelul 0 (de baz) nu utilizeaz
nici o alt main.
n practic, metoda conceptului de descenden nu este niciodat utilizat n mod absolut:
procesele conin iteraii, iar la definiia unor maini noi se va ine cont de experiena
celui care o elaboreaz ca i de existena mainilor deja realizate. Drept rezultat, pentru
o problem ct de ct serioas este practic imposibil de propus apriori specificaiile
detaliate ale interfeei: elaborarea specificaiilor finale se bazeaz pe rezultatele unor
experimentri cu prototipurile pariale ale lor.
Indiferent de maniera prin care se ajunge la noiunea de structur ierarhic, aceasta prezint
o serie de avantaje, care rezult din independena introdus de abstractizare:
Noiunea de obiect
Decompoziia ierarhic n maini abstracte nu acoper toate aspectele structurrii sistemelor.
n particular, pot aprea probleme atunci cnd unele situaii sau elemente trebuiesc
create ori distruse n mod dinamic, sau cnd vrem s descriem elemente, care posed
proprieti comune.
Pentru a facilita luarea n consideraie a acestor aspecte este introdus instrumentul de
structurare obiect.
Un obiect este definit cu ajutorul urmtoarelor atribute:
o stare, care este definit n orice moment de timp i poate evolua pe parcursul
timpului,
Interfee i specificri
Vom introduce noiunea de interfa i tehnicile utilizate pentru specificarea interfeelor. Ne
vom limita aici la interfeele pentru care mecanismul de activare este apelarea.
O interfa este asociat unei maini abstracte sau unei clase de obiecte. Ea conine doar trei
tipuri de informaii, accesibile utilizatorului mainii sau obiectului:
- structuri de date,
- proceduri,
- o mulime de reguli de utilizare a datelor i a procedurilor.
Regulile de utilizare constituie un mod de ntrebuinare a structurilor de date i procedurilor.
Ele exprim restriciile utilizrii lor, i pot lua diverse forme:
- restricii de accesare a datelor (numai citire, de exemplu),
- restricii, legate de ordinea de execuie a procedurilor,
- restricii, care afecteaz execuia simultan a procedurilor sau accesarea simultan a
datelor.
Problema formulrii specificrilor unei interfee nu are nc o soluie general satisfctoare.
Doar o parte a specificrilor poate fi exprimat in mod formal i, deci, exist
posibilitatea unor validri automate: acestea sunt specificrile tipurilor variabilelor i a
parametrilor procedurilor. Pentru a specifica efectul unui apel de procedur sunt utilizate
dou tipuri de tehnici:
- mecanismul pre- i post-condiiilor,
- echivalena cu o alt expresie a algoritmului procedurii.
i n cazul exprimrii restriciilor de utilizare nu exist soluii universale. n multe cazuri este
posibil reprezentarea evoluiei unei maini cu ajutorul unui automat finit, trecerile
250dintro stare n alta fiind asociate apelurilor succesive ale interfeei procedurilor.
251
Comenzi predefinite
Un oarecare numr de comenzi de baz sunt predefinite n sistem. Orice program
executabil, creat de utilizator sub form de fiier poate fi executat ca i o
comand. Vom avea n acest caz:
<nume comand>::=<nume comand predefinit>|<nume fiier executabil>
Cu titlu de exemplu, o list de comenzi pentru crearea i depanarea n limbajul de asamblare:
1)
editare fsurs -- editarea programului surs
s se asigure posibilitatea modificrii unui fiier fsurs care conine textul programului (sau
s se asigure posibilitatea crerii lui, dac acesta nu exist) cu ajutorul unor comenzi
interne, definite de un editor interactiv, furnizat de sistem, detaliile de funcionare ale
cruia nu sunt specificate aici.
2)
asamblare fsurs fobiect -- asamblare
s se asambleze programul din fsurs i s se plaseze codul obiect n fobiect.
3)
fobiect fdate frezultat
-- executare
s se execute programul coninut n fiierul fobiect citind datele din fiierul fdate pasnd
rezultatele n fiierul frezultat.
4)
depanare
-- depanare interactiv
atunci cnd o eroare este detectat s se examineze starea variabilelor, s se modifice
aceast stare, s se stopeze sau s se reia executarea programului curent. Aceste
aciuni sunt comandate de instruciuni interne sistemului de depanare i nu le vom
253
specifica aici.
Accesul la nregistrri
Se face prin intermediul a dou primitive citire_secv i sriere_secv:
citire_secv(f,dest):
-- dest semnific tamponul destinaie
if sfr(f) then
<eroare>
-- nu avem ce citi
else
dest:=<nregistrare desemnat de ptr(f)>
deplasare(f)
endif
Efectul funciei deplasare(f) este de a-l impune pe ptr(f) s puncteze pe nregistrarea
urmtoare a fiierului. Dac ptr(f) desemna ultima nregistrare el va rmne neschimbat
i sfr(f) este pus n true.
scriere_secv(f,orig): -- orig semnific tamponul origine
if mod(f) = numai citire then <eroare>
else
if sfr(f) then
<adaug un amplsament la sfritul fiierului pentru o nregistrare>
deplasare(f)
endif;
<amplasamentul desemnat de ptr(f)>:=orig;
deplasare(f)
endif
Notm, c citirea i scrierea se produc plecnd de la poziia curent a pointerului ptr(f),
actualizndu-l.
Primitiva nchide(f) permite nchiderea fiierului f presupus deschis, procedurile de citire sau
255
scriere nu-i mai pot fi aplicate.
Primitiva creaz(f) permite crearea unui fiier cu numele f, care este iniial vid i nchis, iar cu
SO pe dou nivele
Sistemul de operare poate fi acuma descompus n dou nivele (sau dou
"maini"): sistemul de gestionare a fiierelor, definit mai sus (maina
SGF), construit pe maina fizic MF i interpretorul limbajului de
comand (maina ILC), care folosete funciile furnizate de interfaa SGF.
Maina ILC de asemenea utilizeaz direct maina MF pentru citirea comenzilor de la tastatur,
administrarea display-ului i imprimarea fiierelor. Daca se va solicita o structur strict
pe nivele va fi necesar s includem administrarea operaiilor de I-E n SGF.
Specificm mai jos funciile care trebuiesc realizate.
Noiunea de fiier este o realizare abstract a schimburilor de informaii cu memoria
secundar. Introducem un nivel echivalent de abstractizare pentru specificarea
schimburilor de informaii cu alte periferice.
Definim pentru aceasta dou "periferice logice" cu urmtoarele specificaii ale interfeei:
a) "terminalul logic", care const dintr-un display i o tastatur i care ofer urmtoarele
dou funcii:
citire_linie(tampon)
Cu ajutorul acestei funcii o linie de simboluri de la tastatur va fi introdus ntr-un tampon din
memorie. Se presupune c funcii elementare de editare, cum ar fi vizualizarea unui
simbol sau a unei linii, sunt furnizate.
afiare_linie(tampon)
Aceast funcie afieaz pe ecran coninutul unei linii de simboluri, plasat ntr-un tampon de
256
memorie.
Imprimanta logic
b)
257
2)
SO pe trei nivele
Realizarea sistemului de gestionare a
fiierelor este astfel descompus n
dou probleme mai simple:
- s se realizeze maina SGF, care
pune la dispoziie interfaa descris n
p. 1, folosind funciile furnizate de
interfaa mainii PIE, descrise n p. 2,
- s se realizeze maina PIE care
folosete doar maina fizic MF.
Decompoziia de mai sus permite constatarea avantajului principal al structurrii pe nivele:
o modificare, chiar i esenial, a organizrii interne a mainilor PIE sau SGF nu
antreneaz nici un fel de modificri ale nivelelor superioare, dac interfaa
corespunztoare rmne neschimbat.
Aceast remarc evideniaz importana alegerii interfeelor n cauz. De exemplu, interfaa
PIE trebuie s permit simplificarea realizrii mainilor care o utilizeaz, rmnnd ea
nsi relativ simplu de realizat, ceea ce poate fi obinut doar n mod iterativ, fcnd n
egal msur apel la experien. n cursul acestui proces iterativ interfeele principale
sunt elaborate progresiv pn la varianta stabil. Costul modificaiei unei interfee crete
odat cu creterea numrului componentelor care o utilizeaz i este, ca rezultat, mai
ridicat pentru interfeele principale ale sistemului.
259
Interfaa extern a sistemului, care este cea a ILC, este definit de limbajul de comand.
Interfeele interne (ale PIE i SGF) sunt realizate prin apelri ale supervizorului.
Fie c este necesar s se citeasc un sector cu numrul nsect de pe pista np. Dac unul din
tampoane conine pista np, citirea se va face fr a accesa discheta, din sectorul
respectiv al zonei-tampon. n caz contrar, coninutul pistei np va trebui ncrcat n
prealabil de pe dischet n una din zonele-tampon. Alegerea zonei-tampon va fi tratat
mai departe.
260
Operaia de scriere
Este mai complicat. Pentru a minimiza numrul de transferuri, un tampon este recopiat pe
dischet ct mai trziu posibil. Atta timp ct el este n memoria operativ, tamponul
reflect starea curent a sectoarelor pistei i accesrile succesive ale unui sector nu
antreneaz vre-o accesare a dischetei. Fie c este necesar s scriem n sectorul nsect al
pistei np:
- dac pista np este prezent ntr-un tampon, sectorul corespunztor este modificat i
operaia se termin aici, cu excepia cazului "scriere imediat" **,
- dac pista np nu este prezent, ea trebuie n prealabil adus ntr-un tampon pentru a
ajunge la situaia din cazul precedent, cu excepia situaiei primei scrieri.
Un sector este copiat pe disc, n afara cazului de scriere imediat, n dou situaii:
- dac tamponul este realocat pentru a ncrca o nou pist n memorie, conform
algoritmului de realocare, care va fi prezentat mai jos,
- dac tamponul este vidat n mod forat din cauza nchiderii unui fiier sau la cererea de
eliminare a unui volum.
Algoritmul de realocare a tampoanelor se bazeaz pe proprietatea localitii de referine
(localizare): cu ct mai recent o informaie a fost utilizat cu att mai mare este
probabilitatea unei noi cereri de accesare. Din acest motiv tampoanele vor fi ordonate n
ordine cronologic a referirilor lor.
Atunci cnd un tampon este necesar, el va fi cutat :
1) un tampon liber (care nu a fost nc utilizat),
2) un tampon ocupat, dar nemodificat pe parcursul ncrcrii sale,
3) dintre ocupate, alegnd cel pentru care ultima referin este cea mai veche
261
Schemele programelor
citire_sector(np,nsect,dest)
scriere_sector(np,nsect,orig,mod)
if np <> p_p then
if np<> p_p then
if modif then
if modif then
transferare_pist(p_p,tampon,scriere)
transferare_pist(p_p,tampon,scriere)
endif;
endif;
transferare_pist(np,tampon,citire)
if mod=scriere_prima i liber(np) then
endif;
p_p=np
dest:=tampon[nsect]
else
transferare_pist(np,tampon,citire)
endif
endif
tampon[nsect]:=orig;
if mod=scriere_imediat then
transferare_sector(orig,np,nsect,scriere)
else
modif:=TRUE
endif
n cazul unei prime scrieri se presupune c este posibil s se determine cu ajutorul indicatorului
liber(np), c ntreaga pist np este alocat pentru prima dat.
Procedurile de mai sus utilizeaz dou proceduri interne ale PIE: transferare_pist i
transferare_sector, care constituie driver-ul dischetei.
263
Transferare pist
procedura transferare_pist(np, tampon,
sens);
CUTARE_PIST(np) -- deplasarea braului
test: TEST
if nonterm then go to test
endif;
for nsect:=0 to nbsect-1 do -- nbsect = 27
transferare_sector(tampon[nsect],nsec
t,sens)
endfor;
modif:=false;
if sens=citire then
pist_prezent:=np
endif
procedura transferare_sector(adr,nsect,sens);
nsect:=convertire(nsect); -- numrul sectorului
fizic
nr_ncercri:=0;
repetare: case sens of
citire:
CITIRE_SECTOR(adr,nsect);
scriere: SCRIERE_SECTOR(adr,nsect);
endcase
test: TEST-- control corectitudine transfer
if err then
nr_ncercri:= nr_ncercri+1;
if nr_ncercri<nmax then
go to repetare
else
cauza:=eroare_fatal
-- eec dup nmax
ncercri
<provocare deviere>
endif;
endif;
if nonterm then
go to test
-- ateptare activ
endif;
264
Pentru notarea unui fiier este utilizat o schem pe dou nivele, adic numele unui fiier
este de forma
<nume suport>:<identificator>.<tip>
Numele suportului identific suportul fizic al fiierului, adic unitatea de disc utilizat i este
definit, de obicei, n mod implicit.
n interiorul unei dischete schema de desemnare este plat; identificatorul tipului specific
natura fiierului (program translatabil, absolut, instruciuni, date, etc.).
Fiierele sunt organizate secvenial, sub forma unei suite de nregistri de lungime fix (128
octei).
Sistemul furnizeaz primitive de accesare secvenial a nregistrrilor. Orice funcie de acces
trebuie s fie construit plecnd de le aceste primitive.
266
269
sistem rezident
stiva
liber
segment date iniializate
segment date
tampon
intrare-ieire
descriptor 1
descriptor 2
pointeri
segment procedur
pagin de gard
(pagin de gard)
sistem rezident
Fig.9.3. Mediul de execuie
272