Sunteți pe pagina 1din 105

- 1 -

CAPITOLUL I


DESCRIEREA SISTEMELOR DE OPERARE


1.1. Sisteme de calcul( SC) i sisteme de operare( SO)

1.1.1. Introducere n SO; familii de SC

Ce este un SO? SO este un sistem de programe care acioneaz ca o interfa
ntre utilizator i echipamentul hard. Asigur accesul convenabil al utilizatorului la SC i
utilizarea eficient a sa.
Deoarece SO apare ca o interfa, SO are dou roluri eseniale:
a) SO extinde arhitectura hard a SC;
b) SO gestioneaz resursele solicitate de programele utilizator
Exemplu. a) SC este compus din procesoare, memorie intern, dispozitive de
intrare/ieire( I/O), orologii, terminale, interfa de reea etc. Arhitectura hard ofer
elemente cu care se poate aciona asupra acestor componente: instruciuni main,
organizarea memoriei, sistemul I/O etc. Pentru programator e greu s in seama de
conveniile impuse de acestea. Programatorul scrie READ (f,t). Dac ar fi s in seama
de toate detaliile arhitecturale ar trebui s precizeze de pe ce fel de disc se citete (de
mas, dischet, hard), s comande poziionarea capului de citire, s-l activeze. Exist ns
o rutin a SO care preia argumentele din READ i rezolv toate detaliile.
b) Pe acelai SC i n acelai timp lucreaz trei programe distincte
care solicit o aceeai imprimant. SO gestioneaz utilizatorii i le distribuie resursa
imprimant ntr-un mod raional: memoreaz n trei fiiere pe disc liniile generate la
ieire de ctre fiecare program. Dac un program s-a ncheiat se listeaz fiierul
corespunztor la imprimant fr a fi ntrerupt. Dup terminarea unei listri imprimanta
va fi ocupat pentru listarea urmtoare.

Generaii, clase i familii de calculatoare

Specialitii n calculatoare le-au mprit n mai multe generaii. Criteriile
(temporale, tehnologice, de dezvoltare soft) sunt relative. Se va prezenta clasificarea dat
de profesorul M.Drgnescu n vol. "Calculatoarele electronice din generaia a cincea",
Editura Academiei, Bucureti 1985.


Gen

Perioada

Tehnologie
CPU

Tehnologie
memorie

Limbaje
utilizate

Performane de
memorie i CPU

I

1946-
1956

Tuburi
electronice

Tambur
magnetic

Limbaj de
asamblare

mem: 2KO
viteza: 10
4
I/S

- 2 -
II 1957-
1963
Tranzistori Inele de ferit Limbaje de
nivel nalt
FORTRAN,
COBOL
mem: 32 KO
viteza: 210
5
I/S


III

1964-
1981

Circuite
integrate

Mem.-
semiconducto
ri, discuri
magnetice

Limbaje de
nivel foarte nalt
Pascal, LISP

mem: 2MO
viteza: 510
6
I/S



IV

1982-
1989

Circuite
integrate pe
scar larg i
foarte larg

Mem.cu bule,
discuri optice

Limbaje
orientate
obiect

mem: 8MO
viteza: 310
7
I/S

supercalculatoare

V

dup
1990

Circuite
integrate pe
scar extrem
de larg;
maini LISP i
PROLOG

Arhitecturi
paralele

Limbaje
concurente
Limbajul
NATURAL
Limbaje
funcionale
(LISP)
limbaje logice
(PROLOG)

viteza: 10
9
-
10
12
I/S
memorare i
prelucrare
cunotine
(inteligena
artificial)
vedere artificial
tehnica vorbirii

Familiile de calculatoare existente azi n lume se pot mpri n clase:
1) Microcalculatoare
Folosesc ca CPU( unitate central de prelucrare) un microprocesor; operaiile se
fac asupra datelor reprezentate pe 8, 16, 32 i 64 bii; sunt sisteme interactive,
monoutilizator
a) Calculatoare personale familiale: la acestea ieirea se face pe monitor
TV, iar ca unitate de memorie extern se folosete caseta audio. Exemple: aMIC, PRAE,
MC-85, TIM-S; SINCLAIR SPECTRUM (Anglia),C OMMODORE-64 (SUA)
b) Microcalculatoare profesionale: dispun de configuraie proprie:
tastatur, monitor, suport magnetic. Exemple: M18, TPD, CUBZ, TDF, JUNIOR, ML16,
FELIX-PC, APPLE, IBM-PC
2) Minicalculatoare
Minicalculatoarele apar dup 1970; drept CPU folosesc o UC( unitate central)
clasic pe 16 bii (nu microprocesor); sunt sisteme interactive multiutilizator; sistemul
I/O e orientat spre o magistral unic (se impune legarea n paralel a perifericelor la
magistral). Exemple: fam. PDP11 (DEC-SUA), superminicalculator VAX-8600 (1985),
VAX-8650 (1986) n prezent pe 32 bii, CORAL, INDEPENDENT( producie
romneasc).
3) Calculatoare medii-mari (main-frame)
Apar dup 1950; opereaz pe cuvinte de 32 bii, au memorie mare, sunt sisteme
seriale i sunt foarte scumpe. Exemple: fam. IBM-360, FELIX C-256, C-512, C-1024, C-
5000
- 3 -

4) Supercalculatoare
Au memorie intern de mare capacitate, eventual mecanisme de memorie virtual,
operanzi pe cuvinte de 32-64 bii i sunt sisteme multiprocesor. Exemple: fam. IBM-370
cu seriile 145, 158, 168, CDC 6600, CDC CIBER, CRAY CRAY II
Cel mai reprezentativ este SC IBM AS/400 (are posibiliti de configurare foarte
variate) care se folosete pentru gestiunea activitilor unei intreprinderi mari i foarte
mari, supravegherea activitii unor trusturi de importan internaional (societi de ci
ferate, companii aeriene).

Evoluia SO
Teoria SO s-a dezvoltat iniial pentru sisteme mari. Mini i microcalculatoarele au
preluat pri din aceast teorie. La interval de 8-10 ani conceptele de SO sunt preluate de
ctre noile familii de calculatoare( de exemplu prelucrarea conceptelor SO MULTICS de
ctre UNIX pentru minicalculatoare i migrarea ctre microcalculatoare).
De asemenea, procedeele de parametrizare i configurare ale SO n momentul
lansrii n execuie au aprut nc de la sistemele seriale. Metoda a fost preluat i
folosit la toate tipurile de calculatoare. Acestea au extins procedeul la produsele
program i la mediile de programare de larg utilitate public. Prin tehnica configurrii
utilizatorul este liber s-i ajusteze SO astfel nct acesta s fie folosit optim la
configuraia hard i soft existent.
Au nceput s fie proiectate SO sub forma unor obiecte abstracte care colaboreaz
ntre ele dup reguli foarte simple i precise.
La prima Conferin ACM Symposium on Operating Systems, 1967 E.W.Dijkstra
a prezentat un raport privind organizarea soft a proiectului de SO THE (Technische
Hogeschool Eindhoven). Sistemul THE este mprit n 7 nivele, fiecare nivel este
compus dintr-o colecie de obiecte abstracte i reguli care le guverneaz (materializate
prin primitive). Structura intern a unui obiect la un nivel este invizibil la alt nivel, dar
poate fi exprimat n termenii obiectelor i operaiilor de la nivelele inferioare.
Aceast utilizare a obiectelor abstracte este folosit pe scar din ce n ce mai larg
i azi. Semnificativ este utilizarea programrii orientate obiect la descrierea elementelor
grafice de interfa om-calculator. n acest fel se "umanizeaz" interfaa cu SO, aceasta
devenind relativ independent de SO( ex. suprafaa de operare X Windows sub UNIX).

1.1.1. Evoluia SC i a principalelor tehnici din SO

a) Generaia I
Primele calculatoare (1945-1955) dispun numai de echipament hard i au la baza
construciei lor tuburi electronice. La acest SC utilizatorul introduce programul (codificat
binar sau hexa) n memorie de la o consol sau panou. Apoi l lanseaz n execuie, i
vizualizeaz rezultatele i eventual l depaneaz.
b) Generaia II
Apare odat cu apariia tranzistorului. n acelai timp apar cititorul de cartele,
banda magnetic, imprimanta. Pentru utilizarea noilor elemente de I/O apar primele
rutine de interfa (drivere) care asigur legtura dintre dispozitivul I/O, memorie i CPU.
Aceste rutine sunt considerate istoric primele programe care particip la un SO.
- 4 -
Apar primele produse soft prin care se revoluioneaz programarea: asambloare,
linkeditoare, compilatoare etc. Cum sunt manipulate aceste produse necesare execuiei
unui program? Ele sunt depozitate pe cartele perforate sau pe benzi magnetice.
Operatorul lanseaz n execuie citirea cartelelor, ncarc de pe band compilatorul, l
lanseaz n execuie. Deci caracteristic acestor sisteme este faptul c fiecare faz a unei
lucrri presupune intervenia uman.

Sisteme seriale cu monoprogramare
Se numete faz de elaborare a unui program una din urmtoarele activiti:
- editarea textului surs cu calculatorul;
- compilarea unui program;
- editarea legturilor programului;
- lansarea n execuie a programului
- depanarea.
Se numete job o succesiune de faze relativ la un program.
Intervenia uman ntre faze presupune o utilizare ineficient a SC. Pentru
evitarea acestui lucru apare conceptul de ncrcare automat a joburilor i fazelor. Se
creeaz n acest scop un mic program numit monitor rezident care are ca sarcin
principal asigurarea nlnuirii joburilor i fazelor.
a) Programatorul insereaz printre cartelele programului nite cartele speciale
numite cartele de comand (au n prima coloan simboluri speciale). Se definete astfel
un limbaj de control al joburilor.
b) Monitorul rezident este un program permanent activ, operaiile de I/O se fac de
ctre monitor; zona de memorie a monitorului nu poate fi modificat de ctre utilizator,
iar acesta nu poate comanda oprirea sistemului. Toate cererile de I/O ale utilizatorului
sunt solicitate de ctre acesta monitorului prin apeluri sistem ( de exemplu o instruciune
read genereaz un apel sistem). Apar deci modurile de lucru
- monitor (master, privilegiat, supervizor)
- utilizator (slave, neprivilegiat)
c) O alt sarcin a monitorului este controlul depirii timpului de folosire a CPU.
Utilizatorului i se acord un timp maxim de folosire, dup trecerea cruia se ntrerupe
automat execuia programului sau se solicit acordul operatorului uman pentru
continuarea lui.
Deci, principalele sarcini ale monitorului sunt:
a) nlnuirea fazelor i a joburilor pe baza instruciunilor date de ctre utilizator
prin intermediul limbajului de control;
b) coordonarea alternrii ntre modurile de lucru supervizor i utilizator;
c) evitarea ciclurilor infinite prin limitarea timpului de folosire a CPU.
Tipul de SO descris se numete serial, joburile executndu-se unul dup cellalt.
Se mai folosete i termenul de prelucrare pe loturi (batch processing) sugernd c se
prezint spre execuie mai multe joburi, unul dup cellalt. CPU nu se ocup de alt job
pn nu l termin pe cel curent, deci se lucreaz n regim de monoprogramare.
- 5 -
Sisteme seriale cu multiprogramare
n sistemele seriale simple CPU ateapt mult din cauza diferenelor mari de
vitez dintre echipamentele electronice ale CPU i echipamentele mecanice ale
dispozitivului I/O ( de exemplu un cititor rapid de cartele citete 300 cart/min, iar un
compilator traduce un program de 300 instruciuni n 60 sec.).
Dezvoltarea arhitecturii a dus la apariia canalului de intrare-ieire. Acesta este
un procesor specializat pe operaii de I/O care poate funciona n paralel cu CPU. Pentru a
fi lansat acesta primete de la CPU o comand de efectuare a unei operaii I/O, iar dup
lansare cele dou procesoare i continu activitatea n paralel. La sfritul operaiei de
I/O canalul anun CPU prin intermediul unei ntreruperi.
Fiecare periferic conine o zon tampon proprie capabil s pstreze o
nregistrare. CPU pune la scriere informaia din memorie n zona tampon. Perifericul ia la
scriere informaia din zona tampon i o pune pe suport, iar la citire acioneaz invers.
Viteza de lucru a CPU este mult mai mare dect a perifericului.
ntre CPU i periferic exist 3 moduri fundamentale de interaciune:
a) ateptare reciproc: n fiecare moment acioneaz doar un procesor sau CPU
sau canalul I/O;
b) polling efectuat de ctre CPU: CPU folosete o instruciune main test pe
care o execut periodic asupra perifericului. Dac perifericul este liber, CPU lanseaz o
operaie I/O i apoi cele dou procesoare lucreaz n paralel. Tehnica sondrii
perifericului se numete polling; o caracteristic important este frecvena cu care se face
testarea. Tehnica polling se folosete pentru SC interactive multiutilizator pentru legarea
cu terminale de teletransmisie.
c) ntrerupere lansat de ctre periferic. O ntrerupere este un semnal hard care
perturb execuia fireasc a instruciunilor dintr-un program n curs. La apariia unei
ntreruperi se suspend temporar programul n curs i se lanseaz n execuie o rutin
aflat la o adres fix n memorie. Pentru fiecare tip de semnal de ntrerupere se asociaz
o adres fix n memorie, n aceast locaie se afl adresa rutinei de ntrerupere (rutin
numit handler). Pe timpul tratrii unei ntreruperi n memorie se afl att programul
suspendat ct i rutina de ntrerupere. Aciunile desfurate la apariia unei ntreruperi
sunt:
- se reine adresa instruciunii ce urmeaz a se executa n program;
- se execut instruciunile rutinei de ntrerupere;
- se reia activitatea programului suspendat la adresa reinut.
Tehnica ntreruperilor este utilizat la sistemele actuale. In acest mod se realizeaz
comunicarea ntre SC i periferice.
n prezent SC folosesc 2 tipuri de canale:
- selector: pentru schimburi dintre memorie i periferic rapide;
- multiplicator: lucreaz simultan cu mai multe periferice (ex. USM - la SC
FELIX, 470 KO/sec).
Apariia canalelor I/O a permis abordarea unor tehnici de exploatare eficient a
CPU.
a) Utilizarea zonelor tampon multiple
Se presupune c un program are de efectuat citiri, iar rezultatul fiecrei citiri este
folosit n calcule. Dup ce s-a fcut o citire ntr-o zon tampon, CPU cere imediat
canalului s efectueze n avans nc o citire. n momentul n care canalul I/O a ncheiat a
- 6 -
doua citire, iar CPU solicit noi date, acestea sunt deja disponibile n a doua zon
tampon. Se lanseaz apoi n avans o nou citire .a.m.d. Extinderea procedeului la mai
multe zone tampon este imediat. Aceast tehnic funcioneaz n ipoteza c dac pentru
schimbul cu un periferic a fost ocupat o anumit zon de memorie, atunci ea este
afectat exclusiv perifericului, pe toat durata schimbului. n prezent rutinele de I/O din
SO moderne au faciliti de lucru cu zonele tampon.
b) Conceptul de multiprogramare: exprim modul de exploatare a unui SC cu
un singur procesor central care presupune existena simultan n memoria intern a mai
multor programe care se execut concomitent. Primele SC ce lucreaz n regim de
multiprogramare apar nainte de 1965, odat cu apariia plcilor cu circuite integrate. Se
poate vorbi deja de GENERAIA a III-a de calculatoare.
Lucrul n multiprogramare se desfoar astfel: n fiecare moment CPU execut o
instruciune a unui program - acest program este n starea RUN; alte programe ateapt
apariia unui eveniment extern (terminare I/O, scurgerea unui interval de timp) i sunt n
starea WAIT sau sunt pregtite de execuie, adic n starea READY. Trecerea din starea
RUN n starea WAIT este comandat de programul nsui, trecerea din starea RUN n
starea READY i invers este comandat de SO pe baza unui algoritm de planificare.
Pentru a lucra n multiprogramare este necesar ca:
- SC s dispun de sistem de ntreruperi pentru semnalarea evenimentelor externe;
- SO s gestioneze, aloce i protejeze resursele ntre utilizatori (memorie,
periferice, fiiere, timp fizic).
c) Conversii off-line: sisteme SPOOLING:
Tehnica const n: coninutul cartelelor ce vor fi prelucrate este copiat ntr-un
fiier pe band sau disc magnetic; suportul magnetic este transmis SC ca intrare standard.
Analog rezultatele, sub forma unor linii pe imprimant, sunt depuse nti ntr-un fiier pe
band sau disc, iar la terminarea lucrului coninutul fiierului este listat la imprimant.
Tehnica este folosit la sistemele seriale (IBM-360, FELIX-C256).
Conceptul SPOOLING (Simultaneous Peripheral Operation Off-line) s-a obinut
prin mbinarea utilizrii zonelor tampon cu conversiile off-line i cu multiprogramarea.
Sistemul funcioneaz astfel: se citesc de la un cititor cartelele ce compun un job; cnd
jobul a fost citit complet imaginile cartelelor lui sunt depuse ntr-un buffer pe disc - jobul
se afl n starea HOLD; cnd CPU este liber alege unul din joburile din starea HOLD i l
lanseaz n execuie, liniile "tiprite" de ctre jobul n execuie se depun ntr-un buffer pe
disc, iar atunci cnd jobul a fost executat complet bufferul lui de ieire devine disponibil
pentru listare - jobul se afl n starea FINISH. Operaiile de conversie se fac n paralel cu
execuia, n regim de multiprogramare; dac pentru execuie sunt disponibile mai multe
partiii atunci toate au acces la cozile HOLD i FINISH, executndu-se n paralel mai
multe job-uri. Simultaneitatea apare deci ntre joburile n curs de citire( de la cititorul de
cartele), joburile n curs de execuie( care sunt cel mult attea cte partiii exist) i
joburile n curs de listare.
- 7 -



























Sisteme interactive
Permit comunicarea on-line dintre utilizator i sistem. Utilizatorul d comanda,
ateapt rspunsul i n funcie de rezultatul furnizat de comanda precedent decide
asupra noii comenzi. Aceste sisteme pot fi monoutilizator sau multiutilizator
Tehnica de servire time-sharing
Este modul normal de servire n SO interactive multiutilizator. Fiecare utilizator
are un program ntr-o zon de memorie; SO comut rapid de la un program la altul
nregistrnd comenzile utilizatorilor (tehnica polling). CPU are vitez mare de lucru, deci
ntr-un interval scurt fiecare utilizator este servit cel puin o dat. Primele sisteme tip
time-sharing au fost CTSS i MULTICS. n prezent cel mai reprezentativ este sistemul
UNIX.
Redirectare i legare n pipe
Aplicarea acestor tehnici presupune c fiecare program are un fiier de intrare
standard i un fiier de ieire standard.
Redirectarea intrrii i/sau ieirii standard permite nlocuirea intrrii standard cu
un fiier ce conine liniile de intrare pe care le ateapt programul, iar liniile rezultate vor
fie scoase ntr-un fiier oarecare sau adugate la un unul existent.
CPU
Cititor
cartele
Imprimanta
Execuie on- line fr
conversii
CPU
Conversie
intrare
Conversie
ieire
Execuie
Conversii off-line
Disc
magnetic
Cititor cartele
Imprimanta
Conversii
intrare
Conversi
i ieire
Conversii n sistem
spooling
- 8 -
Informaiile de redirectare sunt valabile din momentul lansrii programului pentru
care se cere aceasta i pn la terminarea lui; dup terminare se revine la fiierele
standard implicite.
Sintactic, specificarea noilor fiiere standard de I/O se face la fel la toate SO; n
linia de comand prin care se lanseaz programul respectiv se vor trece numele noilor
fiiere standard precedate de semnul ">" sau "<":
- pentru specificarea fiierelor standard de intrare n linia de comand se scrie
< specificare_fiier_intrare;
- pentru specificarea fiierelor standard de ieire se scrie >
specificare_fiier_ieire;
- pentru adugarea liniilor ieirii standard la un fiier existent se scrie >>
specificare_fiier.
Istoric, redirectarea a aprut la primul compilator "C". De aici a fost generalizat la
SC UNIX. n prezent se gsete la majoritatea SO interactive i la medii de programare
operaionale de SO care nu au generalizat redirectarea.
Un mod elegant de tratare a lucrrilor n sisteme interactive este modul de lucru
pipe, mod de lucru care nseamn o "conectare" a 2 programe care se succed: ieirea
standard a unui program este transmis direct, printr-un sistem de buffere, ca intrare
standard pentru programul urmtor. Conceptual este o aplicare combinat a
multiprogramrii, a mecanismelor de gestiune a zonelor tampon multiple i a redirectrii.
Se redirecteaz att ieirea primului program ct i intrarea celui de-al doilea la acelai
sistem de buffere. Dup ce primul program umple un buffer acesta este transmis
programului succesor; acesta folosete coninutul ca i cum l-ar primi de la intrarea
standard; dup ce a golit buffer-ul este gata s primeasc un alt buffer. La SC cu
multiprogramare, umplerea unui buffer se face n paralel cu golirea altuia, dup care cele
dou buffere i schimb rolurile. n pipe se pot lega n lan n programe care se execut
succesiv legate prin n-1 sisteme de buffere. Sintactic, n linia de comand se scrie
comanda pentru primul program urmat de caracterul i apoi comanda pentru cel de al
doilea program.
Exemplu: programul P1 selecteaz nregistrri dintr-un fiier F i creeaz cu ele
un fiier nou G; programul P2 citete G, l sorteaz i-l listeaz la imprimant.
- pentru P1 pare mai normal ca intrarea standard s fie F, iar ieirea G; analog,
pentru P2 intrarea s fie G, iar ieirea imprimanta;







- specificarea se face astfel: P1 <F >G
P2 <G >PRN
Prin legare pipe se poate elimina crearea fiierului G: se conecteaz ieirea
standard a lui P1 cu intrarea standard a lui P2 prin zone tampon. P1 umple zona tampon,
cnd aceasta este plin se transmite lui P2 care citete ca de la o intrare standard; dup ce
P2 golete bufferul, P1 ncepe s-l umple din nou.
F G
P1 P2
Lansare P1
Lansare P2
- 9 -






- specificarea se face astfel: P1 <F | P2 >PRN.
Avantajul acestor metode este acela c programele utilizate sunt independente de
faptul c ruleaz sau nu n condiii de redirectare sau pipe.
Sisteme n timp real
Sunt sisteme folosite pentru a dirija permanent aciuni cum ar fi conducerea unui
proces tehnologic, coordonarea unor ghiee de rezervare a locurilor etc.
Un sistem n timp real poate fi definit ca un SC la care datele de intrare sunt
introduse de la locul de generare a lor direct n SC, iar informaiile de ieire sunt
transmise direct la locul de utilizare.
Caracteristicile unui asemenea sistem sunt acelea c:
- informaiile din exterior sunt luate n eviden n momentul comunicrii lor;
- rspunsul SO este limitat n timp cu precizie;
- timpul de execuie al fiecrui program din sistem trebuie cunoscut dinainte.
Tipuri de sisteme n timp real:
- in-line: primete datele de intrare de la traductoare prin care se msoar valorile
unor parametri ce caracterizeaz procesele tehnologice; SC prelucreaz datele n
momentul primirii lor; rezultatele sunt transmise pe un terminal i operatorul uman ia o
decizie sau SC comand pornirea unor dispozitive pentru corectarea parametrilor
procesului;
- tranzacional: sistem interactiv; numrul i tipul mesajelor i comenzilor utilizate
este limitat, iar formatul de citire i afiare este fix. Aceste mesaje se numesc tranzacii(
exemplu: sistemele bancare, de rezervare a locurilor etc.).

GENERAIA a IV-a
Apare odat cu apariia circuitelor LSI (Large Scale Integration) care permit ca un
chip de siliciu de 1 cm
2
s conin echivalentul a mii de tranzistoare.
- 1969 apare primul p( microprocesor) Intel 4004
- 1975 Steve Jobs i Stephan Wozniak construiesc primul calculator personal
ALTAIR 3000
- 1976 Bill Gates, Paul Allen fondeaz firma Microsoft, construiesc primul
interpretor BASIC
- 1981 IBM lanseaz primul calculator personal cu CPU p Intel i SO Microsoft
Sisteme multiprocesor i reele de calculatoare
n sistemele multiprocesor sunt conectate mai multe procesoare pentru realizarea
aceleiai sarcini i au acces partajat la memoria intern i la dispozitivele periferice. De
cele mai multe ori exist un procesor master care controleaz sistemul, lanseaz sau pune
n ateptare procesoarele din subordine.
Exist 4 tipuri de sisteme multiprocesor:
1) Sisteme legate n reea: colecie de SC relativ autonome fiecare cu CPU,
memorie i canal I/O propriu ( i care pot lucra sub SO diferite);
F
P1 P2
Lansare P1/P2
Buffere
- 10 -
2) Sisteme cu procesoare specializate ncorporate: pe lng CPU au ncorporate
procesoare specializate pe clase de operaii (cele de I/O, calcul n virgul flotant ...) care
sunt controlate de CPU i folosesc aceeai memorie intern.
Exemple- utilizarea de procesoare suplimentare (coprocesoare) pentru efectuarea
anumitor tipuri de operaii (de exemplu instruciuni n virgul flotant)
- procesoare RJE (Remote Job Entry): calculatoare mici care realizeaz
transferul joburilor ctre i de la un sistem serial mare care lucreaz n regim spooling.
Sistemele time-sharing dispun de un calculator mic legat front-end (la aceeai memorie
ca SC principal) pentru operaiile I/O cu terminalele de teletransmisie legate la SC.
3) Sisteme cu procesoare similare care lucreaz independent: acestea
partajeaz aceeai memorie intern, dar efectueaz sarcinile de calcul independent; sunt
subordonate aceluiai SO; cele mai rspndite sunt sistemele vectoriale (procesoare
identice care execut aceleai operaii matematice asupra elementelor unor matrici).
4) Sisteme ce folosesc procesoare paralele: acestea coopereaz ntre ele
efectund sarcini de calcul ale aceluiai job. Algoritmul de rezolvare a unei probleme este
descompus n secvene ce pot fi tratate n paralel (timpii de execuie nu coincid ca la cele
vectoriale); lansarea unei secvene ateapt pn cnd s-au terminat toate secvenele ce
trebuiau s i succead.
Alt clasificare a sistemelor multiprocesor des utilizat este urmtoarea:
1) Sisteme SISD( Single Instruction-Single Data) - arhitectur clasic, von Neumann
2) Sisteme SIMD( Single Instruction Multiple Data) - procesoare vectoriale
3) Sisteme MISD(Multiple Instructions Single Data) -rar folosite, datele trebuie protejate;
4) Sisteme MIMD( Multiple Instructions Multiple Data) sunt procesoarele paralele.

1.1.3. Structura i componentele unui SC

Structura i funciile hard. Exist 4 clase de componente hard, indiferent de
tipul SC: - unitatea de memorie care execut operaii de memorare i regsire a
informaiilor;
- componenta de prelucrare;
- periferice de intrare-ieire;
- componenta de control.
Memoria. Este o succesiune de dispozitive logice elementare, fiecare fiind
capabil s rein una dintre valorile 0 sau 1 numite bii. Biii sunt organizai ntr-un ir i
grupai n uniti de memorare numite octei. Se fac trei ipoteze asupra memoriei:
1) Fiecare octet are acelai numr de bii;
2) Fiecare octet se refer n mod unic printr-un numr numit adresa octetului;
3) Memoria este volatil: dup terminarea unui program se pierde coninutul
octeilor asupra crora s-a acionat.
Funcional exist dou tipuri de memorii: memorie ROM( Read Only Memory)
din care se pot doar citi date i memorie RAM( Random Access Memory) n care se pot
i scrie date.
Componenta de prelucrare: are posibiliti de a manipula un numr finit de
date( bit, octet, ntreg, real...) cu ajutorul unor operaii primare care sunt instruciuni
main. Realizarea instruciunilor se face pe baza unor circuite electronice din
- 11 -
microprocesor (instruciuni hard) la care se adaug rutine programate de ctre firma
constructoare ( i depuse n ROM).
Principiul fundamental al SC actuale este acela c se execut un program ale crui
instruciuni se afl mpreun cu datele n memoria intern a SC.
Periferice: din punct de vedere funcional se mpart n periferice de schimb cu
mediul extern: cititor cartele, imprimant, terminale de teletransmisie, plottere, ...
respectiv purttoare de informaii permanente pe medii magnetice: benzi magnetice,
tamburi magnetici, suporturi n acces direct de tip disc.
Dintr-o alt perspectiv perifericele sunt de tip bloc sau de tip caracter.
Periferice bloc: memoreaz informaia n blocuri de lungime fix, fiecare bloc
avnd propria adres (conine n general 128, 512 sau 1024 octei); un bloc poate fi scris
sau citit indiferent de celelalte; mediile de tip disc sunt cele mai importante dintre
perifericele de tip bloc. Blocul de informaii este unitatea de schimb ntre perifericele
bazate pe suporturi magnetice i memoria intern. Un bloc de informaii conine pe lng
succesiunea propriu-zis de octei un numr suplimentar de octei i bii destinai
verificrii corectitudinii informaiei memoriei n blocul respectiv.
Perifericele de tip caracter: furnizeaz sau accept un flux de octei fr
structur de bloc; octeii din grup nu sunt adresabili i fiecare octet este disponibil ca i
caracter curent doar pn la apariia urmtoare. Exemple de astfel de periferice sunt
cititorul cartele, banda de hrtie perforat, imprimanta, terminale cu tastatur i ecran,
mouse.
Componenta de control mpreun cu cea de prelucrare i cu sistemul de
ntreruperi formeaz unitatea central de prelucrare CPU.

1.1.4. Arhitectura unor SC interactive

Arhitectura minicalculatoarelor compatibile PDP
Apar n 1970, construite de firma DEC (Digital Equipament Corporation). Cele
mai rspndite sunt cele din familia PDP-11 (mai ales seriile 11/34A, 11/44, 11/70 dup
1979). In Romnia, din 1977 se utilizeaz familiile Independent i CORAL.
Arhitectura hard a unui minicalculator compatibil PDP este urmtoarea:















PAR0
PAR1
PAR2
PAR3
PAR4
PAR5
PAR6
PAR7
R0
R1
R2
R3
R4
R5
R6( SP)
R7( PC)
PVF
ALU
Control
Bus
Memorie
BUS
TT: DP: DK: MM: DX: CR: LP:
TT1:TTn:
CPU
- 12 -
CPU execut toate operaiile logice i aritmetice i conine:
ALU: operaii aritmetice n virgul fix pe 16 bii
PVF: procesor pentru calcule n virgul flotant
DMM: dispozitiv de management al memoriei
registre generale: capacitate 16 bii,dublu exemplar (unul pentru monitor-
superior, altul pentru utilizator), R6 conine Stack Pointer, R7 - Program Counter, pot fi
folosii ca acumulatori, indicatori de adrese, regitri de indeci.

Mecanismul de adresare
Memoria are o capacitate de 4Mo; consecin a lungimii cuvntului main un
program poate adresa 64Ko; Dispozitivul de Management al Memoriei (DMM) permite
creterea spaiului de adresare la 4Mo. n momentul n care el este activat, adresa de 16
bii nu mai este folosit ca adres fizic ci ca adres virtual care conine informaia
necesar constituirii adresei fizice de 22 bii. Mecanismul de constituire a adresei fizice
este urmtorul:











AV se reprezint pe 16 bii i este format din:
- numr pagin P,
- numr bloc n pagin NB,
- deplasament n cadrul blocului DB
- programele executabile se mpart n pagini cu lungimea maxim de 2
13
octei,
adresa de ncrcare a fiecrei pagini este multiplu de 2
6
, rezult c pentru adresa de
ncrcare a fiecrei pagini se folosesc 13 bii dintre care primii 6 (cei mai puin
semnificativi) sunt 0. Fiecare program executabil poate opera cu maximum 8 pagini
rezult 3 bii pentru numrul paginii, biii 13-15 ai adresei virtuale;
- fiecare pagin se mparte n maxim 2
7
blocuri de lngimea 2
6
, fiecare bloc ncepe
la o adres multiplu de 2
6
rezult c numrul blocului n cadrul paginii se poate scrie pe 7
bii 6-12
- adresa unui octet n cadrul blocului se scrie pe 6 bii, biii 0-5.
n DMM exist 8 regitri de adrese ale unor pagini din memoria operativ (pagini
fizice, reale), PAR0 - PAR7. O pagin se afl la multiplu de 2
6
rezult c cei 6 bii
nesemnificativi din adresa real a nceputului de pagin sunt 0. De aceea regitrii au 16
bii fiecare pentru a materializa biii 6-12 din adresa de nceput a paginii fizice.
La ncrcarea programului n memorie, paginile virtuale ale lui sunt plasate n
zonele de memorie liber, la adrese multipli de 2
6
, iar aceste adrese sunt plasate n
registru PAR corespunztor. Cnd DMM primete o adres virtual pe 16 bii o
AV:
AF: AFP+ NB
NB P
DB
21 6 5 0

15 13 12 6 5 0

+
DB
AFP
P
21 6
PAR
0-7
- 13 -
transform n adres real adunnd coninutul registrului PAR indicat de P cu cmpul NB
al adresei virtuale, dup care rezultatului i se concateneaz cmpul DB din adresa
virtual. DMM asigur i protecia paginii fizice ntre utilizatori: pe lng fiecare registru
PAR exist un registru PDR (registru descriere pagin) ce conine lungimea paginii, dac
n ea s-a scris sau nu, n ce direcie se poate extinde pagina i ce drepturi de acces sunt
permise asupra ei. Unele SC dispun i de componenta PVF ce realizeaz operaii n
virgul mobil.
Sistemul de intrare/ieire
Toate comunicaiile ntre modulele SC se realizeaz prin intermediul unei
magistrale unice de informaii BUS ce permite un trafic de 10Mo/SC; comunicarea pe
BUS ntre 2 module se face n regim master-slave: la un moment dat un modul
controleaz BUS-ul (master) i un alt modul (slave) este controlat de BUS; n timp ce un
modul execut un ciclu de operare pe BUS altul poate obine pentru tactul urmtor
dreptul de a opera pe BUS; sarcina arbitrajului revine (n caz de conflicte) componentei
controlor de BUS.
Arhitectura microcalculatoarelor pe 8 bii
Au la baz microprocesorul, care apare n 1970 i se dezvolt masiv dup 1980.
Exist microprocesoare pe 8 bii, 16 bii, 32 bii ...
Structura unui microcalculator pe 8 bii este urmtoarea:





















n domeniul realizrii microprocesoarelor pe 8 bii pe primul loc se afl firma
ZILOG cu Z80 urmat de Intel cu I8080, aceste dou microprocesoare fiind compatibile.
Exemple de microcalculatoare cu microprocesor pe 8 bii: FELIX-M18, M18B,
M118, M118B din 1979, CUB (cu I8080) i CUBZ (cu Z80), aMIC, TIM-S
Nucleul CPU este format din microprocesor I8080 sau Z80, capabil s execute
127 instruciuni main: operaii aritmetice, logice, deplasri, cereri I/O etc. Are
DB
A
ALU
B C
D E
H L
IX
IY
SB
PC
AB
ROM
RAM
Memorie
CPU( I8080 sau Z80)
Date
Adrese
PUN: RDR: LST: A: B: C: D: CON:
- 14 -
urmtoarele uniti funcionale:
- zona registrului de date i adrese conine: numrtor de adrese al progr., PC, de 16 bii,
pointer stiva SP, registru de date de 8 bii DB, registru adrese de memorie de 16 bii AB;
- 6 regitri generali de cte 8 bii B,C,D,E,F,H,L ce pot fi folosii individual sau perechi;
- 2 regitri de indeci IX, IY
- unitatea aritmetico-logic ce are un registru acumulator pe 8 bii, A;
- o magistral de date BUS pe 8 bii.
Organizarea memoriei:
1) zona ROM: conine monitorul calculatorului,
2) zona RAM: ntre 32KO i 64KO la dispoziia utilizatorului
- mecanismul de adresare: adresele din program coicid cu cele fizice i se
reprezint pe 16 bii.
Subsistemul de I/O este formar din: consola; imprimanta LST; unitatea de band
sau caset magnetic (ca intrare standard RDR:); unitatea de band sau caset ca ieire
standard( PUN:); cel mult 4 uniti de disc flexibil( A: B: C: D:). n acest caz nu se poate
realiza n mod direct paralelismul ntre aciunea CPU i operaiile I/O.
Arhitectura microcalculatoarelor pe 16 bii
Aceste calculatoare folosesc drept CPU un microprocesor pe 16 bii. Piaa
microcalculatoarelor pe 16 bii este dominat de IBM.
- 1979 - primul microprocesor pe 16 bii, 8086
- 1981 apare 8088 cu frecven de 4 MHz pe baza lui s-au construit primele
IBM-PC i IBM-PC XT dotat cu faciliti hard suplimentare
- 1982 - 80186 (mic extensie a lui 8086) i 80286 care extinde mult 8086:
frecvena lui este de 6MHz, are instruciuni main n plus i extinde modul de adresare.
St la baza celor mai multe tipuri de IBM-PC
- 1985 - 80386, microprocesor pe 32 bii la 20 MHz
- 1989 - 80486, 33 MHz, are instruciuni de calcul n virgul flotant; crete
randamentul de 2,5 ori.
Structura unui microprocesor pe 16 bii este urmtoarea:

















AH AL
BL
CL
DL
SP
BP
DI
SI
BH
CH
DH
CS
DS
SS
ES
IP
ALU
1 2 3 4 5 6
ADR
8087
80287
80387
ROM
EXTRAM
RAM
Date
Adrese
EU
BIU
CPU( I8086, 80286, 80386) COPM Memorie
PRN: A:, B: C:, D: CON:
- 15 -
Organizarea microprocesorului:
Componenta EU (Executive Unit):
- unitate aritmetico-logic ALU ce opereaz pe 16 bii
- 4 registre generale de 16 bii AX, BX, CX, DX fiecare mprite n 2 registre de
8 bii; AH, BH, CH, DH conin biii cei mai semnificativi; AX este acumulatorul general,
BX registrul de baz, CX registrul numrtor, iar DX registrul de date;
- registrul SP - indicator la sfritul stivei, CP registrul de baz al stivei, SI, DI
regitri de index pentru operaiile surs respectiv destinaie dintr-o instruciune main.
Componenta BIU (BUS Interface Unit): se ocup de calculele de adres i de
prima etap din execuia unei instruciuni (citirea codului instruciunii, decodificarea
instruciunii, citirea operaiilor din memorie, restul face EU).
O instruciune se reprezint pe 1-6 octei; componentele EU i BIU coopereaz
printr-un mecanism pipe: n BIU exist o zon tampon de 6 octei n care se afl
instruciunile ce urmeaz a se executa (n timp ce instruciunea curent este executat de
ctre EU).
Mecanismul de adresare
Calculele de adrese se fac de ctre BIU prin intermediul unitii de calcul
specifice ADR i a regitrilor CS, DS, SS, ES de cte 16 bii.
Memoria SC de acest tip este de 1MO: primele 16 blocuri a cte 64 KO formeaz
memoria RAM; urmeaz 5 blocuri a cte 64 KO pentru memoria ecran i pentru a reine
coninutul memoriei ROM n timpul funcionrii sistemului.
O adres se reprezint pe 20 bii (2
20
= 1 MO), aceasta este capacitatea magistralei
de adrese; magistrala de date are capacitatea de 16 bii.
Cum se obine o adres de 20 bii folosind cuvinte de 16 bii?
Orice program utilizabil este compus din 4 tipuri de segmente:
- segment de cod ce conine instruciuni main;
- segment de date ce conine date asupra crora se acioneaz;
- segment de stiv pentru legtura ntre programe-apelatoare i subrutine apelate
- segmente suplimentare (extrasegmente)
corespunztor sunt ataai unul din registrele de segment CS, DS, SS, ES.
Prin convenie, adresa de nceput a fiecrui segment este multiplu de 2
4
(rezult c
primii 4 bii, cei mai nesemnificativi ai adresei de nceput de segment vor fi 0, deci
regitrii de segment au numai 16 bii ce conin biii 4-19 ai adresei de nceput a
segmentului). Un segment poate avea cel mult 2
16
octei rezult c pentru a specifica
deplasamentul n cadrul segmentului (OFS), BIU calculeaz adresa fizic astfel:
AF= CRS- 2
4
+ OFS ( nmulire cu 2
4
nseamn deplasare cu 4 bii spre stnga)
De exemplu, dac CRS= 7BC1, OFS= 54A3 atunci
AF= 7BC1* 2
4
+ 54A3= 7BC10+ 54A3= 810B3.
Acest mecanism de adresare este tipic pentru 8086 i se numete mod real (Real
Virtual Address Mode)
ncepnd cu 80386 mai apar 2 moduri de adresare: paginat i virtual (pentru a
permite adresarea a mai mult de 1MO).
Sistemul de intrare/ieire
Coninutul memoriei ROM este nscris n momentul fabricrii SC i nu poate fi
modificat. Cea mai mare parte a memoriei ROM o formeaz componenta ROM-BIOS
care ofer rutine de I/O comode. Prin distribuirea surselor de specificare pentru BIOS,
- 16 -
IBM a impus un standard hard/soft ce const n apeluri BIOS, locaii de memorie, adrese
de periferice rmase aceleai i azi. Rutinele BIOS nu sunt ntreruptibile (pentru sisteme
multiutilizator, n special UNIX, se rescriu unele rutine din BIOS).
Principalele tipuri de dispozitive periferice legate la SC de tip IBM-PC sunt:
- consola: terminal legat la memorie ecran printr-un adaptor video
- imprimanta
- cel puin o unitate de disc flexibil
- una sau dou uniti de disc dur( Winchester).

1.1.5. Istoricul unor SO interactive

SO RSX
Are ca reprezentant principal sistemul RSX -11M conceput de firma DEC pentru
minicalculatoare din seria PDP-11. Este orientat pentru lucrul n timp real, dar permite
dezvoltarea de programe pentru multe limbaje de programare. n Romnia, n 1978 apar
dou SO compatibile RSX elaborate de ITCI Bucureti: SO AMS i SO MINOS; pn la
un anumit nivel erau compatibile ntre ele i compatibile cu RSX, dar comenzi cu
aceleai funcii aveau nume diferite i au aprut confuzii. In 1983-1984 se reunesc
funciile celor dou SO i apare SO MIX care funcioneaz i azi n paralel cu RSX.
SO UNIX
In 1968 Ken Thompson de la Bell Labs, n timp ce lucra la implementarea SO
MULTICS, i pune problema elaborrii unui sistem simplu de manipulare a fiierelor la
SC PDP-7. mpreun cu Dennis M.Ritchie creeaz sistemul UNIX. In 1969 apare prima
versiune a SO UNIX scris n limbaj de asamblare, iar n 1970 versiunea a doua. In 1972
Dennis M. Ritchie proiecteaz limbajul de programare "C" i n urma acestui fapt, n
1973 apare versiunea a treia UNIX scris aproape exclusiv n "C"; textul surs al SO
conine 10-15000 linii surs n "C", deci limbajul de programare este de nivel nalt cu
portabilitate ridicat i cel mul 1000 linii necesare a fi scrise n limbajul de asamblare al
mainii pe care se implementeaz SO UNIX. Prima implementare industrial se face pe
PDP-11/45, iar firma Bell (AT& T Bell Laboratories) obine drept de licen asupra lui
UNIX i l livreaz gratuit universitilor asigurndu-I astfel popularitatea. In 1978 apare
versiunea a aptea, mbuntit prin contribuia universitii Berkeley California. In
1984 AT & Bell creeaz UNIX SYSTEM V; firma Microsoft cumpr licena sistemului
de la AT & T, fr drept de utilizare a numelui UNIX. Microsoft numete aceast
implementare XENIX. n ultimii ani au aprut mai multe implementri de reele de
calculatoare care funcioneaz sub UNIX, utiliznd protocoale care devin standard (ex.
TCP/IP, TELNET). UNIX este acum sistem de referin n sistemele de operare.
SO CP/M (Control Program for Microcomputers)
Este un SO rezident pe disc flexibil pentru dezvoltarea de programe n monoacces
conversaional, operaional pe microcalculatoare ce folosesc microprocesoare pe 8 bii
(Z80, I8080) i care au n configuraie uniti de disc flexibil. A fost proiectat de
G.Kildall care l propune spre omologare firmei Intel n 1973; aceasta refuz. Sistemul
este omologat de Digital Research Co., n 1981 are loc o rspndire masiv a sistemului;
IBM Xerox, HP l preiau i-l implementeaz pe calculatoarele lor de 8 bii.
In Romnia, primul microcalculator pe 8 bii a fost FELIX-M18; a funcionat nti
sub SO SFDX-18, apoi sub CP/M care a fost implementat apoi pe toate calculatoarele de
- 17 -
8 bii (M18, TDP, JUNIOR, M216, CUBZ). Exist o variant a sistemului i pe 16 bii,
CP/M-86 i dezvoltri pentru CP/M multiutilizator i CP/M n reea.

SO MS-DOS
A fost comandat n 1979 de ctre IBM firmei Microsoft; IBM l modific i-l
numete PC-DOS. MS-DOS a fost lansat n 1981 odat cu primul IBM-PC. Este un
sistem monoutilizator, monotasking cu interfa simpl ntre utilizator i hard.

Istoric:
- 1981 versiunea 1: are la baz CP/M; se pot adresa 640 KO memorie; gestioneaz
dischete de 5,25" cu capacitate de 320 KO;
- 1983 vers. a doua: permite gestionarea dischetelor de 5,25" cu 360 KO i a discurilor
dure cu maximum 32 MO; sunt introduse direct cu structura de arbore din UNIX;
- 1985 versiunea a treia poate lucra cu dischete de 3,5", permite gestiunea releelor locale
cu partajarea resurselor ntre utilizatori;
- n versiunea a patra apar incompatibiliti cu versiunile anterioare;
- 1990 vers. a cincea: funcioneaz pe orice tip de PC. n prezent exist versiunea 6.22.
Firma Digital Research creeaz DR-DOS, pn la versiunea a asea, mai bune ca
DOS n unele aspecte.
Sub DOS apare o suprafa utilizator, extensie a SO-DOS numit WINDOWS
utilizabil la PC cu microprocesor 80386, cel puin 384 KO memorie i disc dur.


1.2. Structura i funciile sistemelor de operare

1.2.1. Tipuri de SO; clasificri

Se vor prezenta clasificri ale SO n funcie de urmtoarele criterii:
a) dup configuraiile hard pe care le deservesc
b) dup gradul de portajabilitate a resurselor;
c) dup tipurile de interaciuni permise
d) dup organizarea intern a programelor ce compun SO
a) Clasificarea dup configuraiile hard pe care le deservesc
1) SO pentru microcalculatoare: deservesc microcalculatoare pe 8, 16 i 32 bii;
sunt sisteme simple; sarcinile pe care le ndeplinesc sunt: punerea n lucru la pornirea SC,
schimburi ntre memoria intern i periferice, gestiunea unui sistem de fiiere capabil s
manipuleze un numr mare de fiiere de dimensiuni mici; sunt de tip monoutilizator, dar
se pot lega n reele sau se pot conecta la sisteme mari fiind privite ca posturi de lucru.
2) SO pentru minicalculatoare: inand cont de faptul c cele mai multe
minicalculatoare azi sunt SC interactive multiutilizator SO au n vedere partajarea
resurselor, planificarea CPU pentru servirea utilizatorilor etc. (se lucreaz de obicei n
time-sharing i multiprogramare).
3) SO pentru calculatoare medii-mari (main-frame computers): aceste tipuri
de SC suport att modul de lucru serial ct i interactiv, sunt puternice, au dimensiuni
mari ale cuvintelor de memorie(pn la 64 bii) i au conectate un nr. mare de periferice.
b) Dup gradul de partajabilitate a resurselor
- 18 -
1) SO monoutilizator: la aceste SO la un moment dat se execut un singur
program i acesta rmne activ din momentul lansrii n execuie pn la terminarea lui;
la sisteme mari se aplic tehnica swapping, evacuarea temporar a unui program din
memoria intern pe disc magnetic, n acest timp n memoria intern este ncrcat alt
program care este executat parial... (ct timp un program este n memorie el are acces la
toate resursele sistemului).
2) SO multiutilizator: trebuie s aib n vedere partajarea memoriei, a timpului, a
perifericelor etc. ntre utilizatorii activi (la un moment dat exist mai multe procese active
care se execut concurent).
c) Dup tipurile de interaciuni permise
1) Sisteme seriale: lucrrile se execut pe loturi gata pregtite; utilizatorul nu
poate interveni.
2) Sisteme interactive: n funcie de rezultatele intermediare utilizatorul poate
decide modul de continuare a activitii proprii; SO trebuie s gestioneze i terminalele
de teletransmisie la care se afl utilizatori.
3) Sisteme n timp real: SO trebuie s deserveasc n timp prestabilit fiecare
serviciu ce i se cere.
Acest criteriu de clasificare este relativ: exist sisteme seriale ce permit
interaciunea cu programele; sisteme interactive cu faciliti de lucru serial etc.; exist SC
care pot lucra n timp real i s deserveasc n acelasi timp( cu prioritate mai mic) alte
programe de tip serial sau interactiv n regim de multiprogramare clasic.
d) Dup organizarea intern a programelor SO
1) Sisteme monolitice: SO este o colecie de proceduri cu proprietatea c
execuia unei proceduri nu poate fi ntrerupt; programul utilizatorului se comport ca o
procedur apelat de SO; programatorii pot apela n maniera apelurilor sistem rutine ale
SO. Esenial este legtura de tip apel-revenire fr posibilitatea de ntrerupere a fluxului
normal de execuie.
2) Sisteme cu nucleu de interfa hardware: concentreaz sarcinile de nivelul
cel mai apropiat de hard ntr-o colecie de rutine ce formeaz nucleul SO, componentele
nucleului se pot executa concomitent. Toate aciunile utilizatorului asupra echipamentului
hard trec prin nucleu. Exemple de nucleu: BIOS sub CP/M i MS-DOS.
3) Sisteme cu structur stratificat: sunt generalizri ale celor cu nucleu. SO
este construit nivel dup nivel, componentele fiecrui nivel folosete serviciile oferite de
nivelul inferior. Sunt cele mai rspndite SO, "prinii" acestor sisteme sunt SO THE i
SO MULTICS.
4) Sisteme organizate ca maini virtuale: echipamentul hard servete n regim
de multiprogramare( sau time-sharing) mai multe procese. Fiecare proces dispune n mod
exclusiv de resurse (n principal memorie). Fiecare dintre procesele deservite este un SO
ce are la dispoziie toate resursele alocate procesului respectiv de ctre echipamentul
hard. n acest mod, pe acelai echipament hard se poate lucra sub mai multe SO simultan.
Tipic este SO VM/370 (Virtual Machines for IBM-370) care coordoneaz mai multe SO
conversaionale monoutilizator de tip CMS (Conversational Monitor System); fiecare
utilizator lucreaz sub propriul CMS. Conceptul de programare orientat obiect
contribuie la dezvoltarea de SO sau componente de SO organizate ca maini virtuale
(similitudine ntre obiect i main virtual).

- 19 -
1.2.2. Structura i funciile generale ale SO

Funciile SO
Principala menire a unui SO este pe de o parte de a facilita accesul utilizatorului
la sistem, iar pe de alt parte exploatarea eficient a echipamentelor de calcul.
O noiune ce va fi des utilizat n continuare este noiunea de proces . Un proces
(task) este un calcul ce poate fi efectuat concurent cu alte calcule( noiunea se va utiliza si
n loc de program)
Obiectivele fundamentale ale SO sunt
a) optimizarea utilizrii resurselor;
b) minimizarea efortului uman de programare i utilizare;
c) automatizarea operaiilor manuale n etapele de pregtire i exploatare a SC;
d) creterea eficienei utilizrii SC prin scderea costului de prelucrare a datelor;
Pentru a evidenia funciile SO se vor analiza strile n care se poate afla un
proces gestionat de SO i acionarea acestuia pentru tranziia ntre diversele stri ale
procesului.


























Prezentare
HOLD
READY
RUN
FINISH
Eliberare
WAIT
SWAP
Conversie de intrare,
eventual prin
SPOOLING
Alocare memorie
Creare proces
Alocare periferice( fiiere)
Alocare memorie
Rencrcare
Eliberare spaiu disc
Alocare
procesor la
proces
Eliberare
procesor
Rezolvare
ntrerupere,
terminare I/O
Lansare operaie
Eliberare procesor
Ocupare spaiu disc
Evacuri
Eliberare memorie i
procesor
Eliberare procesor,
periferice, memorie
tergere proces
Conveni de ieire,
eventual prin SPOOLING
- 20 -
Structura general a unui SO

Se va prezenta un SO ipotetic. La SO reale unele dintre componente vor fi
"atrofiate", altele pot fi mai dezvoltate. Iat cteva definiii utile:
SO - set de proceduri manuale i automate ce ofer unui grup de utilizatori
posibilitatea s foloseasc n acelai timp i eficient sistemul de calcul.
Operator uman - persoana care colaboreaz cu SO pentru desfurarea activitii
SC.
Utilizator - persoan ce folosete SC; n sistemele seriale SO nu-l consult la
executarea programului, n cele interactive poate interveni.
J ob - colecie de activiti necesare execuiei unei lucrri.
Faza- este o subunitate a jobului. Este acceptat ca tip de faz una dintre
urmtoarele activiti:
- editarea unui text;
- compilarea unui program;
- editarea de legturi;
- execuia unui program;
- depanarea asistat de calculator a unui program.
Structura general a unui SO este urmtoarea:










Gestiune
tehnic
SO













Utilitare Biblioteci de
programe
Baze de date Alte aplicaii
Interpretoare
Macro-
procesoare
Editoare de
texte
Rutine de
depanare
Compilatoare Asambloare
Link-editoare Loadere
Gestiune
tehnic
SO
Gestiune
economic
SO
Suprafee de operare
Medii de
programare

Bibliote-
car
P
A
R
T
E

C
O
N
T
R
O
L
P S
A E
R R
T V
E I
C
I
I
UTILIZATOR
HARD
Planificare lucrri i alocare resurse
Gestiune fiiere
I/O la nivel fizic
Gestiune memorie
Gestiune
procese
Dispecer
procesoare
ntreruperi
- 21 -
PARTEA DE CONTROL A UNUI SO: este partea aflat n legtur direct cu
operatorul uman i indirect cu utilizatorul. Componentele ei sunt executate n mod
master, iar principalul ei rol este de a realiza legtura cu echipamentul hard.
ntreruperi: ansamblu de rutine, fiecare fiind activat la apariia unui semnal
fizic de ntrerupere; corespunztor SO efectueaz aciunile aferente ntreruperii
respective.
Mecanismul de funcionare a unei ntreruperi este urmtorul( presupunem c
execuia unei instruciuni main nu poate fi ntrerupt):
- starea unui program la un moment dat( PSW) este perechea format din:
a) adresa urmtoarei instruciuni de executat;
b) coninutul tuturor regitrilor main la terminarea ultimei instruciuni
- fiecare surs posibil a unei ntreruperi are asociat o locaie fix de
memorie n care se afl o adres care indic locul n memorie n care se afl
secvena de instruciuni (numit handler) ce deservete ntreruperea;
- la apariia semnalului de ntrerupere se execut n ordine urmtoarele activiti:
- se salveaz n memorie( n stiv sau ntr-o zon special) PSW al
programului n curs de desfurare;
- se restaureaz PSW al handlerului asociat ntreruperii;
- handlerul execut aciunea pentru revenirea ntreruperii;
- se salveaz PSW al handlerului;
- se salveaz PSW al programului ntrerupt;
Gestiune procese: creeaz procese, se ocup de cooperarea i concurena ntre
ele, terge procesele din sistem la terminarea lor.
Dispecer procesoare: la sistemele multiprocesor repartizeaz sarcinile de calcul
solicitate de procese procesoarelor libere.
Gestiunea memoriei: aloc memorie intern proceselor i asigur protecia
memoriei interprocese.
I/O la nivel fizic: asigur desfurarea operaiilor de I/O elementare cu toate
perifericele din sistem realiznd, dac se poate, paralelismul cu activitatea procesorului
central; este o component dependent hard, compatibilitatea cu sistemul este realizat de
drivere.
Gestiunea fiierelor: colecie de module pentru deschidere, nchidere i acces la
fiierele de pe diferite suporturi, este componenta cel mai des folosit de utilizator.
Planificarea lucrrilor i alocarea resurselor: resursele sistemului sunt resurse
fizice ( procesoare, memorie intern, periferice) i resurse logice ( proceduri comune,
tabele sistem, ...); acest compartiment asigur planificarea proceselor astfel nct ele s
poat obine resursele necesare individual sau partajat cu alte procese.
Gestiunea tehnic a SO: ine evidena erorilor hard i furnizeaz informaii
statistice asupra gradului de utilizare a componentei SC.
Gestiunea economic: ine evidena utilizatorilor, lucrrile executate de ctre
acetia, resursele consumate, ...

PARTEA DE SERVICII
Compilatoarele: programe ce traduc texte surs din limbaje de nivel nalt n
limbaj main; rezultatul compilrii este un modul obiect.
- 22 -
Asamblorul: program ce traduce texte scrise n limbaj de asamblare n limbaj
main.
Link-editorul: grupeaz unul sau mai multe module obiect mpreun cu
subprograme de serviciu din biblioteci, n programe executabile; ofer posibilitatea
segmentrii.
Loader: este un program care are ca sarcini:
- citirea unui program executabil pe un suport;
- ncrcarea programului n memorie;
- lansarea programului n execuie;
- dac programul este segmentat se ncarc doar segmentul rdcin.
Interpretor: program ce execut pas cu pas instruciunile descrise ntr-un anumit
limbaj. Exist dou tipuri de interpretoare:
- interpretoare pentru limbaje ca BASIC, PROLOG, LISP
- interpretoare de comenzi.
Macroprocesor: program ce transform o machet de program pe baza unor
parametri, ntr-un program surs compilabil.
Exemplu: dac se scrie urmtoarea machet:
MACRO ADUNA &1, &2, &3
LOAD &1
ADD &2
STORT &3
ENDMACRO
atunci la apelare prin ADUNA A,B,C se execut calculul C:=A+B.
Aceeai metod se aplic i la scrierea parametrizat a unei succesiuni de comenzi ale
SO.
Editor de texte: program interactiv pentru introducerea i corectarea de texte.
Rutine de depanare: asist execuia programului utilizatorului i-l ajut s
depisteze cauzele erorilor aprute n timpul execuiei. La apariia n execuie a unui
eveniment deosebit( depiri indici, adres inexistent, cod operaie necunoscut)
controlul se d depanatorului. Acesta mai poate primi controlul n locuri marcate de ctre
utilizator( breakpoint). La primirea controlului depanatorul poate afia valorile de
variabile sau locaii de memorie, poate afia parial sau total istoria de calcul.
- tipuri de depanatoare:
- main: opereaz cu adrese fizice, locaii de memorie, configuraie de
bii; fiecare SO dispune de asemenea depanator;
- simbolic: opereaz cu elemente ale textelor surs ale programului ( linie
surs, variabil, procedur, stiv de apel ale procedurilor). Acest tip de
depanatoare se construiesc la implementarea limbajului de nivel nalt(ex. Pascal).
Cel mai cunoscut exemplu de depanator simbolic este TURBO DEBUGGER ( Borland)
pentru toate limbajele medii turbo (Pascal, C, Basic, Prolog, MSM).
Bibliotecarul: program cu ajutorul cruia utilizatorul poate comanda pstrarea
programelor proprii n fiierele de tip bibliotec, poate copia, terge insera, modifica
programul n biblioteci. Exemple: LBR sub MS-DOS, "ar" sub UNIX, LIB80 sub CP/M
Medii de programare: componente complexe destinate dezvoltrii de programe.
nglobeaz urmtoarele componente:
- editor texte;
- 23 -
- compilator interactiv i compilator serial( clasic);
- editor de legturi sau mecanism echivalent;
- interpretor pentru execuia rezultatului compilrii;
- depanator, de regul simbolic;
- o component de legtur cu exteriorul( cu SO).
Suprafee de operare: au rolul de a "mbrca" SO pentru a face mai uoar
operarea (pentru IBM-PC i componente; sub SO DOS i UNIX). nlocuiesc limbajul de
control al SO.
Exemple: XTREE, NC, PCSHELL, PROGRAM MANAGER, ...
Din aceast prezentare se observ c SO au un caracter modular i o structur
ierarhic. Modularizarea const n partiionarea unui program mare n module cu sarcini
precise, iar caracterul ierarhic n faptul c orice component acioneaz sub controlul
componentelor interioare ei, apelnd primitivele oferite de acestea. Datorit acestor
proprieti rezult o implementare i ntreinere mai uoar si portabilitatea SO.

1.2.3. Structurile unor SO particulare

SO RSX
Este un SO operaional pe minicalculatoare compatibile PDP; echivalentul lui
romnesc este MIX, operaional pe CORAL i INDEPENDENT. Este un sistem
interactiv cu multiprogramare care asigur controlul i distribuia resurselor SC ntre
utilizatorii activi. Structura RSX este urmtoarea:






















Monitorul: controleaz activitatea sistemului, gestioneaz resursele sale i
execut directivele apelate de programele utilizator.
F77 EDI PIP
PAS EDT BRU
XCC TKB DMP
CBL LBR BAD
BASIC ODT

Compilatoare
Dezvoltare
programe
Tratare
fiiere
Alte
MCR
.AT
Monitor
SGF
Drivere
Programare
Exploatare
- 24 -
Driverele: sunt programe (module) specializate care asigur interfaa i
controleaz operaiile de I/O cu diferite tipuri de periferice ale sistemului.
SGF: este un ansamblu de module pentru acces la fiiere i controlul acestora;
asigur crearea, prelucrarea, protecia fiierelor.
Procesorul de comenzi MCR (Monitor Consol Routine) este un task permanent
activ ce lucreaz sub controlul monitorului; preia de la terminale comenzile date de
utilizator, le decodific i le trimite monitorului pentru executare.
Procesorul fiierelor de comenzi indirecte AT. permite executarea fr
intervenia utilizatorului a unui ir de comenzi pregtite de utilizator ntr-un fiier.
Conceptul de prompter. Un prompter este un grup de caractere care marcheaz
momentele n care sistemul este pregtit s preia comenzi de la utilizator. RSX admite
trei tipuri de prompter:
- prompter implicit: >apare cnd lipsesc ceilali prompteri, terminalul nu este
ocupat de sistem i utilizatorul apas <CR>;
- prompterul procesorului de comenzi: MCR >sau MCL >indic faptul c
utilizatorul poate transmite sistemului comenzi ale MCR; apare i la tastarea <CTRL/C>;
- prompteri de task: lll>; cele trei caractere reprezint numele task-ului sub care se
lucreaz; se solicit comenzi proprii task-ului respectiv.
UIC (User Identification Code): orice utilizator este recunoscut de ctre RSX
prin intermediul unei perechi de numere octale [g,m] cu
0 g 377 s s
i
0 m 377; s s
g
este codul unui grup de utilizatori, iar m este numrul unui utilizator din grup.
Funcii ale UIC:
- precizarea statutului utilizatorului fa de resursele sistemului; g10
nseamn utilizator privilegiat (sau sistem), are la dispoziie toate facilitile oferite de
ctre sistem; utilizatorii neprivilegiai nu pot modifica prioritile unor utilizatori,
definirea partiiilor, nu au acces la fiiere speciale, nu au acces la unele periferice, ...
- regsirea fiierelor rezidente pe disc magnetic; fiierele unui utilizator
sunt repertorizate ntr-un fiier numit UFD (User File Directory) legat de UIC
(UFD=UIC director).
Se mai utilizeaz noiunile de
UIC implicit (atribuit de RSX utilizatorului n sesiunea de lucru)
UIC proprietar (de protecie) cel sub care se deschide sesiunea de lucru; n
general UIC-ul director coincide cu UIC-ul implicit i cu cel de protecie; UIC-ul de
protecie rmne neschimbat, celelalte pot fi schimbate.
UIC-uri speciale ce desemneaz directoare speciale din RSX, de exemplu:[1,54]
conin task-urile SO;[5,54] conin compilatoarele;[1,1] conin bibliotecile sistem

SO UNIX
Este un SO interactiv, multiutilizator, de uz general, disponibil pe
minicalculatoare, calculatoare medii-mari. UNIX a devenit SO universal, element de
referin pentru toate SO desi este un sistem relativ mic.
Structura SO UNIX este urmtoarea:
- 25 -




















Cdevsw i Bdevsw sunt componente de legtur direct cu echipamentul hard i
nucleul sistemului. Sunt ansamble de rutine dependente de main prin care se realizeaz
legtura cu perifericele sistemului de tip caracter respectiv bloc i sistem; sunt scrise n
limbaj de ansamblare( singurele componente scrise n acest limbaj) n aproximativ 1000
linii surs limbaj de asamblare.
Kernel este nucleul SO, este scris n limbajul "C", are 10000-12000 linii surs.
Este independent de maina pe care opereaz si este partea ascuns utilizatorului, asupra
creia lucreaz administratorul sistemului. Prin aceast component se realizeaz legturi
cu toate resursele sistemului (periferice, linii de comunicaie, memorie, timp,...). Sarcinile
principale ale nucleului sunt gestiunea proceselor i gestiunea periferice. Nucleul conine
componenta de planificare.
File System este componenta ce organizeaz i gestioneaz datele ce se
vehiculeaz n sistem si este cea mai important component a SO UNIX.
Shell este interpretorul de comenzi UNIX. Sarcinile lui sunt:
- supravegheaz fiecare terminal, preia, decodific i transmite nucleului
comenzile utilizator;
- ofer utilizatorului posibilitatea s controleze succesiuni de comenzi adresate
nucleului( shell este de fapt un limbaj de programare, instruciunile lui fiind comenzi
UNIX);
- ca legtur direct ntre utilizator i nucleu Shell ofer posibilitatea redirectrii
I/O i a legrii pipe a programelor;
Din punct de vedere al utilizatorului UNIX are 3 caliti:
- este un sistem interactiv: toate comenzile se primesc de la terminal n
regim conversaional;
- este sistem multi-user: lucreaz n acelai timp cu mai muli utilizatori;
disciplina de servire este time-sharing;
HARD
Cdevsw
Bdevsw
Kernel
Shell
File System
- Manipulare fiiere generale: ls, cd, cat, mv, rm,
- Manipulare fiiere text: lp, split, sort, pr, paste,
- Editoare de texte: vi, ed, ex.
- Preparare de documente: troff, nroff, tbl, equ, pic,
- Comunicaii ntre utilizatori: write, who, mail, mesq,
- Dezvoltare de programe: C, cb, ar, Pascal, F77, shell,
- Administrare sistem: paswd, mkfs, cpio, tar,
- 26 -
- este sistem multi-tasking: fiecare utilizator poate avea mai multe
programe n
execuie: linia de terminal cu care se lanseaz o comand dup care va urma alta se
termin cu &; nu pot fi lansate comenzi ce folosesc resurse n comun.
Exemple: $ cp A B & - copiere fiiere
$ lp C & - tiprirea fiierului C la imprimant
$ pascal D - compilarea Pascal a programului D.
Manipularea de fiiere generale: afiarea rezumatelor unor directoare, copiere,
concatenare, tergere, schimbare poziie fiiere n structura arborescent.
Manipularea fiierelor text: operaii cu fiiere text: caut n fiiere anumite linii,
detecteaz fiiere cu anumit coninut, ordoneaz alfabetic liniile unui fiier text,
determin numrul de linii, cuvinte n fiierul text,...
Editoare de texte: UNIX a fost primul SO dotat cu editor de texte video, vi.
Preparatoare de documente: utilitare ce permite punerea n pagin pentru
manuale i cri, permit utilizarea tabelelor, formulelor, ... ( ntr-o manier mai greoaie ca
WORD, VENTURA, dar s-au folosit acum 20 de ani).
Comunicaii ntre utilizatori: UNIX este SO cel mai rspndit ce practic pota
electronic n care conceptul fundamental este cel de csu potal, adic zon n
memoria intern sau pe disc proprie fiecrui utilizator unde se depun mesaje i se preiau;
expedierea i prelucrarea se face periodic sau la cerere.
Dezvoltare de programe: compilatoare pentru cele mai modene limbaje.
Administratorul sistemului: are ca sarcini ntreinerea fiierelor de parole,
evidena utilizatorilor, ntreinerea sistemului de fiiere de pe discuri i benzi, efectuarea
de salvri i restaurri periodice.

SO CP/M
Este compus dintr-un nucleu rezident i o serie de programe de sistem la care
utilizatorul poate aduga programe noi. Are ca i caracteristici principale
transportabilitatea programelor i fiierelor i modul simplu de operare. Structura( pentru
microprocesoare pe 8 bii) este urmtoarea:
















- Editoare de texte: ED, WS
- Compilatoare: F80, CII, PASCAL, TURBO
- Linkeditoare: L80, REL, LN, LINKMT
- Bibliotecare: LIB80, LIBUTIL, LIBMT
- Baze de date: DBASE2
- Tratare fiiere: PIP, DIP, ERA, POWER, REN, TYPE
CCP
BDOS
BIOS
- 27 -
BIOS( Basic Input/Output System): preia i uniformizeaz diferenele
constructive ale perifericelor ataate fiecrui tip de microcalculator; conine 17 rutine,
punctele de intrare n ele apar la nceputul BIOS ntr-o tabel cu 17 instruciuni de salt.
Aceast tabel constituie interfaa dintre BIOS i BDOS (se poate utiliza i ca interfa cu
programele de aplicaii).
BDOS( Basic Disk Operating System): set de rutine, invariant n raport cu
echipamentul, ce apeleaz funciile BIOS i execut operaiile I/O cu periferice standard.
CCP (Console Command Processor): asigur interfaa sistem operator; sunt
rutine independente de echipament, se citesc i se interpreteaz comenzile date de un
terminal.
Sub CP/M nu se pot dezvolta programe mai mari de 64 KO (practic 55 KO).

SO MS-DOS
Nucleele MS-DOS i PC-DOS seamn cu nucleul CP/M, dar sunt construite
pentru microprocesoare pe 16 bii. Structura sa este urmtoarea:






















ROM-BIOS: este o component livrat de firma productoare a calculatoarelor n
memoria ROM a SC i egalizeaz toate diferenele constructive ale SC fa de conveniile
DOS. Ofer rutine de ntrerupere prin care se realizeaz legtura cu perifericele.
DISK-BIOS: component independent de hard ce extinde funcia ROM-BIOS.
Este coninut n fiiere pe disc (IBMBIO.COM sau BIO.COM sau IO.SYS)
Funciile BIOS:
- ncrcarea SO;
- determinarea i testarea componentelor periferice;
- testarea memoriei RAM;
Suprafee de operare XTPRO, NC, PCSHELL, WINDOWS
- Compilatoare: F77, C, GWBASIC,
- Bibliotecar: LBR
- Editoare de legturi: LINK, TLINK
- Preparatoare de documente: WS WORD, VENTURA,
- Editoare de texte: EDIT, WS, WORD,
- Medii de programare TURBO: PASCAL, C, PROLOG,
- Programe utilitare
COMMAND
BDOS
DISK BIOS
ROM BIOS
- 28 -
- funcia privind lucrul cu ecranul video;
- funcia pentru citirea tastaturii;
- funcia de lucru cu discuri (fixe i flexibile);
- funcia pentru lucrul cu linii de comunicaii asincron (imprimante,
plottere, ...)
BDOS: extinde funcia BIOS, mai ales cele referitoare la lucrul cu discuri. Este o
component coninut n fiiere pe disc (IBMDOS.COM sau DOS.COM sau
MSDOS.SYS).
Sarcini: - gestiunea memoriei (alocare, eliberare spaii)
- gestiunea proceselor (ncrcare, lansare n execuie, terminare);
- execuia operaiilor de I/O cu periferice de tip caracter
- tratare fiiere disc: creare, acces, deschidere, nchidere, tergere,
redenumire, ...
- protejarea fiierelor ntre mai multe procese active;
- gestiunea structurilor arborescente i manipularea directoarelor;
- gestiunea reelelor, orologiilor, calendarului.
COMMAND: preia comenzile utilizatorului de la tastatur i le lanseaz n
execuie. Este o component coninut n fiierul command.com, numit interpretor de
comenzi, pe discul de pe care se ncarc sistemul. Are multe faciliti, dintre care
redirectare, legare pipe, ...

1.2.4. Cum devine operaional un SO?

Generare i configurare
De cele mai multe ori un SO este destinat numai unui tip de calculator, de
exemplu SO SIRIS este propriu SC FELIX-C256, SO RSX propriu SC compatibile PDP.
Au aprut n ultiml timp i SO ce pot fi implementate pe mai multe tipuri de sisteme de
calcul, sunt SO cu caracter portabil( efortul necesar trecerii de pe o main pe alta este
foarte mic n comparaie cu cel pentru rescrierea ntregului SO).
Exemplu - pentru CP/M trebuie rescris doar componenta BIOS;
- pentru UNIX trebuie rescrise cele 1000 linii surs n limbaj de asamblare
i maina trebuie s aib compilator "C".
Orice SO trebuie adaptat la configuraia hard a SC pe care va lucra. Pentru ca
adaptarea s se fac uor funciile SO trebuie s fie factorizate i parametrizate. Este
bine ca la proiectarea SO s fie avut n vedere posibilitatea de automatizare a procesului
de adaptare.
Procesul de adaptare a SO la configuraii i cerine date se numete generare,
instalare sau configurare a SO. Prin generare se obine imaginea unui disc sistem n care
sunt memorate programele i rutinele SO necesare i suficiente realizrii cerinelor i
configuraiei hard existente.
Generarea const n urmtoarele etape
- alegerea unui disc sistem: 1) se verific s nu aib sectoare defecte,
dac este defect sectorul zero discul nu poate fi disc sistem
2) se formateaz discul;
- un disc sistem trebuie sub orice SO s fie bootabil: dup
montarea discului, punerea sub tensiune a SC i perifericelor, apsarea butonului de
- 29 -
BOOT i eventual indicarea unitii pe care este montat discul, SO se ncarc i devine
operaional;
- finalul generrii presupune de obicei operaii de copiere:
administratorul de sistem completeaz discul cu programe pe care le consider necesare;
- generarea se face fr utilizatori n sistem.
SO RSX
Este configurat prin intermediul task-ului privilegiat VMR (Virtual Monitor
Console Rontine) care poate lucra sau automat( cu fiier de comenzi) fie manual (
comenzi de la inginerul de sistem). UIC-ul sub care se face generarea trebuie s fie
privilegiat. In ultima faz a generrii se creaz fiiere de UIC-uri i parole i fiierul
STARTUP.COM n care se trec comenzile RSX ce se execut la lansarea n execuie a
RSX.

SO UNIX
Detaliile generrii SO UNIX sunt stabilite pentru fiecare tip de SC n parte de
ctre echipa ce a implementat SO pe acel tip de main.
Fiecare pachet UNIX de referin pentru un anumit tip de calculator dispune de
fiiere de comenzi Shell pentru generare. Generarea UNIX nseamn recompilarea tuturor
componentelor ce vor intra n SO care se genereaz. Se livreaz ctre beneficiar pe suport
magnetic toate textele surs "C" i asamblare ce compun pachetul referin i a
documentaiilor aferente. Folosind fiiere UNIX de tip MAKEFILE este posibil
compilarea produselor ce compun sistemul. Acest tip de fiiere este destinat compilrii i
editrii de legturi ale unor produse program mari, obinute din zeci, sute de fiiere surs.
Pregtirea generrii nseamn stabilirea valorilor concrete ale unor constante ce apar n
aceste texte surs (ex. # define, # sf.). Generarea este fcut de un specialist n
implementarea UNIX pe maina respectiv i trebuie s asiste i administratorul
sistemului. n ultima faz a generrii administratorul stabilete parolele, conturile
utilizatorului, drepturile lor etc.

SO CP/M
Generarea se face manual:
- se formateaz i se verific o dischet( cu programele de formatare i verificare
existente).
- se lanseaz n execuie comanda SYSGEN (APPGEN) care citete nucleul
CP/M de pe o dischet sistem i-l pune pe cea pregtit (nucleul conine BIOS, BDOS,
CCP i programul BOOTSTRAP)
- se copiaz fiierele pe care utilizatorul dorete s le aib pe discheta respectiv;
Observaie: o dischet poate conine sistemele de operare pentru diferite tipuri de
calculatoare.

SO MS-DOS
Generarea se face pe dischet sau pe disc Winchester prin intermediul unor
comenzi standard. La generarea unui disc DOS se terg toate informaiile vechi de pe
discul respectiv.


- 30 -
Etape:
0) Partajarea discului Winchester( n 1-4 zone care se vd ca 1-4 discuri
mai mici); se face cu comanda FDISK;
1) Formatarea discului i verificarea sectoarelor lui: cu comanda
FORMAT cu opiunea /S. Efecte:
- n sectorul 0 se pune programul bootstrap de ncrcare a SO pe disc
- se depun pe disc fiierele IBMBIO.COM, IBMDOS.COM,
COMMAND.COM
- dac s-a fcut partajarea trebuie formatate toate partiiile (cu opiunea /S
se face pentru o singur partiie care a fost declarat activ cu FDISK)
2) Crearea fiierului de configurare: prin operaia de configurare se fixeaz
valorile unor parametri sistem:
- numrul fiierelor deschise simultan;
- numrul de zone tampon pentru I/O;
- numrul i dimensiunea stivelor;
- condiia de sesizare a tastrii <CTRL/BREAK>;
- conveniile de ar, timp, moned;
- precizarea unor drivere de I/O;
- existena unui alt ntreruptor de comenzi.
Aceti parametri sunt precizai n fiierul CONFIG.SYS (dac lipsete DOS le
atribuie valori implicite ce depind de tipul de calculator).
3) Crearea fiierului de comenzi iniiale. Dup fixarea parametrilor de
configuraie i ncrcarea interpretorului de comenzi, DOS caut pe disc fiierul
AUTOEXEC.BAT., fiier text ce conine comenzile ce se vor executa la lansarea DOS.
Comenzile se refer la:
- fixarea datei i orei exacte de pornire;
- fixarea modului de afiare a prompterului;
- fixarea directoarelor pe disc unde se caut comenzi externe ...
4) Copierea fiierelor dorite a fi pe discul sistem(comanda XCOPY).
Etapele 2-4( lansare, comanda FORMAT, creare fiiere CONFIG.SYS i
AUTOEXEC.BAT i lansare XCOPY pentru fiiere ce conin comenzi externe) se pot
realiza automat cu comanda extern SELECT.
Salvare, ntreinere, refacere
Exist ageni care perturb (distrug) informaiile de pe disc. Aceti ageni pot fi:
- accidentali (cderi de tensiune, distrugere fizic a discului, erori hard, ...)
- ru intenionai (intrui ce caut acces la informaii sau virui) - pentru
contracarare se folosesc conturi, parole, drepturi de acces.
n urma generrii, utilizatorul trebuie s-i pregteasc copii ale discului generat;
numrul de copii trebuie s fie direct proporional cu efortul de generare i importana
sistemului.
n timpul exploatrii se creaz fiiere ce pot fi importante. Utilizatorul trebuie s
fac copii de siguran, iar administratorul sistemului trebuie s fac periodic copii pentru
fiierele din ntregul sistem.
- 31 -
SO RSX
Copierea de fiiere se face cu utilitarul PIP; pentru salvri masive se folosete
utilitarul BRU (Backup and Restore Utility). BRU se poate folosi doar de ctre utilizatorii
privilegiai i ofer 2 servicii:
- copierea fiierelor pe band, fiierele se depun pe band ntr-un format special
pentru ca pe band s se poat face mai multe salvri succesive.
-refacerea unor fiiere de pe disc prin copierea lor de pe banda pe care au fost
salvate; restaurarea se poate face integral sau selectiv.

SO UNIX
cpio (Copy Input Output) - salvare i restaurare SO i salvare/refacere fiiere de
pe disc pe band;
tar (Tope Archive) - salvare/restaurare pe band a unui numr foarte mare de
fiiere ntr-un format special astfel nct selecia pentru restaurare s se poat face la nivel
de fiier i s se poat face salvri succesive;

SO CP/M
- permite salvarea de pe o dischet pe alta
- se folosesc utilizatoarele PIP, DIP i POWER (pentru salvri masive)
-
SO MS-DOS
- salvarea se face pe dischete;
- cel mai comod se folosete comanda extern XCOPY;
- se folosesc programe de comprimare (arhivare) pentru a minimiza dimensiunile
fiierelor.
Lansarea n execuie
Una din principalele sarcini ale SO este de a se autoncrca pe disc i a se
autolansa n execuie. Pentru lansare se folosete mecanismul Bootstrap (hard i soft).
Acesta const (pe scurt) din urmtoarele: n momentul apsrii butonului de pornire,
acest mecanism ncarc n memorie o anumit informaie, de regul un program ce
execut o aciune dup care acesta se autoelimin din sistem; acest bootstrop este format
de obicei dintr-un modul de program simplu care se poate ncrca manual sau poate fi o
funcie cablat a SC lansabil prin apsarea unui buton. Informaia ncrcat n sistem de
ctre bootstrap nu este monitorul rezident ci un program mai complex care tie s ncarce
monitorul rezident i s-l lanseze n execuie (la SO mari ntre lansarea bootstrap i
lansarea monitorului apar mai multe programe care se execut i apoi se autoelimin din
memorie). n prezent, suportul magnetic de ncrcare este sectorul zero al unui disc
magnetic. La unele SO se indic de pe ce disc se ncarc programele SO (Loaderabsolut
i IncrctorSO), la altele ncrcarea se face n mod "stand-alone". La terminarea
ncrcrii se lanseaz n execuie un fiier de comenzi iniiale, fiier care are un nume
prestabilit; n absena acestui fiier sistemul atribuie valori iniiale prestabilite pentru
parametrii sistemului.
Etapele ncrcrii i lansrii n execuie a SO
1) Se apas <START> i n acest moment programul APASASTART citete n
primele n locaii de memorie( notate M[0], M[1], ) codul main al programului
LOADERABSOLUT; n reprezint lungimea unui sector de pe discul de ncrcare.
- 32 -
APASASTART:
for i:=1 to n do read (M[i]);
transferla (M[0]);
{se citesc primele n rnduri de la intrarea standard, se depun n primele n locaii
de memorie i se trece la executarea instruciunii al crei cod se afl n prima locaie}
2) Dup transferla (M[0]) intr n lucru programul LOADERABSOLUT
LOADERABSOLUT:
repeat
for i:=1 to n do read(M[r+i]);
A:= M[r]; k:=M[r+i];
if k=0 then go to LANSARE
for i:=0 to k-1 do M[A+i]:=M[r+2+i]
until false;
LANSARE:
transferla (A);
r: adresa de la care exist n locaii libere n memorie
3) Programul LOADERABSOLUT citete un program care poate fi orict de
sofisticat, NCARCATORSO
4) Dup executarea ultimei instruciuni transferla(A) din LODERABSOLUT ntr
n lucru NCARCATORSO care ncarc de pe disc programele i rutinele (nucleul) SO.
5) La terminarea ncrcrii NCARCATORSO execut:
- tergerea din memorie a programului APASASTART
- tergerea din memorie a programului LOADERABSOLUT
- eliberarea spaiului de memorie ocupat de el cu excepia unei poriuni
- executarea instruciunii transferla (ASSO), unde ASSO este adresa de
start a SO
- dup acestea, ncrctorul i nchide activitatea
Codul programului APASASTART se plaseaz cu ajutorul unor instruciuni
main cablate sau existente n ROM de unde se lanseaz prin hard.

ncrcarea unor SO particulare
RSX.
La apsarea cheii BOOT se citete n memorie primul bloc din fiierul
[0,0]INDEXF.SYS;1 care coincide cu primul bloc fizic al discului i care conine
programul bootstrop al SO. Pe ecran apare prompter-ul i se citete numele RSX al
discului de pe care are loc ncrcarea. Dup ncrcare, se caut pe disc fiierul de
comenzi iniiale [1,2]STARTUP.COM
UNIX. Are loc un dialog ntre administrator i sistem: boot device? div (0,0) unix
dw: specific perifericul discului de pe care se face ncrcarea sistemului
0: numrul de ordine al discului din familia dw
0: numrul blocului (sectorului) pe disc unde se afl directorul rdcin
(root) al discului
- la pornire, dup terminarea ncrcrii UNIX caut fiierul de comenzi iniiale
/etc/rc
CP/M. ncrcarea se face ntotdeauna de pe prima unitate de dischet (n unitatea
"A:" trebuie s fie dischet sistem). Pe primul sector se afl programul bootstrap, pe
- 33 -
urmtoarele sectoare ale pistelor 0 i 1 se afl nucleul CP/M (componentele BIOS,
BDOS, CCP); acestea se ncarc n memorie RAM i se lanseaz n execuie CCP.
Dac n "A:" se afl dischet sistem atunci intr n lucru monitorul sistemului ale
crui rutine se afl n memorie ROM; se afieaz prompter-ul i se ateapt comenzi;
pentru a se intra n CP/M se introduce n "A:" o dischet sistem i se d comanda
>GF800 (la adresa F800 n ROM se afl rutina de nceput a ncrcrii).

MS-DOS. ncrcarea se face la punerea sub tensiune a SC. Procesul ncepe cu
lansarea unei rutine din ROM-BIOS care trateaz componentele hard ale SC; urmeaz
ncrcarea de pe prima unitate de disc sau de pe hard; se ncarc nti fiierele
IBMBIO.COM i IBMDOS.COM; urmeaz configurarea sistemului: se caut n
directorul rdcin al discului de ncrcare fiierul CONFIG.SYS (fiier text). n ultima
etap se lanseaz n execuie fiierul COMMAND.COM, acesta caut n directorul
rdcin fiierul AUTOEXEC.BAT i execut comenzile din el.

Comenzi de configurare:
BREAk = ON sau BREAK = OFF - se stabilesc condiiile n care sistemul
cerceteaz tastarea CTRL/C sau CTRL/Break, la fiecare apel sistem respectiv doar la
operaii I/O cu consol, imprimant sau adaptoare asincrone de comunicaii.
BUFFER = n - ne{ 1, 2, , 99} reprezint numrul zonelor tampon alocate de
sistem pentru schimburile cu discul;
FILES = m- me{ 8, 9, , 255} numrul maxim de fiiere ce pot fi deschise
simultan pentru toate programele active din sistem; pentru un program
m 20 s
(fiiere
nedefinite: I, O, erori, auxiliar pentru imprimant, ...)
DEVICE = [d:][cale] fiier - se specific numele unui fiier ce conine drivere
I/O altul dect cel standard;
drivere accesibile: ANSI.SYS (extinderea funciei de control ale ecranului i
tastaturii)
DRIVER.SYS (crearea unor echipamente logice de tip disc
asociate unor echipamente fizice)
RAMDRIVER.SYS ( ofer posibilitatea folosirii unui disc
ce are ca suport fizic o poriune din RAM, viteza de acces este mai mare)
SMARTDRV.SYS ( se creeaz mecanismul de memorie
cache; este posibil doar pentru microprocesoare cel puin 386 i sistemul de operare DOS
cel puin versiunea 5.0)











- 34 -
CAPITOLUL II

COMPONENTE I CONCEPTE FUNDAMENTALE

2.1. Procese

2.1.1. Conceptul de proces

La proiectarea unui sistem complex este necesar descompunerea lui n
subsisteme, adic modularizarea. Pentru proiectarea unui SO trebuie inut cont de faptul
c n funcionare apare un grad de nedeterminism: funcii sau servicii ale SO pot fi
solicitate de ctre evenimente ce apar la momentul de timp i cu frecvene imprevizibile:
- cereri de schimb ntre memoria intern i suportul extern de memorie;
- cereri de ocupare pentru perioade nedeterminate a unor periferice fizice, blocuri
de memorie sau componente soft;
- solicitarea sistemului de ctre utilizatori;
- apariia unor erori soft sau hard.
Pentru a putea satisface aceste cereri se introduce conceptul de proces sau task:
calcul ce poate fi executat concurent (n paralel) cu alte calcule. Este o abstractizare a
activitii procesorului, fiind considerat ca un program n execuie.
Existena unui proces depinde de existena a trei factori:
a) o procedur (set de instruciuni) ce trebuie executat;
b) un procesor ce poate executa instruciunile;
c) un mediu (memorie, periferice) asupra cruia s acioneze procesorul.
Paralelismul proceselor trebuie neles astfel: dac P
i
i P
j
sunt dou procese, iar
I
i
, I
j
respectiv H
i
, H
j
sunt momentele de nceput respectiv sfrit ale lor, atunci P
i
i P
j
se
execut concurent dac
min min ( I ,I ) ( H ,H )
i j i j
s
(de exemplu P
i
ncepe i se termin
numai dup ce a nceput P
j
).
Dac exist 2 procesoare este posibil un paralelism efectiv, P
i
i P
j
pot fi simultan
n starea RUN; n caz contrar procesorul execut alternativ instruciuni din cele 2 procese,
SO le comut ntre strile RUN i READY.
Definiia 2.1.1. Dou instruciuni succesive S1 i S2 pot fi executate n paralel
dac efectul lor asupra mediului este acelai, indiferent dac se execut nti complet S1
i apoi S2, invers sau execuia uneia ncepe nainte de a se termina execuia celeilalte.
Exemplu 2.1.1: S1: read (a);
S2: read (b); S1 i S2 sunt executabile n paralel
S3: c:= a+b;
S4: write (c);

Definiia 2.1.2. Un graf aciclic (X,U) este graf de preceden asociat unui
programdac X este mulimea instruciunilor programului, iar U={ ( S
i
, S
j
)| S
j
urmeaz
imediat dup S
i
i se poate executa numai dup terminarea lui S
j
} este mulimea arcelor.
- 35 -

Pentru exemplul 2.1.1 prezentat graful de preceden este urmtorul:





Figura 2.1.1




Un alt exemplu de graf de preceden:





Figura 2.1.2







Condiii de paralelism. Cnd dou instruciuni se pot executa n paralel?
Fie R(S
i
)= { a
1
,, a
m
} mulimea variabilelor referite de S
i
i ale cror valori
nu sunt modificate de ctre instruciunea S
I
i
W(S
i
)= { b
1
,, b
n
} mulimea variabilelor referite de S
i
i ale cror valori
sunt modificate de S
i
.
n exemplul 2.1.1 R(S1)= C, W(S1)= { a}
R(S2)= C, W(S2)= { b}
R(S3)= { a, b}, W(S3)= { c}
R(S4)= { c}, W(S4)= C.
Teorema 2.1.1 (Bernstein). Dou instruciuni vecine S
1
i S
2
pot fi executate n
paralel dac i numai dac
1) R(S
1
) W(S
2
)= C
2) R(S
2
) W(S
1
)= C
3) W(S
1
) W(S
2
)= C

S1
S2
S3
S4
S1
S2
S3
S4
S5 S6
S7
- 36 -

2.1.2. Mecanisme de specificare a concurenei

Grafurile de preceden sunt un model matematic comod, dar nu pot fi folosite n
mod direct pentru specificarea concurenei n limbaje de programare. Pentru aceasta se
vor folosi urmtoarele construcii:

a) Mecanismul FORK-JOIN-QUIT
A fost introdus de ctre Conway(1963) i mbuntit de ctre Denning i Von
Horn (1966)
Sintaxa:
FORK etichet;
Se creeaz dou procese care se vor executa concurent. Instruciunile primei
secvene ncep la etichet, iar instruciunile celei de-a doua la instruciunea ce urmeaz
dup FORK;
JOIN numr, etichet;
Se ateapt terminarea a numrului de procese care o execut; dac a fost
executat de mai puin de numr ori atunci se trece la instruciunea ce urmeaz, dup ce
s-a executat a numr oar se trece la instruciunea cu etichet. Este o secven
indivizibil i are efectul:
numr:= numr 1;
If numr=0 then goto etichet;
QUIT; - are ca efect terminarea procesului care o execut; urmeaz dup JOIN
Pentru cele dou grafuri de preceden prezentate, scrierea cu ajutorul
mecanismului FORK-JOIN-QUIT este urmtoarea

m:=2; S1;
FORK L1 m:=3;
read (a); FORK L1;
goto L2; S2;
L1: read (b); S4;
L2: JOIN m, L3; FORK L2;
QUIT S5;
L3: c:=a+b; goto L3;
write (c); L2: S6;
goto L3;
L1: S3;
L3: JOIN m, L4;
QUIT;
L4: S7.

b) Mecanismul PARBEGIN-PAREND

Mecanismul a fost introdus de Dijkstra n 1965 (PARalel BEGIN-PARalel END)
Sintaxa: S
0
; PARBEGIN S
1
| S
2
| ... | S
n
PAREND; S
n+1
;
i corespunde grafului de preceden:
- 37 -












i are semnificaia: instruciunile secveniale S
1
, ...,S
n
sunt lansate n execuie simultan i
sunt executate concurent; terminarea grupului are loc dup terminarea instruciunii ce
dureaz cel mai mult.
Pentru grafurile de preceden prezentate, scrierea cu mecanismul PARBEGIN-
PAREND este urmtoarea:

PARBEGIN S
1
;
read (a); PARBEGIN
read (b); begin
PAREND; S
2
; S
4
;
c:=a+b; PARBEGIN
write (c); S
5
;
S
6
;
PAREND
end
S
3
;
PAREND;
S
7
.

- avantajele mecanismului: completarea limbajelor de programare cu structur de
bloc (Pascal, "C", Ada) cu aceste construcii este o extensie natural; programul i
pstreaz claritatea
- dezavantajele mecanismului: exist grafuri ce pot fi descrise cu FORK-JOIN-
QUIT, dar nu cu PARBEGIN-PAREND, ca exemplu:










S
0

S
1
S
2
S
n

S
n+1

. . .
Figura 2.1.3
S1
S2
S3
S4
S5 S6
S7
Figura 2.1.4
- 38 -





c) Conceptul de semafor

A fost introdus de Dijkstra pentru a evita cazurile n care grafuri de preceden nu
pot fi descrise cu mecanismul PARBEGIN- PAREND.
Semaforul s este perechea (v(s), c(s)) unde v(s) este valoarea semaforului, iar c(s)
o coad de ateptare.
v(s) este un ntreg ce primete o valoare iniial v
0
( s);
c(s) conine (pointeri la) procesele ce ateapt la semaforul s.

Operaii pentru gestiunea semafoarelor

P(s) are semnificaia:"a trece de" sau WAIT i este o operaie indivizibil.
P(s) apelat de procesul A nseamn
v(s):=v(s)-1;
if v(s)<0 then
begin
stare(A):=WAIT;
c(s)A; { procesul A intr n ateptare}
se trece la controlul de dispecer
end
else
se trece controlul la procesul A
endif

V(s)- are semnificaia "a reda spre completare" sau SIGNAL
V(s) apelat de un proces A nseamn
v(s):=v(s)+1;
if v(s)<=0 then
begin
c(s)B;
stare(B):=READY; { se scoate din coad un proces B}
se trece controlul la dispecer
end
else
se trece controlul la procesul A
endif

Exemplu: Fie G1 i G2 dou gri legate prin n linii paralele pe care se circul de
la G1 la G2. n G1 intr mai mult de n linii. Procesul trecerii trenului va fi dirijat astfel:
- valoarea iniial: v
0
(s):=n;
- procesul de trecere: P(s); trenul trece pe una din cele trei linii; V(s);
- 39 -
Fie np(s)= primitive P(s) efectuate pn la un moment dat;
nv(s)= primitive V(s) efectuate pn la un moment dat;
v
0
(s)= valoarea iniial a semaforului
nt(s)= numrul de procese ce au trecut de semaforul s

Teorema 2.2. Au loc propriettile:
1)
v(s)=v (s)-nv(s);
0

2) dac v(s)< 0 atunci n c(s) exist -v(s) procese;
3) dac v(s)> 0 atunci v(s) procese pot trece succesiv semaforul s fr a fi blocate;
4)
nt(s)= {v (s)+nv(s),np(s)}
0
min

Demonstraia se face prin inducie dup numrul operaiilor P i V efectuate
asupra semaforului.
Aspect critic: dou procese nu pot executa n acelai timp aceeai operaie P sau
V asupra aceluiai semafor s.
Combinnd semafoarele cu mecanismul PARBEGIN-PAREND se obin
construcii la fel de puternice ca FORK-JOIN-QUIT. De exemplu, pentru figura 2.1.4:
Fie MS= { a, b, c, d, e, f, g} o mulime de semafoare cu valoarea iniial
0
v (s) s MS e
. Secvena de instruciuni din fig.4 se poate descrie astfel:
PARBEGIN
begin S1; V(a); V(b) end;
begin P(a); S2; S4; V(c); V(d) end;
begin P(b); S3; V(e) end;
begin P(c); S5; V(f) end;
begin P(d); P(e); S6; V(g) end;
begin P(f); P(g); S7 end
PAREND;


2.1.3. Elemente de programare paralel i concurent

La nceputul capitolului s-a fcut precizarea c pn la un punct termenii de
programare paralel i programare concurent se vor considera sinonimi. Iat ns prin ce
se deosebesc aceste dou tipuri de programare:
Caracteristic programrii paralele este faptul c procesele ce se desfoar n
paralel nu colaboreaz ntre ele, nu colaboreaz i execuia unuia nu este n nici un
moment independent de rezultatele pariale ale execuiei celuilalt. Referitor la
programarea paralel apar cteva probleme: nelegerea unui program ce descrie activiti
ce se desfoar n paralel( ncercai sa citii n acelai timp dou cri, cte un rnd din
fiecare!); depanarea unui program paralel este foarte dificil, este de multe ori imposibil
de detectat secvena ce a produs o eroare; este dificil demonstrarea corectitudinii
programelor; este o problem gsirea activitilor care pot s se desfoare n paralel.
Avem de a face cu programare concurent atunci cnd procesele paralele se
intercondiioneaz reciproc. n ceea ce urmeaz se vor da cteva exemple de
intercondiionare a proceselor i de probleme ridicate de programarea concurent.

Seciune critic; resurs critic; excludere mutual
- 40 -
S presupunem c dou procese P
1
i P
2
au dreptul s modifice valoarea unei
variabile v sub forma: P
1
: v:= v+1 i P
2
: v:= v+1; cele dou procese execut aceast
incrementare concurent i de un numr neprecizat de ori( ex.: dou agenii CFR care dau
locuri simultan la acelai tren, v poate fi numrul curent al locului vndut). Reprezentarea
lor poate fi urmtoarea:


PARBEGIN
P
1
: ... v:= v+1;...
P
2
: ... v:= v+1;...
PAREND;

Pentru reprezentarea instruciunii v:= v+1 sunt necesare trei instruciuni main( care nu
pot fi ntrerupte): r:= v; r:= r+1; v:= r; unde r este un registru al mainii. Dac cele dou
procese folosesc dou registre r
1
i r
2
, se pot da dou secvene ce pot fi executate de ctre
cele dou procese:

P
1
: r
1
:= x; P
2
: . . .
r
1
:= r
1
+1; . . .
x:= r
1
; . . .
. . . r
2
:=x;
. . . r
2
:= r
2
+1;
. . . x:= r
2
;
secvena 1( dubl incrementare)

P
1
: r
1
:= x; P
2
: . . .
r
1
:= r
1
+1; r
2
:=x;
x:= r
1
; r
2
:= r
2
+1;
. . . x:= r
2
;
secvena 2( dubl incrementare)

Dac la nceputul fiecrei secvene variabila v are valoarea 5, atunci n urma
executrii secvenei 1 variabila v va avea valoarea 7( primete valoarea 6 de la P
1
i apoi
7 de la P
2
), iar n urma executrii secvenei 2 v va avea valoarea 6!
Poriunea de program v:= v+1 este seciune critic, deoarece ea nu poate fi
executat simultan de ctre dou procese. Variabila v se numete resurs critic, ea nu
poate fi accesat simultan de ctre dou procese. Despre procesele P
1
i P
2
se spune c se
exclud reciproc, deoarece au acces exclusiv la seciunea i la resursa critic.
Problema seciunii critice a suscitat un interes deosebit n istoria SO. Iat care
sunt cerinele acestei probleme:
- la un moment dat un singur proces se poate afla n seciunea critic; orice alt
proces care solicit acces la seciunea critic l va primi numai dup ce procesul care o
execut a terminat instruciunile seciunii critice;
- vitezele relative ale proceselor sunt necunoscute;
- oprirea oricrui proces are loc numai n afara seciunii critice;
- nici un proces nu va atepta la infinit accesul n seciunea critic.
- 41 -
Au existat multe ncercri de rezolvare a problemei seciunii critice. S-au ncercat
soluii care s foloseasc numai elemente secveniale i construcii PARBEGIN-
PAREND. Nici una dintre aceste soluii nu respect ns toate condiiile enumerate
anterior. n 1965 matematicianul Dekker a dat o soluie rezonabil, dar foarte nclcit. n
1981 Peterson a dat o soluie ceva mai simpl:

var c1, c2: boolean;
schimb: integer;
c1:= true; c2:= true;
PARBEGIN
P1: repeat
c1:= false; schimb:=1;
while (( not c2) and (schimb=1)) do ; { ateapt}
seciune critic;
c1:= true;
rest program1
until false

P2: repeat
c2:= false; schimb:=2;
while (( not c1) and (schimb=2)) do ; { ateapt}
seciune critic;
c2:= true;
rest program2
until false
PAREND

Soluia dat ns nu rezolv cazul n care seciunea critic trebuie accesat de mai
mult de dou procese, iar generalizarea nu este uoar. n plus, se practic o ateptare
activ: n faza de ateptare toate procesoarele execut o aceeai instruciune; ar fi de dorit
ca pe timpul ateptrii procesorul sa devin disponibil pentru alte procese.
O rezolvare elegant este folosirea semafoarelor. Iat descrierea acestei soluii
care folosete un singur semafor, s:

var s: semaphore;
v0(s ):=1;
PARBEGIN
P1: repeat
P(s);
seciune critic;
V(s);
rest program1
until false

P2: repeat
P(s);
- 42 -
seciune critic;
V(s);
rest program2
until false
PAREND

Soluia prezentat este corect indiferent de numrul de procese care cer acces n
seciunea critic. Dac v
0
(s)=1 i toate procesele ce folosesc seciunea critic sunt de
forma: P
i
: . . . P(s); seciune critic; V(s); . . . atunci se poate demonstra c v(s)s 1
oricare ar fi numrul proceselor care opereaz asupra lui s cu operaii P sau V. n baza
teoremei 2.2 rezult c un singur proces poate trece de semaforul s, deci sunt ndeplinite
condiiile ce definesc o seciune critic. Un semafor de acest tip se numete semafor de
excludere mutual.

Sincronizarea proceselor

Enunul operaiei de sincronizare a proceselor este urmtorul: un proces P
1
nu
poate trece de un anumit punct A dect dup ce un alt proces P
2
ajunge ntr-un punct B
(se stabilete o relaie de preceden ntre procese). Folosind semafoarele operaia se
descrie astfel:
var s: semaphore;
v
0
(s):=0;
PARBEGIN
P1: repeat . . . A; P(s); . . . until false

P2: repeat . . . B; V(s); . . . until false
PAREND

Procesul P
1
va atepta n punctul A prin operaia P(s) pn cnd procesul B va
executa n punctul B operaia V(s).
Sincronizarea proceselor este o operaie fundamental n programarea concurent.
n seciunile ce urmeaz se vor prezenta mai multe aplicaii ale ei.

Problema productorului i a consumatorului

Exist sisteme n care procesele sunt mprite n dou clase dependente una de
cealalt prin intermediul unei variabile numite buffer cu n intrri pentru n articole: exist
unul sau mai multe procese numite productoare care depun produse n buffer de fiecare
dat cnd sunt apelate i unul sau mai multe procese numite consumatoare care consum
un produs din buffer de fiecare dat cnd sunt apelate( de exemplu conceptele de pipe i
spool-ing sunt de aceast natur). Fiecare productor depune un articol n buffer, iar
fiecare consumator scoate cte un articol din buffer. Problema const n a dirija cele dou
tipuri de procese astfel nct:
a) s existe acces exclusiv la buffer;
b) consumatorii s atepte cnd buffer-ul este gol;
- 43 -
c) productorii s atepte cnd buffer-ul este plin.
Rezolvarea acestei probleme se poate face utiliznd trei semafoare: gol care
contorizeaz locurile libere din buffer, plin care contorizeaz produsele ce ocup buffer-
ul i exclus care este un semafor de excludere mutual, dup cum urmeaz:

var plin, gol, exclus: semaphores;
v0( plin):=0;
v0(gol):=n;
v0(exclus):=1;


PARBEGIN
Productor: repeat
produce articol;
P(gol);
P(exclus);
depune articol n buffer;
V(exclus);
V(plin);
until false

Consumator: repeat
P(plin);
P(exclus);
extrage articol din buffer;
V(exclus);
V(gol);
consum articol
until false
PAREND

Regiuni critice condiionate

Prin intermediul operaiilor de excludere i sincronizare pot fi rezolvate o serie de
probleme de concuren. ns manipularea operaiilor P i V cere o foarte mare
ndemnare. Din acest motiv au fost introduse construii structurate de concuren prin
intermediul crora se poate exercita un control riguros al nclcrii regulilor de
concuren. O astfel de construcie este regiunea critic condiionat care nglobeaz
noiunile de regiune gritic i resurs critic i posibilitatea de a executa regiunea numai
dac este ndeplinit o anumit condiie. Fiecrei regiuni critice i se asociaz o resurs ce
const din toate variabilele ce trebuie protejate n regiune. Declararea ei se face astfel:
resource r :: v
1
, v
2
, ..., v
n

unde r este numele resursei, iar v
1
, v
2
, ..., v
n
sunt numele variabilelor de protejat.
O regiune critic condiionat se definete astfel:
region r [ when B ] do S
- 44 -
unde r este numele unei resurse declarate ca nainte, B este o expresie boolean, iar S este
secvena de instruciuni corespunztoare regiunii critice. Dac este prezent opiunea
when, atunci S este executat numai dac expresia B are valoarea adevrat. Variabilele
din resursa r pot fi folosite numai de ctre instruciunile din secvena S. Descrierea prin
semafoare a unei regiuni critice condiionate se face folosind dou semafoare: ir care
reine n coada lui toate procesele care cer acces la regiunea critic i exclus care asigur
acces exclusiv la anumite seciuni i un ntreg nr ce reine cte procese au cerut acces la
regiune la un moment dat. Valorile de pornire sunt:
var ir, exclus: semaphore;
nr: integer;
v0(ir):=0;
v0(exclus):=1;
nr:=0;


Codul corespunztor regiunii:
P(exclus);
nr:=nr+1;
while not B do
begin
V(exclus);
P(ir);
P(exclus)
end;
nr:=nr-1;
S;
for i:=1 to nr do V(ir);
V(exclus);
O aplicaie a regiunilor critice condiionate este:

Problema citirilor i scrierilor

Problema a fost formulat de ctre Courtois, Heymans i Parnas n 1971. Se
presupune c exist dou tipuri de procese: cititor i scriitor care partajeaz o resurs, de
exemplu un fiier. Un proces scriitor modific coninutul fiierului, iar un proces cititor
consult informaiile din el. Orice proces scriitor are acces exclusiv la resurs, dar
procesele cititor pot avea mai multe acces simultan la ea( spre deosebire de problema
productorului i consumatorului unde toate procesele aveau acces exclusiv la resurs).
ntre cerinele problemei trebuie s se aib n vedere ca nici un proces s nu aib de
ateptat o perioad nedefinit de timp i n cazul accesului simultan s se precizeze care
sunt procesele prioritare
O rezolvare ce folosete regiunile critice este cea dat de P.B.Hansen n 1973.
Aceast soluie d prioritate proceselor scriitor fa de cele cititor. Un proces scriitor intr
n lucru imediat ce procesele cititor active i-au ncheiat citirile curente. Resursa f este un
fiier la care doresc accesul cele dou tipuri de procese. Operaiile de baz asupra
- 45 -
fiierului sunt read i write. Resursa c conine dou contoare nr i nw care indic numrul
de procese de citire respectiv de scriere au cerut acces la fiierul f.
resource f:: ... ;
resource c:: nr, nw: integer;
nr:=0;
nw:=0;

procedure cititor;
begin
region c when nw=0 do nr:=nr+1;
read ...;
region c do nr:=nr-1
end;
- 46 -
procedure scriitor;
begin
region c do nw:=nw-1;
region c when nr=0 do ; { ateapt terminarea cititorilor activi}
region f do write ... ;
region c do nw:=nw+1
end;

Limbaje de programare concurent
Exist multe limbaje de programare care au ncorporate mecanisme de
comunicare i sincronizare ntre procese. Iat cteva dintre acestea:
PASCAL CONCURENT( P.B. Hansen 1975) dispune de trei tipuri de module:
procese( entiti de calcul secveniale care nu-i partajeaz nici o variabil), clase( tipuri
de date abstracte utilizabile individual de ctre procese sau monitoare) i monitoare(
module apelabile de ctre procese n mod exclusiv, conin toate datele ce trebuie s fie
partajate ntre procese).
ADA( 1980) are ca i concept central modulul task, ce poate fi executat n paralel
cu alte task-uri. Task-urile pot comunica ntre ele folosind conceptul de rendez-vous: fie
A i B dou task-uri ce lucreaz simultan. La un moment dat execuia lui A depinde de
informaii furnizate de ctre B. Sunt posibile trei situaii:
a) task-ul B este gata s transmit informaiile, dar task-ul A nu le-a cerut nc;
b) task-ul B este gata s transmit informaiile, iar task-ul A cere aceste date. n
acest caz se realizeaz un rendez-vous, cele dou procese lucreaz sincron pn se
termin schimbul de informaii dup care fiecare i continu activitatea independent;
c) task-ul A lanseaz cererea, dar B nu este pregtit s furnizeze informaiile. n
cazurile a) i c) task-ul B respectiv A ateapt ntlnirea cu cellat task.
MODULA2 este un descendent din Pascal i are faciliti puternice pentru
specificarea paralelismului i concurenei. Se gsete deja implementat pe diferite tipuri
de calculatoare, inclusiv IBM_PC.
CHILL este proiectat n special pentru telecomunicaii.
C nu este un limbaj concurent, dar dispune de funcii ce-i permit implementarea
concurenei( ex. concurena C sub UNIX).


2.1.4. Problema impasului

Conceptul de impas. Fie succesiunea proceselor A i B din urmtoarea secven:

var x, y: semaphores;
v0(x):=1; v0(y):= 1;
PARBEGIN
A: . . . P(x); . . . P(y); . . .

B: . . . P(y); . . . P(x); . . .
PAREND
- 47 -
Dac procesul A trece de P(x), dar nainte ca el s treac de P(y) procesul B trece
de P(y), atunci cele dou procese se ateapt reciproc i nu mai avanseaz nici unul.
Acest lucru se ntmpl din cauz c procesele i ocup resursele doar atunci cnd au
nevoie de ele i pot s apar situaii de ateptare circular. Acest fenomen este cunoscut
sb mai multe denumiri: impas, interblocare, deadlock, deadly embrace... Un astfel de
fenomen poate s duc la un blocaj al sistemului sau la distrugerea unor procese.
n 1971, Coffman, Elphic i Shoshani au indicat patru condiii necesare pentru
apariia impasului:
- procesele solicit controlul exclusiv asupra resurselor pe care le cer( condiia de
excludere mutual)
- procesele pstreaz resursele deja ocupate atunci cnd ateapt alocarea altor
resurse( condiia de wait for)
- resursele nu pot fi terse de ctre procesele care le in ocupate pn cnd ele nu
sunt utilizate complet( condiia de nepreempie)
- exist un lan de procese n care fiecare dintre ele ateapt o resurs ocupat de
un alt proces din lan( condiia de ateptare circular).

Modelarea matematic a impasului. Fie n procese i m tipuri de resurse.
Procesele se vor nota cu i, i=1,n, iar resursele cu j, j=1,m. Se mai folosesc urmtoarele
notaii:
x[j] cantitatea din resursa j existent n sistem
c[i,j](t) cantitatea din resursa j cerut de procesul i la momentul t
a[i,j](t) cantitatea din resursa j alocat procesului i la momentul t
r(j)(t) cantitatea din resursa j liber la momentul t
Definiia 2.1.4.1. Se numete stare realizabil a alocrii resurselor la momentul t
dac au loc condiiile:
a) fiecare proces cere cel mult cte resurse sunt n sistem, adic
c[i,j](t)s x[j], i, j;
b) fiecare proces are alocate cel mult attea resurse cte a cerut, adic
a[i,j](t)s c[i,j](t), i, j;
c) nu se poate depi volumul total de resurse, adic
a[1,j](t)+ a[2,j](t)+...+ a[n,j](t)s x[j], j.
Definiia 2.1.4.2. O succesiune S[1], S[2],..., S[n] a celor n procese se numete
sntoas la momentul t dac cererea unui proces S[i] la momentul t nu este mpiedicat
de cererile proceselor precedente, de propriile resurse alocate i de resursele disponibile,
adic pentru i i j
c[S[i], j](t)s a[S[1],j](t)+a[S[2],j](t)+...+a[S[i-1],j](t)+ a[S[i],j](t)+r[j](t).
Definiia 2.1.4.3. O succesiune S[1], S[2],..., S[n] a celor n procese se numete
succesiune fiabil dac pentru i i j
max{c[S[i], j](t)| t>0}s a[S[1],j](t)+a[S[2],j](t)+...+a[S[i-1],j](t)+
a[S[i],j](t)+r[j](t).
Teorema 2.1.4.1. Dac la un moment dat t exist o succesiune sntoas, iar dup
acest moment procesele nu mai cer resurse, atunci exist o succesiune de stri realizabile
astfel nct toate cererile de resurse ale proceselor s fie satisfcute. n caz contrar, este
posibil apariia impasului.
- 48 -
Teorema 2.1.4.2. Dac exist o succesiune fiabil( adic cererea maxim a
fiecrui proces este cunoscut n prealabil), atunci exist o succesiune de stri realizabile
astfel nct cererile de resurse ale proceselor s fie satisfcute. n caz contrar este posibil
apariia impasului.
n cazul sistemelor de operare, trebuie s se dea rezolvri cel puin la una din
urmtoarele trei probleme: ieirea din impas, detectarea unui impas, prevenirea apariiei
impasului. Cele dou teoreme dau condiii prin care este indicat eventuala apariie a unui
impas, dar nu dau metode pentru rezolvarea lui.



Problemele impasului i rezolvarea lor

a) Ieirea din impas se rezolv prin una din urmtoarele trei strategii:
- rencrcarea sistemului de operare
- alegerea unui proces victim, care este fie cele care a provocat impasul fie altul
de importan mai mic; se distruge acest proces i toi descendenii lui
- crearea unui punct de reluare, care este o fotografie a memoriei pentru
procesul victim i pentru cele cu care acesta colaboreaz; se distruge apoi procesul
victim i descendenii lui; procesul victim se reia ulterior.
b) Detectarea unui impas se face atunci cnd SO nu are un mecanism de
prevenire a impasului. Pentru a reui detectarea impasului SO trebuie s aib o eviden
pentru fiecare proces a resurselor ocupate respectiv cerute i neprimite. Pentru aceasta se
folosete graful alocrii resurselor. Se face ipoteza c fiecare resurs din sistem se afl
ntr-un singur exemplar; fie R
1
,..., R
m
resursele i P
1
,...,P
n
procesele din sistem. Graful
alocrii resurselor este G=(X, U), unde X={R
1
,..., R
m
, P
1
,..., P
n
}, (P
i
, R
j
)e U dac
procesul P
i
ateapt s ocupe resursa R
j
, iar (R
j
, P
i
)eU dac procesul P
i
ocup resursa R
j
.
Teorema 2.1.4.3. Dac graful (X, U) definit mai sus este ciclic, atunci apare
impasul.
Demonstraia teoremei se face prin inducie. Detectarea ciclicitii grafului se face
printr-un algoritm simplu:
while - xeX astfel nct x nu are ieiri( nu - (x,y)eU) do
begin
terge x din X; terge arcele (y, x) e U
end;
Dac n urma tergerilor se ajunge la graful vid, atunci graful iniial este aciclic.
Dac graful obinut nu este vid atunci el conine cel puin un ciclu i n graful rmas dup
reduceri se afl procesele i resursele ce au provocat impasul i se poate ncerca ieirea
din impas prin metodele prezentate anterior.
c) Prevenirea impasului se face prin trei metode.
Metoda 1, totul sau nimic. Procesul trebuie s cear toate resursele n
momentul ncrcrii lui; SO ntocmete graful alocrii resurselor innd cont de ceea ce
cere procesul candidat la ncrcare; dac graful obinut este ciclic procesul nu va fi
ncrcat. Metoda nu este avantajoas deoarece procesul trebuie s atepte pn are toate
resursele disponibile i apoi ocup resursele permanent dei s-ar putea s nu aib nevoie
de ea pe toat durata existenei lui.
- 49 -
Metoda 2, cererea de resurse ntr-o anumit ordine. n acest caz resursele
sistemului sunt numerotate; procesele nu trebuie s-i declare preteniile la ncrcare, dar
cererile de resurse trebuie s fie fcute n ordinea numerotrii lor.
Metoda 3, alocare i suspendare controlat. Procesul este lansat n execuie chiar
dac nu are toate resursele disponibile; el declar la nceput toate resursele care I sunt
necesare, iar alocarea lor se face controlat pentru a evita impasul( nainte de a se aloca o
resurs se verific iminena apariiei impasului; dac resursa este unicat se verific
ciclicitatea grafului de alocare a resurselor). Cel mai cunoscut algoritm pentru alocarea
resurselor este algoritmul bancherului, algoritm datorat lui Dijkstra:

var B: boolean;
for i:=1 to n se marcheaz P
i
ca neactiv;
for k:=1 to n do
begin
repeat
if nu exist procese neactive then
begin
execut S[1],..., S[k-1] pn se elibereaz resurse;
se trece un proces din ateptare n activ
end
else
se alege un proces Pi neactiv;
B:= S[1], ..., S[k-1], Pi este o succesiune fiabil;
if not B then
se pune n ateptare Pi
else
begin
marcheaz P
i
ca activ ; S[k]:= P
i

end
until B;
end;

2.1.5. Procese sub UNIX

Crearea proceselor sub UNIX; comunicarea ntre procese.
Specificarea concurenei sub UNIX se face cu ajutorul funciilor C fork, exit,
exec i wait, apelul acestor funcii reprezentnd apeluri sistem.
Funcia fork() are ca efect copierea ntr-o zon de memorie liber a
imaginiiprocesului curent i apoi crearea i lansarea n execuie a unui nou proces;
procesul care execut fork() se numete tat, iar cel care se creeaz se numete fiu; are
loc o dubl execuie a instruciunilor ce urmeaz dup fork(). Toate fiierele deschise de
ctre procesul tat sunt accesibile i n procesele fii n acest fel realizndu-se
comunicarea ntre procese. Funcia fork() ntoarce valoarea 0 n procesul fiu i o valoare
ntreag nenul numit pid( Process IDentity= nr. dat de sistem procesului) n procesul
tat. n secvena ce urmeaz se lanseaz dou procese concurente:
if( fork()==0)
- 50 -
{. . . instruciuni ale procesului fiu. . .}
else
{ . . . instruciuni ale procesului tat . . .}
Funcia exit(stare) provoac terminarea unui proces; sunt nchise toate fiierele
deschise de ctre acest proces i se transmite controlul la procesul printe. n stare, care
este un ntreg se transmite printelui modul de terminare al procesului.
Funcia wait( stare) are rol de a atepta terminarea procesului indicat de stare.
Execuia secvenei din graful de preceden, fig.2, paragraful 2.1.1. se poate scrie
n C astfel:
S1;
n=fork();
if(n==0)
{ S2; S4; m=fork();
if(m==0)
{ S5; exit(p);}
else
{ S6; exit(q);}
}
else
{ S3;
wait(p);
wait(q);
S7;
}

n plus, UNIX ofer funciile de forma exec*(nume, . . .) care provoac n diverse
variante ncrcare programului nume peste procesul curent i lansarea lui n execuie.
Prin aceste funcii se pot lansa n execuie programe care s foloseasc fiierele oferite de
ctre procesul printe. Funciile exec* sunt execl, execv, execle, execlv.
n afar de modul de comunicare oferit de funcia exit la terminarea unui proces,
mai exist i posibilitatea unor apeluri sistem prin intermediul funciei signal. Prin acest
apel se provoac o ntrerupere software i el se face doar n situaii de excepie; apelul
signal conteaz ca o terminare anormal a procesului.
Tot un mod de comunicare ntre procese este mecanismul pipe i ncepnd cu
UNIX System V este implementat i mecanismul semafor.

Gestiunea proceselor UNIX. Conceptul de proces sub UNIX este mai general
dect sub alte SO. n momentul n care un utilizator d o comand componenta shell
creaz prin fork un nou proces, iar prin exec lanseaz comanda cerut.
Pentru ca nucleul s gestioneze un proces el trebuie s dein informaii despre
procesul respectiv; aceste informaii sunt reinute n dou zone: tabela de procese i
structura utilizator.
Tabela de procese conine urmtoarele informaii:
- identificatorul procesului( un numr)
- identificatorul utilizatorului
- lungimea procesului
- 51 -
- locul unde este procesul rezident la momentul curent( n memorie sau pe disc)
Structura utilizator se creaz n interiorul nucleului odat cu crearea procesului,
nu poate fi accesat de ctre utilizator i conine:
- zona de salvare a regitrilor generali
- informaiile prin care se permite accesul la toate fiierele folosite
- informaii despre directorul curent.
La evacuarea temporar pe disc a procesului se salveaz zona de date i
instruciuni a procesului, coninutul stivei, structura utilizator dup ce s-a memorat n ea
coninutul regitrilor generali.


- 52 -

2.2. GESTIUNEA MEMORIEI


2.2.1. Structur; calcul de adrese; protecie

Pentru a fi executat un program are nevoie de o anumit cantitate de memorie; n
multiprogramare este necesar ca n memorie s fie prezente simultan mai multe
programe. Fiecare program folosete zonele de memorie alocate lui independent de alte
eventuale programe active. n general, pe durata execuiei unui program necesarul de
memorie variaz.
Deoarece spaiul de memorie este( nc) limitat SO i SC trebuie s gestioneze n
mod eficient folosirea acestui spaiu. Problemele legate de gestiunea memoriei sunt
rezolvate la nivelul inferior de ctre SC extins eventual cu o component de management
a memoriei. La nivel superior, rezolvarea se face de ctre SO n colaborare cu SC.
Principalele obiective ale gestiunii memoriei sunt:
- calculul de translatare a adresei( relocare)
- protecia memoriei
- organizarea i alocarea memoriei operative
- gestiunea memoriei secundare
- politici de schimb ntre proces, memoria operativ i cea secundar.
Structura ierarhic de organizare a memoriei. n structura actual, memoria
unui calculator apare ca n figur:















Memoria cache conine informaiile care au fost utilizate cel mai recent de
ctre CPU. Are o capacitate mic, dar cu timp de acces foarte rapid. La fiecare acces,
CPU verific dac data se afl n memoria cache( dac da se face schimbul ntre CPU i
aceast zon) i abia apoi solicit memoria operativ. Dac data nu se afl n memoria
cache, atunci ea este cutat la nivelele superioare i ea este adus mpreun cu locaii
vecine ei astfel nct memoria cache s fie plin. La unele sisteme de calcul memoria
cache lipsete.
MEMORIE DE ARHIVARE
MEMORIE SECUNDAR
MEMORIE OPERATIV
MEMORIE CACHE
CPU
Memorie extern
Memorie intern
- 53 -
Memoria operativ conine programele i datele pentru toate procesele existente
n sistem. n momentul n care un proces este terminat i distrus, spaiul de memorie
operativ pe care l-a ocupat este eliberat i poate fi ocupat de alt proces. Capacitatea
memoriei operative variaz de la 64 Ko la civa Mo, iar viteza de acces este foarte mare.
Memoria secundar exist la SO care dein mecanisme de memorie virtual; este
privit ca o extensie a memoriei operative; suportul ei este discul magnetic, deci accesul
la aceast memorie este mult mai lent. La calculatoarele IBM-PC din primele serii
memoria maxim disponibil era de doar 640 Ko. Pentru a elimina aceast restricie s-a
introdus conceptul de memorie expandat. Prin acest mecanism mai multe chip-uri de
memorie operativ pot s aib alternativ aceeai adres de memorie; avem de a face cu o
memorie secundar care are ca suport hard tot memoria intern. Dup apariia lui 80286
i a modului de lucru protejat, aceste calculatoare au fost dotate cu memorie extins care
permite o adresare natural a spaiului de peste 1Mo de memorie.
Memoria de arhivare este gestionat de utilizator i const din fiiere, baze de
date .a. rezidente pe suporturi magnetice.
Memoria cache i memoria operativ formeaz memoria intern. Accesul CPU
la acestea se face n mod direct ; pentru ca CPU s aib acces la datele din memoria
secundar i de arhivare, acestea trebuie mutate n memoria intern.
n ceea ce privete performanele, viteza de acces, preul de cost pe unitatea de
alocare i capacitatea de memorare, acestea scad de jos n sus, de la memoria cache la
memoria de arhivare.
Mecanisme de translatare a adresei. Adresarea memoriei const n realizarea
legturii ntre un obiect al programului i adresa corespunztoare din memoria operativ a
SC. Fazele prin care trece un program de la textele surs pn la execuie sunt
urmtoarele:















Programatorul se refer la memorie prin intermediul mulimii obiectelor din
program( OP): nume de variabile, de constante, de etichete, de proceduri ... Prin AF se
noteaz mulimea adreselor fizice din memoria operativ la care se afl memorate n
timpul execuiei obiectele program ale utilizatorului. Calculul de adres este
modalitatea prin care se ajunge de la un OP la AF a lui n execuie. Acest calcul necesit
trei faze corespunztor celor trei faze ale programului.
Compilare Editare de legturi ncrcare Execuie
S1

S2
...
...

Sn

MO1

MO2
...
...

MOn
FE PR
OP AM AR AF
TEXTE MODULE FIIER PROGRAM
SURS OBIECT EXECUTABIL N MEMORIE
- 54 -
Faza de compilare transform un text surs Si ntr-un modul obiect Moi;
corespunztor, numele obiectelor program sunt transformate n numere reprezentnd
adresele lor n cadrul modului, AM. Deci prima funcie de calcul de adres, c OP AM :
este executat de ctre compilator sau asamblor.
Faza de editare grupeaz mai multe module obiect formnd un fiier executabil.
Editorul de legturi realizeaz a doua faz a evalurii adresei: se transform adresele din
cadrul modulelor n adrese relocabile( AR). Funcia de legare este l AM AR : , iar
particularitile de evaluare ale acestei funcii sunt proprii editorului de legturi.
Trecerea de la adresa relocabil la adresa fizic este realizat de ctre CPU prin
funcia de translatare( relocare) a adresei, t AR AF : .
Pentru a ilustra principiul de lucru al funciei de translatare se va presupune c
fiierul executabil conine nregistrri formate din cte o instruciune de forma:
Ari co a1 a2 . . . an
unde
- Ari este adresa relocabil a instruciunii
- co este codul operaiei
- a1, a2, ..., an sunt argumentele instruciunii i pot fi nume de regitri, constante
sau adrese relocabile din memorie.
Se presupune c fiecare instruciune ncape ntr-o adres de memorie, ntre
argumentele a1,..., an exist o singur adres relocabil, maina dispune de un singur
registru general A, iar instruciunule sunt plasate n locaii de memorie succesive. n
realitate structura unui fiier executabil este mai complex, dar considerm aceast
structur pentru a ilustra funcionarea CPU i a funciei de translatare.
ncrcarea unui astfel de fiier n memorie se poate face folosind un ncrctor
asemntor lui Loaderabslout prezentat la ncrcarea SO.
Se vor folosi urmtoarele notaii:
- M[0..m] conine locaiile memoriei operative
-pc(Program Counter) indic adresa fizic a instruciunii ce urmeaz a fi executat
- w este coninutul instruciunii curente
- Opcode(w) furnizeaz codul operaiei din instruciunea curent( de exemplu 1
pentru adunare, 2 pentru memorare din registrul A ntr-o anumit locaie de memorie, 3
pentru salt necondiionat...)
- Address(w) este o funcie ce furnizeaz valoarea adresei relocabile aflat ntre
argumentele instruciunii curente.
Modul de funcionare a CPU i de aciune a funciei de translatare este urmtorul:
pc:= t( adresa_ de _start_a_programului);
repeat
w:= M[pc]; co:= Opcode(w);
adr:= Address(w); pc:=pc+1;
case co of
1: A:= A+ M[t(adr)]; { adunare}
2: M[t(adr)]:= A; { memorare}
3: pc:= t(adr); { salt necondiionat}
. . .
end { case}
until false;
- 55 -
Exist o mare varietate de moduri de adresare; acestea sunt legate de CPU concret
al SC. Se disting ns cteva moduri de adresare uzuale:
- adresare absolut atunci cnd AR= AF , adic t x x x AR ( ) , = e
- adresare bazat atunci cnd pentru a obine o adres fizic toate adresele
relocabile sunt mrite cu coninutul registrului de baz Rb( valoarea acestuia este fixat
de ctre loader sau de ctre utilizator dac lucreaz n limbaj de asamblare), adic
t x Rb x x AR ( ) ( ) , = + e .
- adresare indexat atunci cnd n cadrul instruciunii main se specific un
registru de index Ri. Se obine, printr-o metod oarecare o adres provizorie AF1 i apoi
se obine adresa definitiv AF2 astfel: AF AF Ri 2 1 : ( ) = + . Acest mod de adresare se
folosete n special la localizarea elementelor unui tablou.
- adresarea relativ se folosete pentru realizarea de salturi ntr-un program
precizndu-se sensul i numrul de locaii l( constant ntreag cu semn) peste care se
sare pentru a se ajunge la noua adres: AF AF l 2 1 := + .
- adresare indirect: dup ce procesorul obine o adres AF1, el interpreteaz
coninutul de la AF1 nu ca valoare a unui operand ci ca noua adres AF AF 2 1 : ( ). = Acest
mod de adresare se poate aplica n lan i se aplic n general la invocarea parametrilor
actuali din cadrul unui subprogram.
SC moderne au implementate combinaii ale acestor metode. Pentru SC care
dispun de memorie virtual exist i mecanisme mai sofisticate de adresare.
Protecia memoriei. Fiecare SC respectiv SO trebuie s dispun de mecanisme
care s asigure utilizarea corect a spaiului de memorie de ctre toate procesele
rezidente. Fiecare entitate de memorie alocat(partiie,pagin,...) conine o cheie de
protecie, fiecare entitate de program ncrcabil la un moment dat(segment, pagin,...)
dispune de o cheie de acces. Fiecrei chei de protecie se asociaz un ir de bii prin care
se specific posibilitile zonei respective. Principalele trei posibiliti sunt R,W i E:
- R( read-only): din zon se poate doar citi; se permite executarea instruciunilor
main care duc date din zon n regitri, dar este interzis memorarea n zona respectiv
a datelor din regitri. n aceste zone se introduc constantele proceselor.
- W: n zon se poate scrie; este permis memorarea n aceast zon a datelor din
regitri. Exist dou cazuri speciale de scriere: extindere- scriere la sfritul zonei i
tergere- pregtirea zonei astfel nct urmtoarea extindere s se fac de la nceputul
zonei. Interzicerea posibilitii W este echivalent cu posibilitatea R.
- E: coninutul zonei poate fi executat, deci zona respectiv conine instruciuni
main care pot fi executate. Coninutul zonei rmne neschimbat(este cod reentrant)
fiind interzis proceselor s modifice zona respectiv.
Procesele( sau segmentele de proces) primesc la ncrcare un ir de bii ce
reprezint drepturi de acces i sunt n coresponden cu biii reprezentnd posibilitile
zonelor de memorie.
Protecia memoriei se face executnd doi pai:
- la fiecare invocare a unei locaii de memorie se compar cheia de protecie cu
cea de acces; n caz de neconcordan accesul este interzis i procesul se ncheie cu mesaj
de eroare.
- dac cheile coincid se compar posibilitile zonei solicitate cu drepturile de
acces ale procesului i cu aciunea cerut de proces; accesul este permis dac comparaia
se termin cu succes.
- 56 -
Modul concret de implementare a proteciei memoriei depinde de SC i SO i nu
poate fi preluat de la un SC i SO la altul.

2.2.2. Scheme de alocare a memoriei

Clasificarea tehnicilor de alocare. Problema alocrii memoriei se pune n
special la sistemele multiutilizator. Tehnicile de alocare utilizate la diferite SO se mpart
n dou mari categorii, fiecare nprindu-se la rndul ei n subcategorii:
- alocare real: - la SO monoutilizator
- la SO multiutilizator
- cu partiii fixe( static) - absolut
- relocabil
- cu partiii variabile( dinamic)
- alocare virtual - paginat
- segmentat
- segmentat i paginat.
Alocarea la sistemele monoutilizator. La aceste sisteme este disponibil aproape
tot spaiul de memorie, iar gestiunea acestui spaiu cade exclusiv n sarcina utilizatorului
care are la dispoziie tehnici de suprapunere( overlay) pentru a-i rula programele mari.
Alocarea memoriei n acest caz este prezentat n figura urmtoare:





















Poriunea dintre adresele 0 i a-1 este rezervat nucleului SO, care rmne
rezident de la ncrcare i pn la oprirea sistemului. ntre adresele c i m-1 ( dac
memoria are o capacitate de m locaii) este spaiul nefolosit de ctre programul utilizator
curent( adresa c variaz de la un program utilizator la altul).
Alocarea cu partiii fixe. Acest mod de alocare se mai numete alocare static
sau alocare MFT (Memory Fix Tasks). El presupune decuparea memoriei n zone de
lungime fix numite partiii. O partiie este alocat unui proces pe toat durata execuiei
lui chiar dac nu o ocup complet. Un exemplu al acestui mod de alocare este prezentat
n figura urmtoare( zonele haurate sunt zonele din partiii nefolosite de procese):
Nucleu SO
Parte
rezident
Zona de
suprapunere
Nefolosit
Program utilizator
Pri de suprapus
Init Prelucrri
curente
Terminare
0
a
b
c
m
b b b
- 57 -
















Alocarea absolut se face pentru programe care sunt pregtite de ctre editorul de
legturi pentru a fi rulate ntr-o zon de memorie prestabilit.
La alocarea relocabil adresarea n partiie se face cu baz i deplasament; la
ncrcarea unui program n memorie se pune n registrul su de baz adresa de nceput a
partiiei. Partiiile au de obicei lungimi diferite, iar fixarea dimensiunilor partiiilor este o
problem dificil pentru c nu se pot prevedea ce cantiti de memorie vor solicita
procesele ncrcate n aceste partiii; alegerea unei dimensiuni mai mari scade
probabilitatea ca un proces s fie eliminat din sistem fr a fi executat, dar scade numrul
proceselor active din sistem. Acest mod de alocare se folosete de obicei la sistemele
seriale. La fiecare partiie exist un ir de procese care ateapt s fie executate. Modul de
organizare al acestui sistem de ateptare poate influena performanele de ansamblu ale
sistemului i poate atenua efectul unei eventuale dimensionri defectuoase a partiiilor.
Exist dou moduri de legare a proceselor la partiii:
- fiecare partiie are o coad proprie; operatorul stabilete de la nceput care sunt
procesele care se vor executa n fiecare partiie
- exist o singur coad pentru toate partiiile; SO alege partiia pentru procesul ce
urmeaz s intre n execuie.

Alocarea cu partiii variabile. Acest mod de alocare se mai numete alocare
dinamic sau alocare MVT( Memory Variable Task). n funcie de solicitrile la sistem i
de capacitatea de memorie nc disponibil la un moment dat, se modific automat
numrul i dimensiunea partiiilor. n figura urmtoare se prezint mai multe stri
succesive ale memoriei n acest tip de alocare:







PR2 FINISH PR4 READY PR1 FINISH PR5 READY
0

40

100




200

230

0
40



86
130


168
190



250
255

0

40

100




200

230

Nucleu SO
0

40

100



180
200

230

PR1
0

40

100



180
200

230

PR2
0

40
85
100



180
200

230

PR3
Partiia 1
Partiia 2
Partiia 3






SO
PR1
SO
PR1
SO
PR1
SO
PR5
- 58 -












Atunci cnd procesul intr n sistem el este plasat n memorie ntr-un spaiu n
care ncape cea mai lung ramur a sa; acest spaiu este format din dou partiii: una n
care se afl procesul, iar cealalt ntr-un spaiu liber. n timp numrul spaiilor libere
crete, iar dimensiunea lor scade. Fenomenul poart numele de fragmentarea intern a
memoriei.
n momentul n care pentru un proces nu exist spaiu n care s se ncarce, SO va
lua una dintre urmtoarele decizii:

a) procesul ateapt pn cnd i se elibereaz o cantitate suficient de memorie;
b) SO ncearc alipirea unor spaii libere vecine pentru a se obine un spaiu de
memorie suficient de mare; operaia poart numele de colaionare. n figura de mai sus
d), dup terminarea procesului PR4 apar trei zone libere adiacente de 15Ko, 80Ko
respectiv 20Ko. SO poate( nu face ntotdeauna automat) s formeze un singur spaiu liber
de 115Ko.
c) SO decide efectuarea unei operaii de compactare a memoriei( relocare) adic
de deplasare a partiiilor active ctre partiia monitor pentru a absorbi fragmentele de
memorie neutilizate. De regul compactarea este o operatie costisitoare i se aleg soluii
de compromis:
- lansarea periodic a compactrii indiferent de starea sistemului; procesele ce nu
au loc n memorie ateapt compactarea sau terminarea unui alt proces.
- realizarea unei compactri pariale pentru a asigura loc numai procesului care
ateapt.
- mutarea unor procese cu colaionarea spaiilor libere.
ntre alocrile de tip MFT i MVT nu exist diferene hard. Alocarea MVT este
realizat prin intermediul unor rutine specializate. Alocarea MVT a fost utilizat mai nti
la sistemele IBM-360 sub SO OS-300 MVT i apoi la PDP 11/45.

2.2.3. Mecanisme de memorie virtual

Termenul de memorie virtual este asociat cu capacitatea de a adresa un spaiu de
memorie mai mare dect este cel disponibil la memoria operativ a SC. Conceptul a
aprut n 1960 la Universitatea din Manchester odat cu SO Atlas.
Exist dou metode de virtualizare: alocare paginat i alocare segmentat.



PR2
PR3 PR3
PR4
PR3
PR4
PR3
PR4
PR3
a) b) c) d) e)
- 59 -
Alocarea paginat. A aprut la diverse SO pentru a elimina fragmentarea
excesiv ce apare la MVT. Acest tip de alocare presupune cinci lucruri:
a) Instruciunile i datele unui program sunt mprite n zone de lungime fix
numite pagini virtuale. Fiecare AR aparine unei pagini virtuale; paginile virtuale se
pstreaz n memoria secundar.
b) Memoria operativ este mprit in pagini de lungime fix numite pagini fizice
a cror lungime este fixat prin hard. Paginile virtuale i cele reale au aceeai lungime
care este o putere a lui 2 i care este o constant a sistemului( 1Ko, 2Ko,...).
c) Fiecare AR este de forma

p d

unde p este numrul paginii virtuale, iar d este adresa n cadrul paginii.
d) Fiecare AF este de forma

f d

unde f este numrul paginii fizice, iar d este adresa n cadrul paginii.
e) Calculul funciei de translatare t AR AF : se face prin hard conform
urmtoarei scheme:





















Dac se noteaz prin M[0..m] notm memoria operativ, prin k puterea lui 2 care
d lungimea unei pagini, prin TP adresa de start a tabelei de pagini, atunci algoritmul de
calcul al funciei t este:
function t(p,d): integer;
begin
Procesor Adresa Tabele de Adresa Memorie
central virtual pagini fizic operativ
CPU p d f d

f
p
f
d
- 60 -
if pagina absent din memoria operativ then EROARE
else
t M TP d
k
: [ ] = + 2
end;
Fiecare proces are propria tabel de pagini n care este trecut adresa fizic a
paginii virtuale dac ea este prevzut n memoria operativ. La ncrcarea unei noi
pagini virtuale aceasta se depune ntr-o pagin fizic liber, deci n memoria operativ
paginile fizice sunt distribuite n general necontiguu ntre mai multe procese. Se spune c
are loc o proiectare a spaiului virtual peste cel real.
Acest mecanism are ca avantaj faptul c folosete mai eficient memoria operativ,
fiecare program ocupnd doar memoria strict necesar la un moment dat. Un alt avantaj
este acela c mai multe programe pot folosi n comun instruciunile unei proceduri( o
astfel de procedur se numete reentrant).
Acest tip de alocare este utilizat la SC IBM-PC dotate cu memorie expandat.

Alocare segmentat. n acest caz textul unui program poate fi plasat n zone de
memorie distincte, fiecare coninnd o bucat de program numit segment( spre deosebire
de alocarea real unde fiecare proces trebuie s ocupe un spaiu contiguu). Deosebirea
dintre alocarea paginat i cea segmentat este c segmentele sunt de lungimi diferite. Ca
i la alocarea paginat, o adres virtual este o pereche ( s, d) unde s este numrul
segmentului, iar d este adresa n cadrul segmentului. Fiecare proces activ are o tabel de
segmentare i fiecare intrare n tabel conine adresa de nceput a segmentului. Calculul
de adres se face ca i la alocarea paginat; dac la adresa TS se afl nceputul tabelei de
segmente atunci funcia t de translatare a adresei este t s d M TS s d ( , ) [ ] = + + . Avantajele
alocrii segmentate sunt( pe lng altele):
a) se pot crea segmente reentrante care s fie utilizate n comun de ctre mai
multe procese( dac aceste procese au n tabelele lor aceeai adres pentru segmentul
pur).
b) se realizeaz o bun protecie a memoriei, fiecare segment putnd primi alte
drepturi de acces care sunt trecute n tabela de segmente.

Alocare segmentat i paginat. La alocarea segmentat este posibil s apar
fenomunul de fragmentare ce apare la alocarea cu partiii variabile. Ideea alocrii
segmentate i paginate este aceea ca alocarea spaiului pentru fiecare segment s se fac
n pagini. Pentru aceasta fiecare proces activ are propria tabel de segmente i fiecare
segment dintre cele ncrcate n memorie are propria tabel de pagini. Fiecare intrare n
tabela de segmente are un cmp rezervat adresei de nceput a tabelei de pagini proprii
segmentului respectiv. O tabel pentru segmentare i paginare are forma:








Tabela de
procese
Tabela de segmente
( una la proces)
Tabela de pagini
( una la segment)
Memoria real
- 61 -
















O adres virtual are forma

s p d

unde s este numrul segmentului, p este numrul paginii virtuale n cadrul segmentului,
iar d este deplasamentul n cadrul paginii.
O adres fizic are forma

f d

unde f este numrul paginii fizice, iar d este deplasamentul n cadrul paginii.
Dac k este constanta ce d dimensiunea unei pagini( 2
k
), TS adresa de nceput a
tabelei de segmente a unui proces, iar primul cmp al fiecrei intrri din tabela de
segmente este pointerul spre tabela lui de pagini, atunci funcia t de translatare se
calculeaz astfel: t s p d M M TS s p d
k
( , , ) [ [ ] ] = + + + 2 .
Acest sistem de alocare este utilizat de ctre SO MULTICS, SO VAX/VMS.
Calculatoarele IBM-PC cu microprocesor cel puin 80386 dispun de un mecanism hard
de gestiune paginat i segmentat a memoriei extinse.

2.2.4. Gestiunea memoriei sub diverse SO

UNIX
Pentru gestiunea memoriei sub SO UNIX trebuie inut cont de faptul c un proces
poate s genereze uor un alt proces i c exist o mare diversitate de SC pe care este
implementat SO UNIX.
Folosind apelurile sistem fork i exec se pot crea oricte procese. Dac la un
moment dat n memorie exist dou procese A i B, iar B execut un apel fork, apoi un
exec(C) atunci harta memoriei apare astfel:


- 62 -













n figur, a) este harta memoriei la nceput, b) dup lansarea lui fork, iar c) dup
lansarea lui exec.
Aceste modificri ale memoriei nu se fac sub controlul direct al nucleului, rolul
gestiunii aparine sistemului de operare care are sarcini suplimentare privind gestiunea
memoriei.
Gama mecanismelor de gestiune a memoriei acoper tot ce se cunoate n
domeniu.
Pentru sistemele mici, monoutilizator implementrile UNIX sunt foarte simple: nu
se face nici paginare, nici swapping; exist o list prin care sunt nlnuite spaiile libere,
iar alocarea se face ca la alocarea cu partiii variabile.
Pe mainile PDP mai slabe dect seria PDP11 s-a adoptat tehnica swapping(
evacuare temporar): procesele inactive sunt evacuate i ncrcate pe/de pe disc.
Implementrile VAX/UNIX ofer un spaiu mare de memorie virtual. Cele mai
multe implementri UNIX actuale adopt mecanisme de memorie virtual cu paginare.
Dac memoria real este mic se practic evacuare temporar pe disc.
Fiecare adres virtual conine un numr de pagin i un deplasament n cadrul
paginii. Componenta MMU( Memory Management Unit) a nucleului transform aceast
adres virtual n adres real. Tabela de gestiune a paginilor este plasat n memorii mai
rapide, dac exist. Fiecare intrare n tabela de pagini conine:
- corespondena ntre pagina virtual i cea real
- un bit de modificare care are valoarea 1 dac coninutul paginii a fost modificat
- un bit de accesabilitate prin care sistemul afl dac ntr-un interval de timp fixat
de sistem pagina a fost sau nu n memorie
- biii de protecie etc.


MS-DOS
Calculatoarele compatibile IBM-PC dispun de obicei de 640 Ko memorie RAM
disponibil utilizatorului; la acest tip de SC este permis adresarea a maximum 1 Mo
memorie. SO DOS poate adresa direct 384 Ko. Memoria RAM este mprit n dou
pri:
- memoria convenional aflat ntre adresele 00000 i 9FFFF( cei 640 Ko
disponibile utilizatorului)








KERNEL KERNEL KERNEL
A
B
A
B
Fiul lui B
A
B
C
a) b) c)
- 63 -
- memoria rezervat( ascuns, shadow) aflat ntre adresele A0000 i FFFFF.

Gestionarea memoriei convenionale. Poriunea RAM gestionat de DOS se
mparte n dou zone:
- zona sistem: ncepe de la adresa 0 i conine:
- vectorul de ntreruperi
- driverele interne
- driverele declarate n CONFIG.SYS
- bufferele disc
- partea rezident din COMMAND
- zona TPA ce conine restul programelor lansate n sistem.
Programele DOS accept trei tipuri de segmente: de cod, de date i de stiv. Un
segment poate avea cel mult 64 Ko. Programele executabile sub DOS sunt de dou tipuri:
EXE i COM. Un program de tip COM are cel mult 64 Ko i este format dintr-un singur
segment care este n acelai timp segment de cod, date i stiv. Un program de tip EXE
poate fi orict de mare, poate conine oricte segmente care pot ocupa orice locuri n zona
TPA. Deci se poate considera c se folosete alocarea segmentat, dar nepaginat.
Unitatea de alocare a memoriei DOS este paragraful care este o poriune de 16
octei i ncepe la o adres multiplu de 16. Controlul spaiilor de memorie TPA se face
folosind aa-numitele MCB-uri( Memory Control Block). Un MCB are 16 octei i
conine:
- un octet de control; toate MCB-urile cu excepia ultimului au n acest octet codul
ASCII al caracterului M, ultimul are codul lui Z I marcheaz sfritul listei nlnuite de
MCB-uri( Mark Zbirkovski)
- pointer( adres de segment pe 2 octei) spre nceputul programului printe al
zonei de memorie ce urmeaz
- dimensiunea n paragrafe a zonei ce urmeaz i care aparine programului.
O zon controlat de un MCB conine un segment al unui program; imediat ce se
termin o zon controlat de un MCB urmeaz un alt MCB care controleaz o zon
ocupat de de acelai program, de un alt program sau o zon liber.
Sub DOS exist programe care dup terminarea lor rmn instalate n meorie I
pot fi reactivate n orice moment( TSR-uri Terminate and Stay Resident).
Pentru a se vizualiza organizarea i ocuparea memoriei DOS se poate folosi
pogramul MEM. Sintaxa de apel este MEM [/p /d /c]. Apelat simplu afieaz
dimensiunea memoriei convenionale i a spaiului liber. Cu opiunile p sau d se afieaz
adresele i lungimile zonelor ocupate de diverse programe, numele i tipul lor. Opiunea c
d doar numele i lungimile programelor din memoria convenional.

Gestiunea memoriei rezervate. n aceast zon DOS i rezerv spaiul necesar
memoriei ecran i extensiilor acesteia, sunt memorate o serie de componente BIOS i aici
se afl o fereastr de 64 Ko folosit pentru exploatarea memoriei expandate.
ncepnd cu 1985, sub tutela firmelor Lotus, Intel i Microsoft s-au elaborat
standarde de folosire sub DOS a unei memorii RAM mai mari de 1 Mo:
- standardul de memorie expandat( EMS) este aplicabil n primul rnd mainilor
cu microprocesor 8086 I 8088. Principiul lui de baz se numete comutare bank i
const n urmtoarele: n memorie exist mai multe chip- uri totaliznd pn la 8 Mo
- 64 -
care pot ocupa pe rnd o aceeai adres aflat n spaiul de adrese de pn la 1 Mo.
Mecanismul de comutare( EMM) folosete n acest scop o fereastr de 64 Ko liber n
memorie rezervat.
- standardul de memorie extins( XMS) este aplicabil ncepnd cu mainile 80286
i prevede existena mai multor chip-uri totaliznd pn la 16 Mo; fiecare chip are adres
fix n spaiul celor 16 Mo. Pentru programele obinuite de aplicaii care nu vd un
spaiu de peste 1 Mo exist managerul soft XMM care permite copierea de blocuri de
memorie din spaiile de peste 1Mo n fereastra de 64 Ko din memoria rezervat i invers.
n acest mod orice program poate s adreseze un spaiu de memorie orict de mare.

- 65 -

2.3. Fiiere i gestiunea fiierelor


Gestiunea fiierelor este serviciul cel mai vizibil oferit utilizatorului de ctre SO. SC
poate memora informaiile, le poate imprima pe hrtie sau afia pe ecran. Se va prezenta n
continuare situaia n care memorarea se face pe suport magnetic.

2.3.1. Gestiunea fiierelor din punctul de vedere al utilizatorului

Se numete volumo rol de band, un ansamblu formnd un disc de mas, un harddisc,
un disc flexibil. n cadrul unui volum informaiile sunt grupate da ctre SO la indicaia
utilizatorului n fiiere. Prin programele sale utilizatorul are acces la un moment dat numai la o
entitate din cadrul unui fiier, entitate numit articol sau nregistrare.
Exemplu: presupunem c informaiile ce compun un fiier se refer la datele personale
ale studenilor dintr-o facultate; un articol este format din datele referitoare la un student; exist
attea articole ci studeni sunt n facultate.
Informaiile dintr-un articol sunt grupate n subdiviziuni numite cmpuri sau atribute.
Fiecare cmp al unui articol are n fiier o valoare. Perechea (cmp, valoare) se numete cheie.
Un index de articol este un atribut cu proprietatea c pentru orice dou articole valorile atributului
sunt diferite. Un fiier poate avea unul sau mai muli indeci.
Exemplu: un articol dintr-un fiier de tipul din exemplul anterior ar putea avea cmpurile:
- nume
- prenume
- nr_matricol
- data_naterii
- loc_natere
- adresa
- buletin
- secia
- note
Perechea ( nume, Popescu) este o cheie; perechea ( nr_matricol, 4221) este un index, la fel
perechea ( buletin, BT312412).
Lungimea de reprezentare a unui articol poate fi aceeai pentru toate articolele din fiier
sau poate varia; corespunztor avem articole cu format fix i articole cu format variabil.
Lungimea maxim de reprezentare a unui articol nu poate fi orict de mare, deoarece ntr-un bloc
de informaie trebuie s intre mai multe articole.
Un sistem de gestiune a fiierelor( SGF) este un ansamblu de rutie de legtur ntre
utilizator i componenta de I/O la nivel fizic pentru operarea cu fiiere. Utilizatorul are la
dispoziie o serie de primitive pe care le poate solicita SGF-ului pentru servicii referitoare la
fiiere. Aciunile SGF se pot grupa pe 4 niveluri:
- nivel de cmp i index
- nivel de articol
- nivel de fiier
- nivel de volum.
Conceptul de fiier. Exist mai multe definiii pentru noiunea de fiier, dar nelegerea
corect a acestei noiuni este intuitiv. S-ar putea defini fiierul ca:
- ansamblu de informaii definite de ctre creatorul su
- colecie de date ce poart un nume
- 66 -
- ansamblu de elemente( numite articole) grupate i avnd ca scop controlul accesului,
regsirea i modificarea elementelor.
S-ar putea da o definiie abstract a fiierului: un fiier f este o funcie f:NT unde N
este mulimea numerelor naturale, iar T mulimea valorilor posibile pentru un tip de date deja
definit; ieN indic numrul de ordine al unui articol din fiier.
Operaii asupra unui fiier. Fie f un fiier cu n articole. Operaiile asupra fiierului f se
pot descrie astfel:
Citirea( Read) articolului k din fiier nseamn obinerea valorii f(k).
Scrierea( Write) nseamn adugarea unui nou articol la fiier; n acest caz fiierul f se
transform ntr-un fiier f definit astfel:
n:=n+1; f(i):=f(i), i=1,n; f(n+1):=x,unde x este valoarea articolului ce se introduce.
I nserarea( I nsert) unui nou articol cu valoarea x dup articolul cu numrul de ordine k
nseamn obinerea unui nou fiier f cu n+1 articole definit astfel:
f(i):=f(i), i=1,k; f(k+1):=x; f(i+1):=f(i), i=k+1,n.
Stergerea( Delete) articolului cu numrul de ordine k nseamn obinerea unui nou fiier
f cu n-1 articole definit astfel:
f(i):=f(i), i=1,k-1; f(i):=f(i+1), i=k,n-1;
Modificarea( Modify) articolului cu numrul de ordine k nseamn obinerea unui nou
fiier f cu n articole definit astfel:
f(i):=f(i), i=1,k-1; f(k):=x; f(i):=f(i), i=k+1,n.
Practic, prin aceste operaii nu se creaz ntotdeauna un nou fiier. SO acioneaz asupra
informaiilor de pe suport i las nemicate articolele neimplicate.
Tipuri de acces la articolele unui fiier la o operaie de citire.
- acces secvenial la un articol f(i): presupune efectuarea a i-1 accese, n ordine la
articolele cu numerele 1, 2,..., i-1.
- acces direct( random acces) la un articol: presupune existena unui mecanism de acces
fr parcurgerea articolelor ce l preced. Exist dou moduri de acces direct:
- acces prin numr de poziie( adres): se d sistemului valoarea i i acesta
ntoarce valoarea f(i)
- acces prin coninut: se d sistemului o cheie (a,v) i acesta ntoarce articolul i
pentru care f(i).a=v
Tipuri de fiiere. Clasificarea fiierelor se poate face dup mai multe criterii:
1) Dup lungimea unui articol
- fiiere cu articole de format fix
- fiiere cu articole de format variabil: fiecare articol are propria lungime de
reprezentare, sfritul articolului se marcheaz prin octei cu coninut special. Articolele pot avea
i o parte fix.
2) Dup posibilitatea de afiare sau tiprire a coninutului:
- fiiere text: coninutul lor poate fi tiprit. Un astfel de fiier este o succesiune de
octei fiecare reprezentnd codul unui caracter tipribil. O linie este un ir de caractere ce se
termin printr-un separator de linii( CR/LF). Sfritul fiierului se marcheaz prin caracterul
funcional EOF.
- fiiere binare: sunt formate din iruri de octei consecutivi fr nici o
semnificaie pentru afiare; semnificaia fiecrui octet fiind intern. De exemplu, fiierele obiect
rezultate din compilare sunt fiiere binare, la fel i cele executabile rezultate n urma editrii de
legturi.
3) Dup suportul pe care este rezident fiierul:
- fiiere pe disc magnetic
- fiiere pe band sau caset
- fiiere pe imprimant
- fiiere tastatur
- 67 -
- fiiere pe ecran
- fiiere pe band de hrtie
- fiiere pe plotter, digitizor .a.m.d.
Nu toate aceste fiiere accept orice tip de operaie i nici orice tip de acces. Acces direct accept
doar fiierele pe disc, celelalte accept doar acces secvenial. Fiierele tastatur accept numai
citire, cele pe imprimant, plotter sau ecran, numai scriere.
4) Dup modurile de acces permise de ctre fiier se disting dou tipuri: fiiere
secveniale i fiiere n acces direct. Fiierele secveniale permit numai accesul secvenial; toate
fiierele care au alt tip de suport dect discul magnetic sunt fiiere secveniale. Fiierele n acces
direct permit accesul direct cel puin n citire. Limbajele de programare Pascal, C... dispun de
mecanisme prin care se pot realiza fiiere n acces direct prin numr de poziie. Unele limbaje sau
SO au mecanisme ce permit accesul direct prin coninut( organizri evoluate ale fiierelor). Dintre
acestea cele mai importante sunt fiierele organizate: secvenial indexat, selectiv, multilist,
inverse, folosind B-arbori.
Referirea la un fiier se face n funcie de regulile sintactice impuse de ctre SO. n
general referirea se face printr-un ir de caractere( fr spaii) ce conine cinci zone:
Periferic : Cale Nume . Tip ; Versiune

Sintaxa concret cerut de fiecare SO particular folosete numai unele dintre aceste zone:

SO Periferic Cale Nume Tip Versiune
RSX da da 9 caractere 3 caractere da
UNIX - da 14 caractere - -
CP/M da - 8 caractere 3 caractere -
MS_DOS da da 8 caractere 3 caractere -

Periferic indic numele perifericului suport al fiierului, nume impuse de ctre SO.
Caledesemneaz subdirectorul din cadrul discului unde se afl fiierul. Pentru RSX calea
se specific prin UIC sub forma [g,m]. n absena cii SO ia n considerare o cale implicit, UIC-
ul implicit pentru RSX sau directorul implicit pentru UNIX i MS_DOS.
Numeeste un ir de litere i cifre date de creatorul fiierului.
Tip sau Extensie a numelui este dat tot de ctre utilizator i reflect coninutul fiierului.
Fiecare SO cere de obicei o extensie standard la anumite tipuri de fiiere. Iat cteva tipuri de
fiiere i modul n care sunt ele specificate n cele trei SO:
RSX CP/M MS_DOS Tip de fiier
BAS BAS BAS Text surs BASIC
FTN FOR FOR Text surs FORTRAN
PAS PAS PAS Text surs PASCAL
C C C Text surs C
CBL Text surs COBOL
MAC ASM ASM Fiier surs n limbaj de asamblare
OBJ REL OBJ Fiier obiect rezultat al unei compilri
TSK COM EXE COM Fiier executabil, rezultat al unei editri de legturi
CMD SUB BAT Fiier de comenzi
LST PRN LST Fiier listing
DAT DAT DAT Fiier de date
DOC DOC DOC Fiier text coninnd documentaii
TXT TXT TXT Fiier text oarecare
MAP MAP Fiier de alocare la editarea de legturi
- 68 -
DIR Fiier director
ODL Text coninnd descrierea reacoperirii
OLB REL LIB Fiier bibliotec de module obiect
TMP $$$ TMP Fiier temporar
BAK BAK Fiierul vechi dup editarea unui text
Versiuneeste o noiune proprie RSX i difereniaz mai multe versiuni ale aceluiai fiier.


2.3.2. Aciunile SGF la nivel de articol

Dup cum s-a specificat n paragraful anterior, n practic, la operaiile de scriere,
inserare, modificare, nu se creeaz un nou fiier, ci SGF acioneaz numai asupra articolelor n
cauz.
n funcie de suportul fiierului, operaiile permise fizic sunt:
- citire, pentru suporturile disc, band magnetic, band de hrtie, cartele, tastatur,
digitizor
- scriere, pentru suporturile disc, band magnetic, band de hrtie, ecran, imprimant,
plotter
- inserare, tergere, modificare, pentru suporturile de tip disc.
Scrierea i actualizarea fiierelor disc. Suportul disc permite scriere i citire n acelai
timp. Operaiile de scriere, inserare, tergere i modificare se deruleaz diferit n funcie de
formatul articolelor i de faptul c fiierul este secvenial sau nu.
Pentru fiiere secveniale se procedeaz n felul urmtor:
- scrierea se desfoar n mod firesc
- modificarea se face prin rescrierea articolului nou peste cel vechi; celelalte articole
trebuie s rmn nemicate de la locul lor. Acest lucru este posibil numai dac articolele sunt de
lungime fix.
- tergerea se face prin invalidare, fr ca articolul s elibereze zona fizic pe care o
ocup. SGF adaug la fiecare articol un octet numit indicator de tergere care are valoarea 1 dac
articolul exist pentru SGF i 0 dac este ignorat( se consider ters); pentru a evita ocuparea unui
spaiu fizic considerabil se recomand ca din cnd n cnd fiierul s fie recreat pentru a elibera
spaiul fizic ocupat de articolele terse.
- inserarea unui articol trebuie fcut n aa fel nct celelalte articole s rmn
nemicate; acest fapt este posibil numai dac articolele sunt legate printr-o list nlnuit care
permite ca dou articole s fie vecine logic chiar dac ocup spaii fizice ndeprtate.
Pentru fiierele n acces direct operaiile se desfoar n mod similar. De regul sunt
permise a se efectua n acces direct toate cele patru operaii. Exist ns unele organizri de fiiere
n acces direct care permit operaia de citire numai n acces secvenial.
Blocarea i deblocarea articolelor. Pentru a prezenta aceste concepte s revenim la
mprirea unui fiier n blocuri( pagini, nregistrri fizice). Un bloc este unitatea de schimb ntre
suportul fiierului i memoria intern.; lungimea lui este delimitat da capacitatea memoriei
disponibile. Un bloc conine unul sau mai multe articole. SO RSX, UNIX, CP/M, MS_DOS au
dimensiunea unui bloc disc fixat la generarea sistemului. SGF sub RSX, CP/M, MS_DOS
utilizeaz conceptul de articol n timp ce UNIX definete un fiier ca un ir de octei, fiecare octet
este adresabil n cadrul fiierului, deci un articol este format dintr-un octet; fiierul este n blocuri
de cte 512 octei.
La nivel fizic, fiecare SO vede fiierul ca o succesiune de blocuri. Prin intermediul SGF
se realizeaz gruparea mai multor articole ntr-un bloc la operaia de scriere- blocarea articolelor-
i operaia invers la citire- deblocarea articolelor. Prin aceste operaii se efectueaz cte o citire
sau scriere fizic la fiecare bloc de articole, nu la fiecare articol.
- 69 -
Se presupune n continuare pentru simplificare c se lucreaz numai cu fiiere secveniale
i numai cu operaii de citire i scriere. Algoritmii de blocare i deblocare se vor descrie n
continuare prin procedurile Get i Put. n practic un bloc de informaie ncepe cu un antet de
bloc ce conine civa octei cu informaii ce caracterizeaz blocul( de exemplu lungimea
informaiilor utile din bloc). Dup antet urmeaz articolele unul dup altul. Dac antetul lipsete
atunci constanta LAT va avea valoarea zero. Analog, un articol poate s nceap cu un antet de
articol format din octei ce caracterizeaz articolul( octetul indicator de tergere, lungimea
articolului,...). Dac antetul lipsete constanta LAA va avea valoarea zero. Parametrul la conine
lungimea efectiv a articlului, fr antet, iar parametrul za conine articolul efectiv, fr antet.
Utilizatorul comunic cu SGF numai prin intermediul acestor doi parametri. Se mai folosesc
pentru descrierea blocrii i deblocrii dou proceduri i dou funcii cu semnificaiile:
Procedure Puneantett( var Z: tampon; l: integer); prin care se depune la nceputul zonei
Z un antet de bloc ce cuprinde l octei de informaie, inclusiv antetul de bloc.
Procedure Puneanteta(Z: tampon;i,l:integer); prin care se depune n zona Z ncepnd cu
poziia i un antet de articol; articolul are o lungime total, inclusiv antetul,de l octei.
Function Scoateantett( Z: tampon): integer; ntoarce, plecnd de la antetul blocului aflat
n zona Z, lungimea total a blocului, inclusiv antetul de bloc.
Function Scoateanteta( Z: tampon; i: integer): integer; ntoarce lungimea total a
articolului, inclusiv antetul, aflat n blocul Z, ncepnd de pe poziia i.

const
LAA=...;{ lungimea antetului de articol}
LAT=...;{ lungimea antetului de bloc}
LMAXA=...;{ lungimea maxim a unui articol}
LMAXT=...;{ lungimea zonei tampon care coincide cu lungimea unui bloc}
type
articol: array[1..LMAXA] of byte;
tampon: array[1..LMAXT] of byte;
var
fisier: file of tampon;
Zt: tampon;{ rezervarea spaiului pentru zona tampon}
it, odt: integer;{ indicatorul articolului curent n tampon respectiv numrul de octei
disponibil n tampon}
procedure Put( Za: articol; la integer);
var i:integer;
begin
if odt<la+LAA then
begin
Puneantett( Zt, LAT+it-1); write( fisier, Zt);
it:=LAT; odt:=LMAXT-LAT
end;
Puneanteta( Zt; it; LAA+la);
for i:=1 to la do Zt[it+LAA+i]:=Za[i];{ mut articol n tampon}
it:= it+ LAA+ la; odt:= odt- LAA-la
end; { Put}
Procedure Get( var Za: articol; var la: integer);
label 9999
var i: integer;
begin
if odt=0 then
begin
- 70 -
if eof(f) then goto 9999; { sfrit de fiier}
read( fisier, Zt); it:=LAT; odt:= Scoateantett( Zt)- LAT
end;
la:= Scoateanteta( Zt, it)- LAA;
for i:=1 to la do Za[i]:=Zt[it+LAA+i];{ mut din tampon n articol}
it:= it+LAA+la; odt:=odt-LAA-la;
goto 9998; { se ntoarce un articol efectiv}
9999:
la:=-1; { se ntoarcesfrit de fiier}
9998:
end; { Get}
Dac n urma apelului procedurii Get utilizatorul primete ca lungime de articol citit
valoarea -1 nseamn c s-a ajuns la sfritul fiierului.
Se impun trei observaii privind nchiderea i deschiderea unui fiier:
- dac fiierul e deschis pentru citire( se va folosi numai procedura Get) atunci SGF
atribuie n momentul deschiderii odt:=0 astfel c la primul apel al procedurii Get se va face
citirea fizic a primului bloc din fiier.
- dac fiierul e deschis pentru scriere( se va folosi numai procedura Put) atunci SGF
atribuie n momentul deschiderii it:= LAT; odt:=LMAXT-LAT; realizndu-se nceputul
introducerii de articole de la un tampon vid. n plus, cele dou atribuiri fac tamponul disponibil,
ocolind scrierea tamponului deja existent, aciune fr sens la prima scriere n fiier
- utilizatorul trebuie s cear SGF nchiderea fiierului la terminarea lucrului cu acesta(
obligatoriu dac fiierul a fost deschis pentru scriere). La nchiderea unui fiier deschis pentru
scriere, SGF execut Puneantett( Zt, LAT+it-1); write( fisier, Zt). Dac se omite comanda de
nchidere a fiierului, coninutul ultimului buffer nu va mai fi scris n fiier.
n ceea ce privete accesul direct i alte operaii( n afar de citiri i scrieri), tehnica
blocrii i deblocrii este aplicabil. Pentru a putea realiza operaiile de midificare, tergere,
adugare, SGF gestioneaz zona tampon astfel:
- ct vreme s-a acionat numai asupra articolelor aflate n acelai tampon, acesta e
pstrat ca tampon curent
- cnd se impune schimbarea tamponului curent, SGF tie dac acesta a fost modificat
sau nu i l depune pe suport nainte de a fi nlociut, dac este cazul.

2.3.3. Aciunile SGF la nivel de fiier

n aceast seciune ne vom ocupa de aciunile SGF ce privesc fiierul ca o entitate i ne
vom ocupa de fiiere memorate pe disc.
Operaiile care se vor studia sunt cele de deschidere i nchidere a unui fiier, de creare,
de tergere, de copiere, de schimbare a numelui sau de listare( dac este text) a unui fiier. nainte
de a detalia aceste operaii se vor prezenta structurile de date pe care trebuie s le ntrein SGF
pentru a putea realiza operaiile.
Descriptorul de fiier. Informaiile de descriere a unui fiier sunt coninute ntr-un
articol special numit descriptor de fiier. Locul de memorare a articolului descriptor este ntr-un
loc special numit directorul de fiier( despre care se va vorbi n seciunea urmtoare). ntr-un
descriptor de fiier apar patru grupe de informaii: identificarea fiierului, informaii privind
adresele fizice disc pe care le ocup, informaii de control al accesului la fiier, informaii de
organizare i calendaristice.
Identificarea fiierului. Aceast informaie este compus dintr-o pereche (N, I). Valoarea
N conine numele simbolic al fiierului i este un ir de caractere cu structura prezentat anterior;
prin aceast valoare SGF realizeaz lagtura cu utilizatorul. Valoarea I este un numr prin care
descriptorul este reperat pe disc n mod direct; prin aceast valoare SGF realizeaz legtura cu
- 71 -
celelalte componente ale SO. Diverse SO folosesc pentru I diferite denumiri: i-node( UNIX),
handle( MS_DOS), pointer n INDEXF.SYS( RSX) etc. Identificatorul de fiier este folosit de
ctre diferite programe utilitare pentru refacerea unei structuri de fiiere compromise.
Adresele fizice ocupate de fiier. De regul un fiier ocup pe disc mai multe zone; n
funcie de tehnica de alocare folosit, n aceste adrese se vor memora informaiile necesare
regsirii articolelor fiierului.
Controlul accesului la fiier. Conine informaii despre cine are drepturi de acces la fiier
i ce fel de drepturi are i informaii privind reglementarea multiaccesului simultan la fiier(
pentru SO multiutilizator).
Informaii de organizare i calendaristice. Aici se trec mai multe tipuri de informaii
printre care:
- modul de organizare a fiierului: secvenial, secvenial-indexat, nlnuit,...
- formatul articolelor: fix, variabil, fiier text i standardul de codificare( ASCII,
EBCIDIC);
- data i ora crerii( ultimei actualizri, ultimea citiri);
- numrul total de consultri ale fiierului;
- dispoziii de pstrare a fiierului: permanent, temporar, un numr de zile etc.
Funciile de deschidere i nchidere( open i close). Aciunile SGF desfurate naintea
primului acces la un fiier sunt grupate n operaia de deschidere( Open) a fiierului. Aciunile
SGF desfurate dup ultimul acces la un fiier sunt grupate n operaia de nchidere ( Close) a
fiierului respectiv.
Rutina de deschidere Open. Operaia Open informeaz SO c un anumit fiier va deveni
activ. Prima sarcin a deschiderii este de a face legtura ntre informaiile de identificare a
fiierului i variabila din program care prin care utilizatorul se refer la fiier. Prin deschidere
sunt efectuate controale asupra drepturilor de acces ale utilizatorului la fiier, se fac iniializari
necesare acceselor ulterioare etc. Concret, n funcie de condiiile de deschidere avem:
a) pentru un fiier care exist deja pe disc:
- realizeaz legtura ntre variabila de program ce indic fiierul, suportul pe care se afl
fiierul i descriptorul de fiier aflat pe disc
- verific pe baza drepturilor de acces dac utilizatorul are sau nu acces la fiier.
b) pentru un fiier nou, ce urmeaz a fi creat:
- aloc spaiu pe disc pentru memorarea viitoarelor articole ale fiierului
c) att la fiier nou ct i la cel existent:
- aloc memorie intern pentru zonele tampon necesare accesului la fiier;
- ncarc rutinele de acces la articolele fiierului i execut instruciunile lor de
iniializare;
- genereaz o form cadru a instruciunilor de comand a canalului I-O;
- memoreaz unele dintre datele obinute la a), b), c) i cele din descriptorul fiierului
ntr-o structur de date din memoria intern, cunoscut sub numele de bloc de control( File
Control Bloc, FCB); fiecare utilizator are pentru fiecare fiier propriul FCB, unele fiiere(
standard) au FCB n monitorul sistemului.
Rutina de nchidere Close. Operaia de nchidere anun SO c fiierul nceteaz a mai fi
activ. Unele SO cer anunarea explicit a nchiderii, altele efectueaz automat nchiderea
fiierului la sfritul programului. Prin nchidere se pun la zi informaiile generale despre fiier(
lungime, adrese de nceput i de sfrit, data modificrii etc).
n funcie de condiiile de nchidere avem:
a) pentru fiiere temporare create n programul curent i de care nu mai este nevoie:
- se terge fiierul i se elibereaz spaiul disc ocupat.
b) pentru fiiere nou create care trebuie reinute:
- creeaz o nou intrare n directorul discului.
c) pentru toate fiierele care trebuie reinute:
- 72 -
- insereaz dac e cazul marcajul EOF dup ultimul articol al fiierului;
- golete( pune pe suport) ultimele informaii existente n zonele tampon;
- pune la zi cele patru grupe de informaii din descriptorul de fiier cu valorile curente;
- dac fiierul a fost modificat se marcheaz acest lucru i se pune numele fiierului ntr-
o list a sistemului( n vederea salvrii de ctre SO a tuturor fiierelor modificate).
d) pentru toate fiierele, permanente sau temporare:
- aduce capul de citire a discului n poziia zero;
- elibereaz spaiul de memorie ocupat de ctre FCB;
- elibereaz spaiile ocupate de zonele tampon n memoria operativ.
Alte operaii globale cu fiiere. Operaiile ce urmeaz se execut de regul prin
intermediul unor programe utilitare ale SO, n particular prin intermediul unor comenzi standard
ale SO.
Crearea unui fiier. Pentru un fiier cu organizare simpl aceast operaie coincide cu
deschiderea fiierului pentru scriere. Pentru fiierele cu structur mai sofisticat crearea nseamn
o formatare care pregtete spaiul fizic n vederea ncrcrii lui cu informaii.
Stergerea unui fiier. Aceast aciune are ca efect eliberarea spaiului fizic ocupat de
articolele fiierului i se elimin din director intrarea ce conine descriptorul fiierului respectiv.
Copierea unui fiier n alt fiier. Prin aceast operaie se realizeaz o copiere fizic a
fiierului surs ntr-un fiier numit destinaie; n urma copierii fiierele vor avea acelai coninut.
Schimbarea numelui de fiier. Aceast operaie las neschimbat coninutul fiierului, i
schimb doar numele. Dac se schimb numele sau tipul fiierului operaia se numete
redenumire, dac se schimb calea de acces spre fiier operaia poart numele de mutare.
Listarea fiierului. Operaia este un caz particular al copierii, atunci cnd fiierul surs
este de tip text, iar fiierul destinaie este imprimanta sau ecranul unui terminal.
Concatenarea mai multor fiiere. Aceast operaie este o generalizare a copierii.
Concatenarea se poate face n dou moduri: adugarea unor fiiere surs la un fiier existent,
obinndu-se un fiier nou sau crearea unui fiier nou ce conine fiierele surs alipite.
Diverse SO mai conin i alte programe utilitare ce opereaz cu fiierele ca entiti. Iat
cteva dintre aceste operaii:
Compararea a dou fiiere. Compararea se face parcurgnd secvenial cele dou fiiere,
octet cu octet; dup depistarea unui numr fixat de nepotriviri compararea se oprete cu rezultat
fals. Dac cele dou fiiere nu au aceeai lungime sau nu sunt de acelai tip, compararea nu se
lanseaz.
Fuzionarea a dou sau mai multe fiiere. Pentru a se realiza aceast operaie se
stabilete un criteriu de stabilire a ordinii de fuzionare a articolelor din fiiere; de obicei articolele
au un atribut comun i apar n fiiere ordonate dup valorile atributului respectiv.
Sortarea articolelor unui fiier. Este o operaie des utilizat n special n prelucrrile cu
caracter economic. Unele limbaje de programare dispun chiar de instruciuni special n acest sens(
de exemplu Cobol).
Operaii de filtrare a unui fiier. Prin filtru se nelege un program care citete un fiier
i creeaz din el altul pe baza unor criterii( sortare, eliminarea liniilor cu un anumit coninut,
macroprocesarea etc).
Compactarea unuia sau mai multor fiiere n vederea arhivrii lor. Se folosete pentru
pstrarea n arhive a unor fiiere al cror coninut va fi util doar peste un anumit interval de timp
sau pentru a pstra copii de siguran a unor fiiere importante. Compactarea poate fi vzut ca o
codificare a datelor n care codurile caracterelor au lungimi variabile: caracterele ntlnite mai
frecvent sunt reprezentate printr-un numr mai mic de cifre binare; aceste tipuri de coduri fac
parte din clasa codurilor Huffman. Prin compactare se realizeaz o economie a spaiului fizic.
Pentru fiecare program de compactare exist i program de compactare care reface structura
fiierului plecnd de la arhiv.
- 73 -
Protecia, securitatea i controlul accesului. Motivele pentru care protecia i securitatea
datelor sunt un aspect captivant al tiinei calculatoarelor sunt urmtoarelor:
- importana proteciei informaiilor fa de accesul neautorizat la ele;
- secretul n care fabricanii de SC i soft in detaliile legate de realizarea proteciei;
- spectaculoasele furturi realizate cu ajutorul calculatorului;
- apatiia viruilor calculatoarelor.
Protectia informaiei poat efi privit din dou puncte de vedere:
- aspectul tehnic: problemele de protecie i securitate sunt rezolvate n prim instan de
echipamentul hard dup care sunt realizate soft( SO deine mecanisme prin care permite
utilizatorilor s-i realizeze propriile mecanisme de protecie.
- aspectul economic: decide ct de complex( i scump) terbuie s fie un mecanism de
protecie avnd n vedere pagubele ce se pot produce prin nclcarea proteciei i securitii.
Utilizarea de parole, fiiere ascunse, activarea unor programe preliminare nainte de a
folosi efectiv un produs sunt numai cteva mijloace( simple) de protecie.
Pentru a realiza protecia, securitatea i controlul accesului la fiiere din perspectiva SO
se poate folosi o matrice A de control al accesului n care A(i,j)=1 dac utilizatorul i are drept de
acces la fiierul j i 0 n caz contrar, numrul liniilor matricii este egal cu numrul utilizatorilor,
iar numrul coloanelor este egal cu numrul fiierelor de pe disc. Prin aceast tehnic se ocup un
spaiu de memorie mare( dei matricea A este matrice rar) i deci se folosete mai rar. O alt
tehnic ar fi cea a mpririi utilizatorilor n clase cum ar fi:
- proprietar: de regul cel care creeaz fiierul; stabilete pentru toi ceilali utilizatori
drepturile de acces
- utilizator specificat: este nominalizat de ctre proprietar i are statut special n raport cu
fiierul
- grup sau proiect: grup de utilizatori ce lucreaz mpreun la acelai proiect i utilizeaz
n comun un anumit fiier
- public: restul utilizatorilor.
Se va exemplifica n continuare cum se poate realiza protecia sub diferite SO.

UNIX. n acest SO utilizatorii sunt mprii n patru clase:
- u( User) definete proprietarul fiierului;
- g( Group) definete un grup de utilizatori;
- o( Other) reunete utilizatorii din sistem care nu au fost prini n primele dou clase.
n momentul primului contact cu SO UNIX utilizatorul ia legtura cu administratorul
sistemului care d utilizatorului o parol i l integreaz ntr-un grup, n funcie de interesele
utilizatorului. Fiecare clas de utilizatori are la dispoziie trei atribute independente, fiecare
putnd fi permis sau interzis:
- r permite sau interzice citirea din fiier
- w permite sau interzice scrierea, adugarea, modificarea sau tergerea de octei din fiier
- x indic dreptul de a executa fiierul respectiv( care conine instruciuni main sau este
fiier de comenzi).
n mod implicit atributele sunt stabilite de componenta ce creeaz fiierul( un fiier
executabil va primi atributul x). Proprietarul i administratorul sunt singurii care pot modifica
protecia fiierului prin comanda chmod.

MS-DOS. Fiierele DOS au ase perechi de atribute, dintre care dou se refer la
protecie n mod direct, iar celelalte indirect. Cele ase perechi sunt:
- R+ fiier protejat la scriere;
- R- este permis i scrierea i citirea fiierului
- HID+ fiier ascuns
- HID- fiier vizibil
- 74 -
- SYS+ fiier al sistemului
- SYS- fiier utilizator obinuit
- V+ descriptorul nu se refer la un fiier obinuit ci la eticheta volumului respectiv
- V- descriptor obinuit, nu etichet de volum
- S+ descriptorul respectiv indic un fiier director
- S- descriptorul unui fiier obinuit
- A+ fiier destinat arhivrii deoarece coninutul su a fost modificat
- A- de la ultima restaurare a fiierului s-au fcut eventual numai citiri, deci nu mai trebuie
salvat.
Atributele pot fi modificate cu comanda ATTRIB sau folosind programul Norton
Utilities. Atributul V+ este fixat la formatarea discului, iar S+ la crearea unui nou director.
Informaiile asupra atributelor de fiier sunt memorate n descriptorul de fiier. Primii ase bii
indic n ordine atributele R, HID, SYS, V, S, A i au valoarea 1 dac atributul e cu semnul + i 0
dac e cu -.

2.3.4. Moduri de organizare a fiierelor

Organizarea unui fiier este modalitatea n care sunt aranjate articolele sau pri din ele
astfel nct s permit modurile de acces dorite. Ne vom limita n continuare numai la fiierele
clasice i pentru simplitate presupunem c toate articolele fiierului sunt de acelai tip i sunt
mprite n cmpuri( atribute).
Organizarea secvenial. Se folosete mult datorit simplitii ei.. ntre articolele unui
astfel de fiier exist o relaie de ordine astfel: articolul X urmeaz n fiier unui articol Y dac X
a fost introdus n fiier dup introducerea lui Y. Acest mod de organizare este natural pentru
suportul band; el exist i pentru suportul disc, dar aici dou articole vecine pentru utilizator nu
sunt neaprat vecine i fizic. Formatul articolelor unui fiier secvenial poate fi fix sau variabil.
Accesul la un articol al unui fiier secvenial se face secvenial.
Fiiere n acces direct prin poziie. Un astfel de fiier are de regul articole cu format
fix. Prin SGF exist posibilitatea de a avea acces n mod direct la orice sector disc alocat fiierului
respectiv. S presupunem( ca n figura urmtoare) c sectoarele ocupate de fiier sunt
numerotate 0, 1, 2,..., n. Capacitatea unui sector se va nota cu s, iar lungimea unui articol
presupunem c este l( nu se vor lua n considerare antetele de bloc i de articol). Se presupune c
articolele sunt plasate pe suport succesiv chiar dac un articol ncepe pe un sector i se termin pe
altul.




Fie r numrul articolului solicitat. Cu sr se noteaz numrul sectoarului n care ncepe
articolul solicitat, iar cu or numrul octetului n cadrul sectorului. Pentru a localiza n acces direct
acest articol, SGF face urmtoarele calcule: sr r l divs or r l s : ( ) ; : ( )mod ; = - = -
Dup aceste calcule, SGF face acces direct la sectorul sr i ncepnd cu octetul or extrage
sau depune articolul solicitat.
n cazul articolelor cu format variabil aceast schem nu funcioneaz. Exist alte tehnici
pentru acces n acest caz, de regul se reine fie lista adreselor disc la care ncepe fiecare articol,
fie lista lungimilor acestor articole sau, n cazul n care lungimile articolelor nu difer prea mult,
se reine pentru fiecare articol cu ct este mai lung dect articolul de lungime minim( aceste
valori se pot reine pe un numr mai mic de bii, de exemplu dac diferenele sunt mai mici de 15
octei, ele se pot reine pe 4 bii). Majoritatea limbajelor de programare de nivel nalt au
Sector

Articol
0 1 2 3 n-1
0 1 2 3 4 a-1 5
...
. . .
s
l
- 75 -
implementate mecanisme de acces direct prin poziie pentru articole de format fix, de exemplu
funcia fseek pentru limbajul C standard.
Fiiere inverse. Un astfel de fiier permite un mod natural de organizare pentru a se
realiza accesul direct prin coninut. Aceast organizare presupune existena n acelai timp a
dou fiiere unul de baz i altul invers care sunt create i actualizate simultan. Fiierul invers
conine pentru fiecare cheie specificat de utilizator adresele disc la care se afl articolele ce
conin cheia respectiv.
S considerm de exemplu urmtoarele chei ( NUME, Alb), ( NUME, Pop),(
FUNCIA, student). Fiierele de baz i invers pot s arate astfel:

















Fiierul invers conine p chei. Prin n
1
, n
2
,..., n
p
se specific cte articole din fiierul de
baz conin respectiv cheile 1, 2, ..., p. Prin a
ij
s-a notat adresa celui de al j-lea articol al fiierului
de baz care conine cea de-a i-a cheie indicat n fiierului invers. Este evident c are loc relaia
j k a a i
ij ik
= = , . Fiecare articol al fiierului invers are pe lng cheie atia bii cte
articole are fiierul de baz. Fiecare bit este 1 dac articolul are cheia respectiv sau este 0 n caz
contrar. Tehnica inversrii prin iruri de bii este avantajoas i pentru faptul c permite regsirea
rapid a tuturor articolelor care verific o expresie logic de chei. Spre exemplu, dac se cer toate
articolele ce conin simultan cheile K
i
i K
j
, atunci ntre articolele i i j din fiierul invers se
execut o operaie I bit cu bit. Dac se cer toate articolele care conin cel puin una dintre cheile
K
i
sau K
j
atunci se execut o operaie SAU bit cu bit, iar dac se cer toate articolele ce nu conin
cheia K
i
atunci sunt inversai toi biii articolului i al fiierului invers.
Indiferent de modul de realizare al inversrii, dac n fiierul invers sunt toate cheile din
fiierul de baz, atunci n orice moment din fiierul invers se poate crea fiierul de baz i
reciproc.

Fiiere multilist. Tehnica inversrii devine ineficient n cazul fiierelor de baz foarte
mari pentru c articolele fiierului invers devin lungi i greu de manipulat. Abordarea multilist
nltur acest inconvenient. Acest mod de organizare este conceput pentru acces direct prin
coninut.
Utilizatorul definete o serie de atribute i o serie de valori ale acestora care vor fi cheile
fiierului; presupunem pentru simplitate c au fost selecionate toate cheile fiierului de baz.
SGF ataeaz fiecrei chei dintr-un articol un pointer ctre articolul urmtor ce conine aceeai
cheie; articolele fiierului de baz sunt legate prin attea liste cte chei sunt n fiier. Fiecare
articol particip la c liste, unde c este numrul de scrieri ale articolului. Se creeaz de asemenea o
Fisier
invers
Fisier
de baza
( NUME, Alb) n
1
a
11
a
12
. . . a
1n1


( NUME, Pop) n
2
a
21
a
22
. . . a
2n2

. . . . . . . .
( FUNCIA, student) n
p
a
p1
a
p2
. . . a
pnp


Alb Alb
student
Pop
student
- 76 -
zon coninnd cheile fiierului i adresele primelor articole ce conin cheile respective( capetele
de list), zon numit fiier director. Iat n continuare un exemplu de fiier multilist:


















Ca i la fiierele inverse i la cele multilist are loc relaia j k a a i
ij ik
= = , i n plus
relaia i k a a
ij kj
= = poate s apar de foarte multe ori, eficiena organizrii multilist crete
proporional cu apariia acestei relaii.
Fiiere secvenial-indexate. Acest mod de organizare este cel mai des ntlnit pentru
acces direct prin coninut. Se presupune c exist pentru date un atribut cu valori unice pentru
fiecare articol( atribut index). Articolele sunt scrise pe suport n acces secvenial i sunt plasate n
ordinea cresctoare a valorilor indexului i sunt grupate n blocuri de informaie numite pagini.
Deci toate valorile indexului dintr-o pagin sunt mai mici sau mai mari dect valorile indexului
din alt pagin. n paralel cu crearea fiierului se creeaz o tabel de indeci in care se trece
pentru fiecare fiier adresa disc a paginii i valoarea celui mai mare index din pagin( dac
fiierul de indeci este prea mare se poate organiza ca arbore).
De exemplu, s considerm un fiier secvenial-indexat ce are o tabel de indeci
organizat pe 1, 2 sau 3 nivele; criteriul de alegere a nivelelor este legat de structura fizic a
informaiei pe discul magnetic. Coninutul tabelei este urmtorul:
Nivelul 3- fiier, are attea intrri cte volume disc ocup fiierul i fiecare intrare are
forma:
Ultimul index din volum Numrul volumului
Tabela este plasat pe ultimul volum al fiierului.
Nivelul 2- volum, are attea intrri ci cilindri sunt alocai fiierului n volumul respectiv
i are forma:
Ultimul index din cilindru Numrul cilindrului
Tabela este plasat pe ultimul cilindru alocat fiierului n volumul respectiv.
Nivelul 1- cilindru, are attea intrri cte pagini din fiier exist pe cilindrul respectiv i
are forma:
Ultimul index din pagin Adresa paginii
Tabela este plasat pe ultimele sectoare ale cilindrului.
O poriune dintr-un fiier secvenial-indexat poate s arate astfel:



Fisier
de chei
Fisier
de baza
(NUME Alb) a
11

(NUME Pop) a
21

(FUNCIA student) a
p1

a
11
a
12
a
1n1

a
p1
a
p2
a
pnp

. . .
. . .
Tabele de indeci
Fiier: Volum:
Cilindru:
82
121
12
31
82
3
7
12
16
25
31
1
2
- 77 -





















Prin cutare binar se ajunge n mod direct la pagina ce conine articolul cutat. n cadrul paginii
cutarea se face secvenial. Deci din cel mult trei accese la disc se obine articolul cutat( n
figur sunt numerotate accesele la disc i informaiile invocate pentru a obine articolul cu cheia
21). Dac fiierul este monovolum, nivelul trei al tabelei nu mai este necesar, iar dac fiierul
ocup cel mult un cilindru, nu mai este necesar nici nivelul doi.
Apar n acest caz dou dezavantaje. Primul se refer la necesitatea reorganizrii
frecvente; pentru a se elimina acest neajuns au aprut fiierele ce utilizeaz structurile de B-
arbori. Al doilea dezavantaj este legat de necesitatea de a efectua mai multe accese la disc pentru
un articol; pentru a elimina acest dezavantaj au aprut fiierele selective.
Actualizarea unui fiier secvenial-indexat se face n acces direct. Dac de exemplu se
dorete inserarea unui articol avnd valoarea indexului 20 se observ ca locul lui ar fi n pagina
cu indecii 17,19,21 i 25( aceast pagin se numete parte principal). Dar pentru aceasta ar
trebui reorganizat tabela de indeci i ar trebui ca toate articolele cu index mai mare ca 20 s fie
deplasate i aceast soluie nu convine. Soluia este de a lega articolele ntre ele printr-o list
simplu nlnuit i memorarea articolului de inserat ntr-o zon numit parte de depire. n
exemplul prezentat, articolul cu indexul 19 are un pointer spre partea de depire spre articolul cu
index 20, iar acesta are pointer spre partea principal spre articolul cu indexul 21. Dac se fac
multe inserri ntre chei din partea principal, atunci lista leag multe articole n partea de
depire, iar randamentul accesului la disc scade. n cazul tergerii, fie rmne un loc nefolosit n
partea principal, fie trebuie reorganizat o list n partea de depire, deci trebuie fcut frecvent
reorganizarea fiierului ceea ce scade randamentul global al fiierului.
Fiiere selective. Aceste fiiere sunt o replic a celor secvenial-indexate n urmtorul
sens: n timp ce fiierele secvenial-indexate au funcia de regsire materializat n tabele de
indeci, cele selective materializeaz funcia de regsire printr-un calcul efectuat de ctre CPU,
eliminndu-se astfel accesele la disc pentru cutare n tabele. Definirea funciei de regsire este
ns puternic dependent de datele din fiier. Organizarea selectiv este folosit tot pentru accesul
direct prin coninut. n acest caz se presupune c datele ce se vor nregistra permit existena unui
index. Se poate defini o funcie f valori posibile index n :{ _ _ } { , ,..., } 01 1 numit funcie
de randomizare sau funcie hash i care este definit de ctre utilizator. Numrul n reprezint
- 78 -
numrul claselor n care se mpart articolele fiierului, iar articolele pentru care se obine aceeai
valoare a funciei de randomizare se spune c sunt articole sinonime( numrul de articole
sinonime este bine s fie apropiat de numrul de articole ce ncap ntr-un bloc de informaie).
Scrierea ntr-un fiier selectiv se face astfel: se aplic funcia de randomizare valorii
indexului i se obine clasa din care face parte articolul. Partea principal a fiierului este format
din cte o pagin pentru fiecare clas. Dac pagina nu este plin atunci se depune articolul n
pagina respectiv, iar dac este plin se pune n partea de depire i se leag printr-o list
nlnuit cu ultimul articol sinonom cu el din partea principal. La citire, utilizatorul furnizeaz
indexul articolului, iar SGF determin clasa din care acesta face parte i n cadrul clasei cutarea
se face secvenial.
Dezavantajul acestui tip de organizare este c pot exista clase foarte aglomerate i deci cu
zone de depire mari, acest lucru depinznd de datele din fiier.
Fiiere organizate folosind B-arbori. Aceast tehnic este foarte utilizat i are multe
variante. Folosirea ei se datoreaz faptului c de obicei tabelele de indeci sunt prea mari pentru a
ncpea n memoria intern, iar tehnica ce folosete B-arbori reduce numrul de accese la disc.
B-arbore regular. Organizarea unui astfel de B-arbore este urmtoarea: fiecare nod este
prevzut cu m locuri n care pot fi memorate m chei( aceste chei sunt valorile ale unui index al
fiierului). n fiecare nod pot fi maximum m chei i minimum m/2 chei care apar n ordine
cresctoare. Odat cu cheile se memoreaz i adresele corespunztoare din fiierul de baz.
naintea primei chei, dup ultima cheie i ntre dou chei din nod se afl pointeri spre noduri
subordonate, primul pointer indicnd subarborele n care se afl toate cheile mai mici dect prima
cheie, ultimul pointer indicnd subaborele n care se afl toate cheile mai mari dect ultima cheie
din nod, iar pointerul dintre dou chei indicnd subarborele ce conine toate cheile cu valori
cuprinse ntre cele dou chei din nod.
Un exemplu de arbore cu m=2 este urmtorul:

















Cutarea ntr-un B-arbore este o cutare binar obinuit: se depisteaz ntr-un nod al
arborelui fie cheia cutat fie subarborele n acre ar trebui s se afle.
Inserarea se face astfel nct arborele s rmn echilibrat( pe toate ramurile exist
acelai numr de nivele). Dac un nod este prea plin( ar trebui s conin m+1 chei), B-arborele
se autoconfigureaz: se ncearc o migrare de chei ntre dou noduri vecine trecnd prin printele
lor pentru a ncrca aproximativ doi vecini. n ultim instan un nod prea plin se desparte n dou
noduri cel puin jumtate pline.
tergerea pstreaz calitatea de B-arbore: cnd un nod este prea gol( are numai m/2-1
chei) se ncearc o migrare de chei ntre dou noduri vecine; din doi vecini, unul jumtate plin, iar
30 65
15 21
41

78
2 7 16 20 22 29 35 37 42 50 67 77 80 91
2 2 2 2
2 2
2
8
5
5
20
- 79 -
altul mai puin de jumtate plin, se formeaz un singur nod. n figura urmtoare este reprezentat
arborele exemplificat, dac s-a inserat cheia cu valoarea 36, dup care s-a ters cheia cu valoarea
65:


















Dezvoltarea unui B-arbore se face mai mult n lime dect n nlime. Dac un B-arbore
conine N chei, atunci numrul maxim de nivele este 1
1
2
2
+
+
log ( ).
[ / ] m
N
Aceast calitate
asigur un numr minim de accese la disc pentru gsirea unei chei. Un fiier organizat ca B-
arbore este superior unuia secvenial-indexat din urmtoarele motive:
- cheile pot fi furnizate n orice ordine, nu neaprat cresctoare
- dispare zona de depire
- cutarea se face strict n acces direct, eliminndu-se cutarea secvenial n cadrul unei
pagini.
Un dezavantaj important al acestei organizri este c nu permite accesul secvenial n
ordinea cresctoare a cheilor. Pentru a nltura acest neajuns au aprut variante ce permit i
accesul secvenial, unul dintre acestea fiind B
+
-arborele.
Principala deosebire dintre B-arbore i B
+
-arbore este aceea c ultimul conine chei i
pointeri la fiierul de baz numei n nodurile terminale ale arborelui, nodurile interioare-
organizate ca B-arbore - au doar rolul de a indic nodul terminal ce conine cheia cutat;
nodurile terminale sunt legate ntre ele printr-o list nlnuit, permindu-se accesul secvenial.

2.3.5. Aciunile SGF la nivel de suport disc

La acest nivel SGF are trei sarcini principale: implementarea unui sistem adecvat de
regsire a fiierelor aflate pe volumul de disc respectiv, inerea evidenei spaiului neutilizat pe
disc i punerea la dispoziia componentelor de creare sau extindere fiiere a acestui spaiu
disponibil.
Sisteme de cataloage( directori). Fiecare volum disc trebuie s conin o tabel cu
fiierele existenete pe disc i cu informaiile necesare accesului la aceste fiiere; o astfel de tabel
se numete catalog sau director. Fiecare intrare a unui director conine un descriptor de fiier.
Operaii asupra directorilor. n esen, asupra directorilor se fac urmtoarele operaii:
30 65
15 21
36

78
2 7 16
20 22 29 35 42 50 77 80 91
2 2 2
1
2
8
6
4
20
37
1
1

2
36 65
41
- 80 -
Cutare: o structur de directori conine cte o intrare pentru fiecare fiier, n care se afl
descriptorul de fiier sau pointer la el. Operaia trebuie s permit identificarea unui fiier sau a
unui grup de fiiere.
Inserare: la crearea unui nou fiier n sistemul de directori se va introduce o nou intrare
ce conine descriptorul fiierului respectiv.
tergere: la tergerea unui fiier se terg din directori informaiile referitoare la fiierul
respectiv.
Listarea unui director: fiecare SO dispune de programe ce afieaz coninutul directorilor
i valorile din directori pentru fiecare fiier n parte( comanda DIR sau ls sub UNIX).
Salvare- restaurare: operaia de salvare, de obicei pe band a coninutului unui disc se
face pentru a preveni accidentele sau pentru a permite altor fiiere s ocupe spaiul; odat cu
salvarea fiierelor se salveaz i directorii, iar la restaurare sunt efectuate operaiile inverse.
n ceea ce privete structura logic a unui sistem de directori, exist patru tipuri de
structuri:
- directori cu un singur nivel
- directori cu dou nivele
- directori cu structur de arbore
- directori cu structur de graf aciclic.
Directori cu un singur nivel. Aceasta este cea mai simpl structur de directori: toate
fiierele de pe disc sunt repertorizate n acelai director. n acest caz exist o serie de restricii
asupra numelor fiierelor i a numrului lor. SO ce folosete acest tip de structur de directoare
este SO CP/M; el conine pe pista 2 a fiecrei dischete tabela de fiiere.
Directori cu dou nivele. O astfel de organizare elimin neajunsul unicitii numelui de
fiier( care apare n cazul precedent). n acest caz exist la nivelul superior directorul Master(
MFD- Master File Directory) i acesta conine cte o intrare pentru fiecare utilizator al sistemului,
intrare care puncteaz spre un director utilizator( UFD- User File Directory). Din fiecare UFD se
puncteaz spre fiierele utilizatorului respectiv. SO ce utilizeaz acest tip de structur este SO
RSX. O astfel de structur este prezentat n figura urmtoare:












Directori cu structur de arbore. SO cel mai cunoscut ce utilizeaz acest tip de
structur este UNIX. De asemenea, SO MS_DOS utilizeaz ncepnd cu versiunea 2 astfel de
directori. Pentru o prezentare unitar, se va studia sistemul de fiiere UNIX. Sub UNIX exist trei
tipuri de fiiere: obinuite, speciale i directori.
Fiierele obinuite sunt privite ca iruri de octei, accesul la un octet putndu-se face fie
secvenial, fie direct prin numrul de ordine al octetului.
Fiierele speciale. UNIX vede fiecare dispozitiv de I/O ca i un fiier de tip special. Din
punctul de vedere al utilizatorului nu exist nici o deosebire ntre lucrul cu un fiier disc normal i
lucrul cu un fiier special. Avantajele pe care le are similitudinea dintre fiiere i dispozitive sunt:
- simplitatea i elegana comenzilor
- numele unui dispozitiv poate fi transmis ca argument n locul unuia de fiier
MFD
UFD 1
UFD 2
UFD 3 UFD 4
UFD
1:
UFD 2: UFD
4:
A:
TEST
:

DATA:
B: A:
DATA:
X:
A TES
T
DAT
A
B:
DATA: A: X:
- 81 -
- fiierele speciale au acelai mecanism de protecie ca i celelalte fiiere.
Fiierele director se deosebesc de cele obinuite prin informaia coninut n ele. Un
fiier director conine lista de nume i adrese pentru fiierele subordonate lui. Uzual fiecare
utilizator are un director propriu care puncteaz la fiierele lui obinuite sau la ali subdirectori
definii de el. O intrare ntr-un director are forma:
Numele fiierului subordonat Descriptorul fiierului( pointer spre el)
n plus, fiecare director mai are dou intrri speciale:
- . care puncteaz spre directorul respectiv
- .. care puncteaz spre directorul printe.
Fiecare volum de disc conine un director principal numit ROOT( director rdcin). Un exemplu
de astfel de structur este urmtoarea( cercurile reprezint fiiere, iar dreptunghiurile directori):

















Fiecare utilizator folosete un director curent, ataat utilizatorului la intrarea n sistem. Cu
ajutorul unor programe utilitare, utilizatorul poate s-i schimbe directorul curent(cd), unele
drepturi de acces( chmod), s-i creeze un nou director( mkdir), s tearg un director( rmdir), s
afieze calea de acces la un director sau fiier etc. Specificarea de ctre utilizator a unei ci se
face astfel: [/] director
1
/director
2
/.../director
n
/nume. Dac este prezent primul / atunci
specificarea cii ncepe din rdcin, altfel din directorul curent.
La SO MS_DOS, sistemul de directori este aproape identic doar c n specificarea cii se
folosete \ n loc de /.
Directori cu structur de graf aciclic. Acest tip de structur nltur restricia de la
structura de arbore ca un fiier sau director s poat fi accesibil dintr-un singur printe. n
anumite situaii este util partajarea unei structuri de fiiere ntre mai muli utilizatori. SO UNIX
permite o astfel de partajare, dar numai pentru fiierele obinuite. De exemplu, n figura
anterioar, dac se adaug legtura punctat, atunci fiierul G poate fi partajat i cile de
recunoatere a lui sunt /A/G i /B/D/G.
Evidena spaiului liber disc. n cele mai multe cazuri se pstreaz multe fiiere pe
acelai disc. Problema care se pune este de a aloca spaiul pentru fiiere astfel nct spaiul pe disc
s fie utilizat ct mai eficient, iar informaiile din fiiere s poat fi introduse/obinute rapid.
Pentru a exemplifica metodele de eviden a spaiului liber i pe cele de alocare, se va considera
un disc ce dispune de 32 blocuri( nelegem prin bloc unitatea de alocare a spaiului disc),
numerotate 1,2, ..., 31. n figura urmtoare este dat structura unui astfel de disc cu directorul
memorat n blocul 0 i care conine 5 fiiere.


ROOT:
A:
A B C . ..
D
D E F . ..
G . ..
. ..
F:
E:
C:
G
:
D
:
G
00

04

08

01 02

05 06

09 10
03

07

11

DIRECTOR:
Fiier nceput Lungime
A

B
02

14
02

03
- 82 -


















Dintre metodele de eviden a spaiului liber cele mai cunoscute sunt cele bazate pe
fiiere inverse i cele bazate pe liste nlnuite.
a) Evidena spaiului prin fiier invers. n directorul volumului exist o zon rezervat
pentru ocuparea volumului, zona TOV. n TOV este alocat cte un bit pentru fiecare bloc de pe
disc. Dac blocul este liber atunci bitul este zero, dac este ocupat bitul este 1. Pentru discul din
figura anterioar TOV este 1011 0011 0000 0011 1001 1111 1000 1111
La alocarea unui fiier se caut i se ocup attea blocuri cte sunt necesare fiierului, dup care
biii corespunztori primesc valoarea 1. La tergerea fiierului biii corespunztori se pun pe zero.
b) Evidena prin list nlnuit. n directorul volumului exist un pointer ctre primul
sector liber, acest sector conine un pointer la urmtorul sector liber .a.m.d. Ultimul sector are
pointer de valoarea zero. Ordinea apariiei blocurilor libere n list este dat de cererea i
eliberarea blocurilor pn la momentul respectiv. Astfel, dac se cere ocuparea a p blocuri, se vor
ocupa primele p poziii din list, dup care blocul al p+1- lea din list va fi primul bloc liber.
Aceast schem nu este foarte eficient pentru c pentru ocuparea unor sectoare este necesar un
consum mare de timp pentru operaiile I/O care caut spaiu liber.
c) Evidena nlnuit i indexat. Pentru a descrie aceast metod s presupunem c ntr-
un bloc pot fi nregistrate n adrese de blocuri disc. n primul bloc liber, indicat din director, se
memoreaz adresele a n blocuri libere. Primele n-1 sunt adrese de sectoare efectiv libere, iar
ultima adres puncteaz la un alt bloc liber care conine i el adresele a n blocuri libere .a.m.d. n
acest mod numrul operaiilor I/O necesare pntru cutarea de spaiu liber se micoreaz n medie
cu n-1 ori. Procedurile de ocupare i eliberare de blocuri vor fi mai complicate, dar acest neajuns
este compensat prin reducerea numrului de accese la disc. De aici pn la evidena spaiului liber
printr-o structur arborescent nu este dect un pas.
Alocarea spaiului pentru fiiere disc. Cele mai cunoscute metode de alocare a spaiului
pentru fiiere sunt: alocarea contigu, alocarea nlnuit i alocarea indexat.
a) Alocarea contigu cere ca fiecare fiier s ocupe un set de adrese consecutive pe disc.
n descriptorul de fiier din director se depune adresa de nceput i lungimea zonei alocate.
Exemplul prezentat ilustreaz acest tip de alocare pentru cele 5 fiiere. Problema principal care
apare este fragmentarea; se efectueaz compactarea n aceleai condiii ca cele ntlnite la
gestiunea memoriei. Acest tip de alocare se folosete la SO SIRIS i parial la RSX.
b) Alocarea nlnuit se folosete pentru a elimina fragmentarea. n acest caz, fiecare
fiier este nregistrat ntr-un ir de blocuri legate ntre ele printr-o list nlnuit. n figura
- 83 -
urmtoare ordinea blocurilor pentru fiierul F este 9, 16, 1, 10, 25. Alturat adresei blocului este
ncadrat pointerul la blocul urmtor.




















Principalul dezavantaj al metodei este c permite doar acces secvenial la fiiere. Acest mod de
alocare se utilizeaz la fiierele secvenial-nlnuite sub SO SIRIS.
c) Alocarea indexat. Acest mod de alocare nltur dezavantajul accesului secvenial de
la alocarea nlnuit. Pe lng blocurile ataate fiierului, la crearea fiierului se creeaz un bloc
special, bloc de index n care se trec n ordine adresele tuturor sectoarelor ocupate de fiierul
respectiv. n figura de mai jos este ilustrat acest mod de alocare pentru fiierul F.





















n descriptorul fiierului exist un pointer ctre blocul de index. Dac fiierul este mare i
ocup mai multe adrese dect ncap ntr-un bloc, atunci se creeaz mai multe blocuri de index
00

04

08

12

16

20

24

28
01 02

05 06

09 10

13 14

17 18

21 22

25 26

29 30
03

07

11

15

19

23

27

31
DIRECT OR:
Fiier Index Nr.blocuri
F 19

5
09
16
01
10
25
-1
19
00

04

08

12

16
01
20

24

28
01 10 02

05 06
25
09 16 10

13 14

17 18

21 22

25 -1 26

29 30
03

07

11

15

19

23

27

31
DIRECT OR:
Fiier nceput Sfrit
F 9

25
- 84 -
legate ntr-o list nlnuit. Aceast metod este aplicat la SO CP/M, RSX i UNIX. UNIX
ofer o schem de alocare indexat pe trei nivele, deosebit de eficient.


2.3.6. Particulariti SGF ale unor SO particulare

n cele ce urmeaz se vor studia sistemele de fiiere ale SO UNIX, MS_DOS. Se va trata
mai nti relaia cu utilizatorul( specificri de fiiere...) i apoi se va prezenta structura intern de
reprezentare a fiierelor pe discuri.

Sistemul de fiiere UNIX. n legtur cu SGF sub UNIX se vor avea n vedere
urmtoarele:
A- convenii privind specificarea unui nume de fiier
B- structura arborescent de fiiere i extensiile ei
C- structura intern a discului.
A. Specificarea unui fiier UNIX. Un fiier UNIX este specificat printr-un ir de 14
caractere ASCII cu anumite restricii impuse de componenta shell. Printre caracterele interzise n
nume de fiier sunt i caracterele > < & [ ] * ? - ! /. UNIX face distincie
ntre literele mari i mici, iar acaracterul . poate s apar n numele de fiier.
Anumite componente ale SO UNIX impun convenii n specificarea numelor de fiire. O
prim categorie de convenii este legat de textele surs scrise n diverse limbaje de programare.
Aceste nume se ncheie cu un punct urmat de o liter astfel:
.c indic text surs C
.f indic text surs FORTRAN
.p indic text surs Pascal
.s indic text surs n limbaj de asamblare
.l indic text surs lex
.y indic text surs yacc
.e indic text surs efl
.r indic text surs ratfor
.o indic cod obiect generat de un compilator oarecare.
Un alt set de convenii este impus de ctre componenta SCCS( Source Code Control System) i
cer ca numele de fiier s nceap cu o liter urmat de un punct( de exemplu fiiere ce ncep cu
p., g., x., y. etc)
n legtur cu specificarea generic a unei familii de fiiere, semnificaia caracterelor -
i ? rmne cea cunoscut. n plus este permis specificarea printr-un grup de caractere sub
forma [sir] sau [!sir]. De exemplu, printr-o construcie de forma A[klm]B se specific fiiere
cu nume din trei litere, prima este A ultima este B, iar cea din mijloc poate fi oricare dintre k, l,
m. Prin construcia A[klm]B se specific fiierele al cror nume ncepe cu A se termin cu B, iar
a treia liter nu este k, l, m. Construcia s-d indic toate caracterele dintre s i d.; construcia [A-
D] indic primele 4 litere mari ale alfabetului.
B. Structura de arbore i extensii. Fiecare disc UNIX are un director principal numit
ROOT( rdcin). Din orice director pot descinde alte directoare i fiiere obinuite. Specificarea
de ctre utilizatori a unei ci spre un fiiere se face astfel:
[ / ]director
1
/director
2
/.../director
n
/nume
Dac primul caracter / este prezent atunci se specific calea ncepnd din rdcin, altfel din
directorul curent.
Structura de fiiere UNIX are nceputul ntr-o form standard:



dev- fisiere speciale pentru periferice: consola, imprimanta, discuri etc.
bin- programe executabile: compilatoare, asambloare, etc.
lib- biblioteci utilitare si subprograme ale sistemului
etc- date restrictive si periculoase din sistem: fisiere de parole,
utilitare de formatare etc.
tmp- fisiere de manevra folosite de catre utilitarele sistem
usr


bin- programe utilitare altele dect /bin
root
- 85 -





















n momentul intrrii n sistem, fiecare utilizator indic directorul lui, care este fixat ca
director curent (home directory). n mod normal fiecare utilizator i dezvolt propria structur
arborescent n directorul propriu. Exist cel puin trei excepii:
a) se dorete utilizarea unei structuri arborescente de ctre mai muli utilizatori. n acest
caz utilizatorul d o comand de schimbare a directorului curent; este bine ca administratorul
sistemului s aib cunotin de acest fapt pentru fixarea corespunztoare a parolelor i a
drepturilor de acces.
b) se dorete utilizarea n comun a unui fiier obinuit ce are n structur mai muli
directori printe. Partajarea este permis pentru fiiere, dar nu i pentru directori. Cile de
recunoatere a fiierului se specific dup cum s-a prezentat n 2.3.5. La legarea multipl apare
urmtoarea problem: ce se ntmpl dac un utilizator vrea s terg fiierul? Acest fiier trebuie
s rmn activ dac e ters numai de ctre unul dintre utilizatori. Pentru aceasta n descriptorul
de fiier exist un cmp numit contor de legare care are valoarea 1 la crearea fiierului i a crui
valoare crete cu 1 la fiecare nou legtur. La tergere se radiaz legtura cu printele ce a cerut
tergerea i contorul scade cu 1. Dac contorul a ajuns la zero, fiierul se terge de pe disc.
c) se dorete legarea la un anumit subdirector a unui sistem de directori aflat pe un alt
periferic. n specificarea fiierelor nu apare zona de periferic. Acest lucru se datoreaz faptului c
sub UNIX se folosesc operaiile de montare i demontare a unui sistem de fiiere. Operaia de
montare const n conectarea unui sistem de fiiere de pe un anumit disc la un director vid
existent pe sistemul de fiiere de pe discul implicit. Pentru montare se d o comand privilegiat
UNIX. De exemplu, prin comanda
#/etc/mount /dev/fd3 /b
se indic legarea discului al criu fiier special( driver) poart numele fd3( i care se refer la
discul nr. 3) la directorul vid /b.
La ncrcarea SO UNIX se face automat o operaei de montare. Pe discul sistem directorul root
are subdirectorul usr vid. Coninutul complet al directorului usr se racordeaz la root printr-o
operaie de montare. Operaia de montare se face i la utilizarea SO UNIX n reea.
C. Structura intern a discului UNIX. Un fiier UNIX este o colecie de octei, fiecare
octet putnd fi adresat individual. Un sistem de fiiere UNIX este o structur de date rezident pe
disc. Un disc este compus din patru categorii de blocuri.
- 86 -













Blocul 0 conine programul de ncrcare al SO, dependent de maina pe care se lucreaz.
Blocul 1 conine o serie de informaii prin care se definete sistemul de fiiere de pe disc,
printre care
- numrul n de inoduri
- numrul de zone definite pe disc
- pointeri spre harta de bii a alocrii inodurilor
- pointeri spre harta de bii a spaiului liber disc
- dimensiunile zonelor disc etc.
De asemenea, acest bloc conine i evidena spaiului liber de pe disc prin metoda fiierului
invers.
Blocurile de la 2 la n, unde n este o constant a formatrii discului, conin inoduri. Un
inod( sau i-nod) este numele UNIX a descriptorului unui fiier, conine 64 octei, iar inodurile
sunt memorate pe disc sub forma unei liste( numit i-list). Numrul de ordine al unui i-nod n
cadrul i-listei se reprezint pe 2 octei, se numete i-numr i constituie legtura dintre fiier i
programele utilizator.
Partea cea mai mare a discului este rezervat zonei fiierelor. Alocarea spaiului pentru
fiiere se face printr-o variant de indexare. Informaiile de plecare pentru alocare sunt fixate n i-
noduri.
Structura intrrii ntr-un fiier director este urmtoarea:






n director se gsete de fapt inodul corespunztor. Un inod conine( printre altele) informaiile:
- identificarea proprietarului fiierului
- identificarea grupului de utilizatori
- biii de protecie
- lungimea fiierului
- data crerii i a ultimei actualizri
- numrul de legturi la fiiere
- indicarea faptului c fiierul este un director
- pointerii spre blocurile ataate fiierului.
Structura pointerilor spre blocurile ataate fiierului este prezentat n figura urmtoare:



Blocul 0 - bloc de boot
Blocul 1 - Superbloc
Blocul 2 - inod
Blocul n - inod
Blocul n+1 zona fiier
Blocul n+m zona fiier
Numele fisierului Inumar
0 13 14 15
Inod: Identificare
Regasire
directa
Indirectare
simpl
0 1 2 3 4 5 6 7 8 9 A B C
- 87 -


























n inodul fiierului se afl i o list cu 13 intrri care desemneaz blocurile fizice
aparinnd fiierului. Primele 10 intrri conin adresele primelor 10 blocuri de cte 512 octei ale
fiierului. Intrarea 11 conine adresa unui bloc numit bloc de indirectare simpl care conine
adresele urmtoarelor 128 blocuri a cte 512 octei ale fiierului. Intrarea 12 conine adresa
blocului de indirectare dubl care conine adresele a 128 blocuri de tip indirectare simpl, iar
intrarea 13 conine adresele a 128 blocuri de indirectare dubl.
Numrul de accese necesare pentru a obine direct un octet oarecare este cel mult 4.
Pentru fiiere mici acest numr este mai mic. n tabelul urmtor este dat numrul maxim de
accese la disc pentru a obine un octet, n funcie de lungimea fiierului:

Lungime maxim
n blocuri
Lungime maxim n
octei
Accese indirecte Accese la
bloc de
informaie
Total
accese
10 5120 - 1 1
10+128= 138 70656 1 1 2
10 128 128
16522
2
+ + =
=


8459264

2

1

3
10 128 128
128 2113674
2
3
+ + +
+ =


1082201088

3

1

4

D. Mecanismul de acces la fiier. nainte ca un fiier s fie accesat el trebuie s fie
deschis. Ca efect al deschiderii este actualizat structura de date urmtoare din figura urmtoare.
Astfel, inumrul fiierului deschis este trecut, dac nu exist deja, n tabela de inoduri active din
- 88 -
sistem. Sistemul ntreine n paralel o tabel de fiiere a sistemului ce conine descriptorii tuturor
fiierelor active din sistem.
Fiecare proces conine cte un pointer spre aceast tabel pentru fiecare fiier pe care l
are deschis. Se tie c un proces fiu motenete toate fiierele deschise de printe. Aceast
folosire comun se realizeaz prin pointerul comun spre tabela de fiiere a sistemului.













Fiecare proces








Fiiere MS_DOS. Dat fiind popularitatea acestui SO se va studia mai detaliat sistemul
su de fiiere. Se vor avea n vedere:
A. Organizarea i specificare fiierelor MS_DOS.
B. Structura intern a unui disc DOS.
C. Partiionarea unui hard disc n discuri logice.
D. Structura i alocarea spaiului la un disc logic.
E. Structura i reprezentarea unui director.
F. Manipularea fiierelor i articolelor.
A. Organizarea i specificarea fiierelor MS_DOS. ncepnd cu versiunea 2.0, SO
MS_DOS adopt un sistem de fiiere organizat arborescent( acest mod de organizare a fost
descris n paragraful 2.3.5). Specificarea numelui unui fiier se ncadreaz n specificarea din
paragraful 2.3.1. din care lipsete zona de versiune.
n forma cea mai simpl, un fiier obinuit, ca I un fiier director, se specific la fel ca i
sub CP/M, adic: nume.tip
unde nume are maximum 8 caractere, iar tip are maximum 3 caractere; numele I tipul pot conine
orice caractere cu excepia caracterelor / \ [ ] : < > + = ; ,
Fiierele speciale MS_DOS au nume predefinite, iar aceste nume nu pot fi folosite ca i
nume de fiiere. Numele rezervate sunt:
- CON desemneaz tastatura, dac este folosit ca fiier de intrare, respectiv ecranul dac
este folosit ca fiier de ieire.
- PRN( cu sinonimul LPT1), LPT2, LPT3 desemneaz ntre una i trei imprimante
paralele.
- AUX( cu sinonimul COM1), COM2, COM3 I COM4 desemneaz ntre unul i patru
adaptoare de comunicaii asincrone.
Proces a
Proces b
Proces c
Procese
Tabela de
fiiere a
sistemului
Tabela de
inoduri
Fiiere
Descriptori de
fiiere deschise
- 89 -
- NUL este numele unui fiier( echipament) fictiv; folosit pe post de fiier de intrare
genereaz imediat pentru SGF marcajul de sfrit de fiier, iar folosit pe post de fiier de ieire,
informaiile scrise n el nu sunt de fapt depuse nicieri.
Aceste nume pot( dar nu este obligatoriu) s fie urmate de : .
n forma cea mai general, un fiier pe suport disc( dischet, hard sau ramdrive, adic
simularea unui disc n memoria RAM) se specific prin cele patru zone, adic:
[periferic][cale]nume[.tip]
unde
periferic se va specifica printr-o liter urmat de :. DOS poate avea maximum 26 de
periferice de tip disc, notate cu literele alfabetului, ncepnd cu A; n mod obligatoriu literele A:
I B: desemneaz dischete; primul hard disc va fi notat cu C:, apoi pot urma I alte periferice de
tip disc. Dac lipsete specificarea de periferic se presupune c este vorba despre perifericul
implicit.
cale indic succesiunea de directori de la rdcin pn la fiier( dac ncepe cu \) sau
de la directorul curect pn la fiier. Separarea directorilor se face prin simbolul \. Dac
specificarea de cale lipsete se presupune c fiierul se gsete n directorul curent. SO MS_DOS
reine cte un director curent pentru fiecare periferic disc din sistem.
tip se folosete n general pentru a indica coninutul fiierului i poate lipsi.
Unele comenzi DOS accept specificarea generic de fiiere prin folosirea n zona de
nume, de tip sau n ambele a simbolurilor speciale - sau ?( dup cum s-a descris n capitolele
anterioare).
B. Structura intern a unui disc MS_DOS. n sistemul MS_DOS unitatea de alocare a
spaiului pe disc este clusterul. Un cluster este o succesiune de 1 pn la 8 sectoare vecine,
alocate mpreun aceluiai fiier. Dimensiunea unui cluster este o constant care depinde de tipul
discului i de tipul SC, de exemplu:
- dischet simpl fa: 1 sector/ cluster
- dischet dubl fa: 2 sectoare/ cluster
- hard disc pe IBM PC/AT: 4 sectoare/ cluster
- hard disc pe IBM PC/XT: 8 sectoare/ cluster.
Pentru a descrie modul n care un fiier utilizeaz clusterii unui disc fizic, este necesar
parcurgerea mai multor etape( n maniera top-down):
1. partiionarea unui disc n discuri logice
2. structura i alocarea spaiului la un disc logic
3. structura i reprezentarea unui director
4. manipularea fiierelor i articolelor.
C. Partiionarea unui hard disc. Spaiul unui hard disc poate fi mprit n cel mult
patru zone contigue numite partiii. O partiie conine un numr oarecare de cilindri consecutivi.
SO MS_DOS privete de la versiunea 3.30 fiecare partiie ca pe un disc separat. Dou partiii ale
aceluiai disc pot conine sisteme de operare diferite. Operaia de partiionare se realizeaz cu
ajutorul unui program specializat numit FDISK. Exist i alte programe ce realizeaz printre
altele partiionarea unui hard disc, dintre acestea amintim mediul de ntreinere a discului numit
DM( Disk Manager). Prin operaia de partiionare se pierd toate informaiile de pe discul
respectiv, deci nainte de partiionare trebuie salvate informaiile utile. Operaia de partiionare a
unui hard disc este bine s fie fcut numai de persoane ce au cunotine serioase despre sisteme
de operare.
Se va prezenta n continuare modul de implementare a mecanismului de partiionare.
Primul sector al hard discului( sectorul 1 de pe faa 0 a cilindrului 0) se numete sectorul de
ncrcare absolut sau sectorul MBR( Master Boot Record). El conine un program de tip
bootstrap i o tabel de descriere a partiionrii.
Structura acestui sector este urmtoarea:


000:


1BE:

Programul bootstrap de partitionare
descriere partitia 1
descriere partitia 2
- 90 -














O intrare pentru descrierea unei partiii are structura urmtoare:




unde
B este octetul de indicare a partiiei active; valoarea 80 indic o partiie activa, iar
valoarea 00 indic o partiie inactiv. n orice moment pe disc trebuie s existe o singur partiie
activ.
Hi i S+Ci indic adresa fizic de nceput a partiiei. Se indic numrul feei pe primul
octet, iar pe urmtorii doi, numrul sectorului i al cilindrului de nceput.
Hf i S+Cf indic, analog cu cele de mai sus, adresa fizic de sfrit a partiiei.
Sectreli I Sectrelf indic numrul sectorului de nceput, respectiv al sectorului de sfrit
a partiiei. Pe hard disc sectoarele fizice sunt numerotate ncepnd cu 1. Formula de calcul pentru
numrul relativ al sectorului este:
Nrelsect= ( nrcilindru- sectpecil- cap)+ ( nrcap- sectpecil)+ ( nrsector-1).
Sy indic tipul sistemului i poate lua valorile:
1 partiie DOS cu FAT pe 12 bii
4 partiie DOS cu FAT pe 16 bii
5 partiie DOS extins
0 tip de partiie nedefinit( pentru DOS).
ncrcarea unui SO aflat ntr-o partiie activ se face n felul urmtor: n momentul
iniializrii, BIOS ncarc n memorie sectorul MBR i d controlul programului bootstrap de
partiionare. Acesta citete tabela de partiii i o caut pe cea activ; avnd adresa fizic de
nceput a acesteia, citete primul sector al ei. n acest sector se afl programul bootstrap de
lansare a ncrcrii SO respectiv. De aici ncrcarea se face cum s-a descris deja.
Fiecare SO aflat pe hard disc dispune de un program similar lui FDISK. Prin intermediul
lui se poate dezactiva o partiie i activa alta; deci la o nou ncrcare poate intra n lucru alt SO.
D. Structura i alocarea spaiului la un disc logic. Un disc logic este fie o dischet, fie
o partiie de hard disc, fie un ramdrive. Un disc logic este mprit n patru zone: zona de boot,
tabela de alocare a fiierelor( FAT), directorul rdcin i zona celorlalte fiiere:






B Hi S+Ci Sy Hf S+Cf
Sectreli Sectrelf
00 01 02 04 05 06 08 0C 0F
- 91 -






Zona de boot conine informaii utilizate de fiecare dat cnd se ncarc sistemul de
operare i dependente de sistem. Structura zonei este urmtoarea:




















n tabela BPB se afl toate informaiile necesare structurrii discului. La adresa 0E se
trece dimensiunea zonei de dup sectorul Boot i pn la nceputul tabelei FAT; la adresa 1C,
numrul de sectoare ascunse reprezint numrul sectoarelor de pe discul fizic nainte de sectorul
Boot. La dischet numrul este 0, iar la hard disc este numrul sectoarelor din faa partiiei DOS
respective. La adresa 15 este un octet de descriere a discului( se precizeaz dac este dischet sau
hard disc, numr fee,...).
Tabela de alocare a fiierelor( FAT File Alocation Table) conine informaii de alocare a
spaiului pe disc pentru fiecare fiier. Sub DOS evidena spaiului liber se face prin metoda
fiierului invers, iar alocarea este de tip indexat. Tabela FAT conine attea intrri ci clusteri
exist pe disc, dac exist mai puin de 4097 clusteri atunci fiecare intrare ocup 12 bii, n caz
contrar 6 bii. Fiecare intrare n FAT poate avea una din urmtoarele valori( cifra din parantez
apare numai dac intrarea ocup 16 bii):
(0)000 dac clusterul respectiv e liber
(F)FF0 la (F)FF6 dac clusterul este rezervat de DOS
(F)FF7 dac clusterul este defect
(F)FF8 la (F)FFF dac este ultimul cluster al unui fiier
orice alt valoare indic faptul c clusterul este ocupat de un fiier, iar valoarea indic
numrul clusterului urmtor ocupat de acelai fiier( ocuparea se indic cu ajutorul unei liste
nlnuite).
Directorul rdcin are o lungime fix precizat la formatare. n mod implicit, numrul
de intrri pentru directorul rdcin este urmtorul:
64 pentru dischete simpl fa
112 pentru dischete dubl fa de 360- 720 Ko
Informatii de identificare, tabela BPB, rutina Bootstrap
Zona rezervata
Tabela FAT
Eventuale copii ale FAT
Directorul ROOT
Zona de fisiere
Rutina de Boot
numar de sectoare / pista
numar de fete ale discului
numar de sectoare ascunse
numar de octeti / sector
numar sectoare / cluster
lungimea zonei rezervate
numar de tabele FAT
numar de intrari n ROOT
total sectoare / volum
octet de descriere a discului
numar de sectoare / FAT
Instructiune de salt la rutina Boot
Nume SO si numarul de versiune
Tabela BPB

BIOS
Parameter
Bloc
00
03

0B
0D
0E
10
11
13
15
16

18
1A
1C

1E


- 92 -
224 pentru dischete high-density 1.2- 1.44 Mo
512 pentru hard disc.
n acest director trebuie s existe o intrare care s furnizeze eticheta de volum, iar dac
discul este disc sistem, primele dou intrri trebuie s conin descriptorii fiierelor sistem
IBMBIO.COM i IBMDOS.COM.
Zona fiierelor conine celelalte fiiere. Lungimea oricrui fiier este limitat de
capacitatea discului.
E. Structura i reprezentarea unui director. Un director conine cte o intrare pentru
fiecare fiier subordonat lui( subordonaii pot fi fiiere sau subdirectoare). Fiecare intrare ntr-un
director conine descriptorul fiierului subordonat. Un descriptor de fiier sub DOS ocup 32
octei i are structura:












Numele i tipul fiierului sunt reprezentate n cod ASCII. Primul octet din descriptor( care
coincide cu primul caracter al numelui) indic i faptul c fiierul este ters sau nu. Semnificaiile
posibile ale primului caracter sunt:
- codul 00 indic o intrare n director nc nefolosit
- codul E5 indic descriptorul unui fiier care a fost ters
- caracterul . indic descriptorul directorului curent sau al printelui
- orice alt caracter indic descriptorul unui fiier subordonat.
La crearea de noi fiiere se utilizeaz nti descriptorii de fiiere terse( n disciplina FIFO) dup
care se ocup noi intrri.
Atributele fiierului au fost prezentate n paragraful 2.3.3.
Ora crerii se reprezint pe 16 bii: biii 0-4 reprezint secundele numrate din doi n doi,
biii 5-A conin minutele, iar biii B-F conin ora.
Data crerii se reprezint pe 16 bii: 0-4 numrul zilei n lun, 5-8 numrul lunii n an, 9-
F diferena dintre anul curent i 1980.
Clusterul de start este capul listei nlnuite din FAT ce indic n ordine clusterii ocupai
de fiier.
Lungimea fiierului este exprimat n numr de octei( i se reprezint pe 4 octei).
F. Manipularea fiierelor i articolelor. SO DOS are multe elemente preluate de la
CP/M i UNIX, SGF DOS adopt n consecin dou moduri de gestiune a fiierelor:
Setul de funcii compatibile CP/M utilizeaz un FCB( File Control Bloc). Acesta se
creeaz n zona de memorie utilizator, are 37 octei cu o extindere special de nc 7. Mecanismul
FCB permite numai lucrul cu fiiere din directorul curent pentru c nu recunoate structura
arborescent.
Setul de funcii compatibile UNIX utilizeaz conceptul de handle( identificator, numr
logic). La deschiderea fiierului se transmite SGF specificarea complet a fiierului( se precizeaz
perifericul, calea, numele i tipul acestuia). Tabelul de legtur dintre fiier i program este
memorat ntr-o zon sistem. Utilizatorul primete dup deschidere un cod pe 16 bii numit handle.
Prin intermediul acestui cod se vor face n continuare toate referirile la fiier.

Numele fisierului
Tipul fisierului
Atributele fisierului
10 octeti rezervati
Ora crearii
Data crearii
Numarul clusterului de start
Lungimea fisierului( 4 octeti)



00
08
0B
0C
16
18
1A
1C
- 93 -
Ambele seturi de funcii permit efectuarea operaiilor de citire i scriere la nivel de
articol( bloc) n acces secvenial i direct. Primitivele oferite de limbajele de nivel nalt pentru
lucrul cu fiiere fac transparent pentru utilizator diferena dintre funciile FCB i cele handle.

- 94 -

2.4. SUBSISTEMUL DE PLANIFICARE AL SO

2.4.1. Probleme generale privind planificarea

Conceptul de planificare. Planificarea are n vedere utilizarea eficient a CPU i
asigurarea unui timp de rspuns rezonabil pentru toi utilizatorii. n sistemele cu
multiprogramare, planificarea( CPU Scheduling) este o component de baz a SO( prin
comutarea CPU ntre procese SC devine mai productiv). Exist trei nivele de planificare
n SO: - planificare pe termen lung;
- planificare pe termen mediu;
- planificare pe termen scurt.
Fiecare nivel de planificare acioneaz n funcie de strile procesului astfel:
Planificarea pe termen lung are drept sarcin alegerea lucrrii care urmeaz a fi
executat, alocarea resurselor necesare acesteia i crearea proceselor corespunztoare
pentru aceast lucrare. La terminarea lucrrii, planificatorul de lucrri elibereaz resursele
i distruge procesele aferente. La acest nivel planificarea acioneaz cu frecvena cea mai
mic( o schimbare intervine la cteva minute). Un astfel de planificator trebuie s separe
tipurile de joburi n funcie de solicitri: joburi cu multe I/O, dar cu timp CPU redus(
programe de gestiune), joburi cu I/O limitate, dar cu multe calcule( programe tehnico-
tiinifice, de simulare) etc. n acest caz planificatorul colaboreaz cu componenta
SPOOLING.
Planificarea pe termen mediu. n unele sisteme planificarea pe termen lung are rol
minim sau poate fi absent. De exemplu n sistemele time-sharing nu are sens o astfel de
planificare. La aceste sisteme precum i la cele cu memorie virtual se aplic tehnica
swapping, prin care procesele sunt trecute din starea RUN n starea SWAP i din SWAP
n READY. Prin aceste evacuri temporare scade gradul de multiprogramare, se
prelungete durata execuiei, n schimb se permite accesul simultan al mai multor
utilizatori n sistem. Planificatorul este cel care decide momentele n care se fac
evacurile i care procese se vor evacua sau readuce n memorie.
Planificarea pe termen scurt are n vedere trecerea alternativ a proceselor din
starea READY n starea RUN i invers. La acest nivel se ncadreaz activitatea
dispecerului de procesoare i aciunile SO i SC pentru planificarea accesului la discurile
magnetice.
Aciunea unui planificator trebuie privit sub dou aspecte: pe de o parte
regulile de aciune dup care se ghideaz pentru a-i realiza sarcinile, pe de alt parte
implementarea lui n contextul ntregului SO.
Fixarea sarcinilor unui planificator se face preciznd trei aspecte:
- modalitatea de intervenie
- funcia de prioritate
- regula de arbitraj.
Aceste reguli fiind stabilite planificatorul funcioneaz astfel: la anumite momente de
timp, stabilite de baza modalitii de intervenie evalueaz funcia de prioritate pentru
fiecare proces din sistem. Drept urmare, fiecare proces primete o prioritate de utilizare a
CPU. n cazul n care dou procese au aceeai prioritate, regula de arbitraj fixeaz care
dintre ele intr n starea RUN.
- 95 -
Modalitatea de intervenie stabilete momentele n care planificatorul intr n
aciune. Exist dou modaliti de intervenie:
- la momentele impuse de proces: planificatorul intr n lucru atunci cnd un
proces i termin activitatea sau cnd ateapt terminarea unei operaii de I/O. Acest tip
de planificare se folosete la lucrul n multiprogramare;
- la momentele impuse de ctre SO: n acest caz SO intervine indiferent de starea
proceselor pe care le planific. SO UNIX adopt un astfel de mecanism.
Funcia de prioritate are ca argumente procesele i parametrii sistemului.
Determinarea prioritii se face n funcie de urmtoarele criterii:
- cererea de memorie;
- atingerea unui timp de servire de ctre CPU;
- timpul real din sistem;
- timpul total de servire;
- valorile unor prioriti externe;
- necesarul de timp rmas pn la terminarea procesului etc.
Algoritmii de planificare trebuie s ndeplineasc dou caliti:
- s realizeze scopurile de performan pentru care au fost elaborai;
- s aib o durat foarte mic de execuie, pentru a nu crete n mod nejustificat
timpul de regie al SO.
Regula de arbitraj stabilete o ordine n caz de prioriti egale. De regul, se alege
una dintre urmtoarele variante posibile:
- servirea n ordine cronologic(FIFO);
- servirea circular;
- servirea aleatoare.
Implementarea planificatoarelor. Toate tipurile de planificatoare sunt
implementate prin intermediul semafoarelor i fac uz de facilitile oferite de gestiunea
memoriei. n funcie de tipul SO, planificatoarele dein module specializate de alocare i
eliberare a resurselor, prevenire, detectare i eventual ieire din impas.
Referitor la relaia dintre planificator i procesele pe care le planific, exist dou
posibiliti:
- planificator partajat atunci cnd fiecare dintre procese l apeleaz ca pe un
subprogram; n acest caz modalitatea de intervenie este dictat de ctre procese;






- planificator master atunci cnd acesta lanseaz i suspend procesele pe care le
planific; evident atunci c modalitatea de intervenie este fixat de ctre SO.






S S S
p1 p2
pn
. . .
. . . p1 p2 pn
- 96 -

2.4.2. Planificarea proceselor

Sarcinile planificatorului de procese. n funcie de nivelul la care lucreaz
planificatorul, SO trebuie s-i ofere toate informaiile de care are nevoie. n acest scop,
fiecare proces este reprezentat n sistem printr-un bloc de control al procesului prescurtat
PCB( Process Control Bloc).
Pe termen lung, planificatorul trebuie s gseasc n PCB urmtoarele informaii:
- identificare job;
- starea curent a jobului;
- prioritatea( prefixat la unele SO);
- timpul de lucru estimat pentru job;
- resursele necesare.
Pe baza acestor informaii planificatorul decide trecerea unui job din starea HOLD n
starea READY. Planificarea se face astfel nct s fie atins unul din obiectivele:
- minimizarea timpului mediu de rspuns;
- maximizarea factorului de utilizare a resurselor;
- asigurarea unei rate medii de servire a joburilor.
Pe termen scurt se decide trecerea din starea READY n starea RUN i invers.
Principalele sarcini de planificare sunt:
- ine evidena tuturor proceselor din sistem;
- decide la care proces i atribuie procesor i pentru ct timp;
- aloc procesului un procesor;
- elibereaz procesorul la ieirea procesului din starea RUN.
Pentru aceasta, n PCB trebuie s apar, printre altele, informaiile:
- starea procesului;
- pointer la urmtorul PCB n aceeai stare;
- numrul procesului( acordat de planificator);
- contorul de program( adresa instruciunii main ce urmeaz a fi executat);
- o zon pentru copia regitrilor generali ai mainii;
- limitele zonei( zonelor) de memorie alocate procesului;
- lista fiierelor deschise etc.
Toate PCB sunt memorate ntr-o zon de memorie proprie planificatorului de
procese,. Starea unui proces poate fi RUN, READY, WAIT sau SWAP. Procesele din
aceeai stare sunt nlnuite ntre ele.Deoarece toate procesele folosesc registrele generale
ale procesorului, este necesar ca la ieirea din starea RUN coninutul acestora s fie
salvat. La o nou intrare n RUN se reface coninutul registrelor generale. Iat cum arat
un schimb READY-RUN ntre dou procese A i B:








S
Proces A
Proces B
Planificator
Salveaz regitrii A
Actualizare PCB A
Actualizare PCB B
Refacere regitrii B
READY
RUN
READY
RUN
- 97 -



n sarcina planificatorului de procese



n sarcina planificatorului de procese st i organizarea cozilor la perifericele I/O.
n figura urmtoare este prezentat un ansamblu de cozi proprii planificatorului de
procese:
- 98 -



















Algoritmi de planificare. Optimizarea n ansamblu a criteriilor amintite este
practic imposibil; optimizarea unui criteriu provoac nrutirea rezultatelor altuia.
Algoritmii ncearc realizarea unui compromis ntre criterii. Cei mai utilizai algoritmi de
planificare sunt prezentai n continuare.
FCFS( First Come First Served) sau FIFO( First In First Out) primul venit-
primul servit. Lucrrile sunt servite n ordinea lor cronologic. Algoritmul este simplu,
dar nu prea eficient.
De exemplu, presupunem c exist 3 joburi cu urmtorii timpi de execuie:
- jobul 1 dureaz 24 minute;
- jobul 2 dureaz 3 minute;
- jobul 3 dureaz 3 minute.
Dac joburile sosesc la sistem n ordinea 1, 2, 3 atunci timpul mediu de servire este:

24 27 30
3
27
+ +
= min . ute
Dac joburile sosesc n ordinea 2, 3, 1 timpul mediu de servire este:

3 6 30
3
13
+ +
= minute
SJF( Shortest Job First). Se execut primul jobul care consum cel mai puin timp
CPU; acest algoritm are dezavantajul c presupune cunoaterea exact a timpului CPU
necesar execuiei procesului.
Algoritmul bazat pe prioriti este cel mai des folosit; ceilali algoritmi sunt cazuri
particulare ale acestuia. Fiecare job primete un numr de prioritate. Joburile se
ordoneaz dup prioriti i apoi se execut n aceast ordine. Se disting dou metode de
stabilire a prioritilor:
a) jobul primete prioritatea la intrarea n sistem i o pstreaz pn la sfrit.
Aceast variant se ntlnete foarte des, dar are dezavantajul c dac sunt multe joburi
cu prioritate mare atunci cele cu prioritate mic ateapt nedefinit.
READY
PCB7
READY
PCB2
WAIT
PCB3
WAIT
PCB1
WAIT
PCB8
WAIT
PCB5
RUN
PCB6
RUN
PCB4

READY:


MM0:


MM1:


DK0:


TT0:


RUN:
(biprocesor)
- 99 -
b) SO calculeaz prioritile dup reguli proprii i le ataeaz dinamic proceselor
n execuie; aceast variant se folosete mai ales la planificarea pe termen mediu. Din
aceast categorie se disting doi algoritmi:
- jobul cel mai vechi din sistem se va executa primul;
- jobul cel mai vechi rezident n memorie se execut primul.
Al doilea algoritm este implementat la SO UNIX. La interval de o secund se oprete
activitatea sistemului i se recalculeaz pentru fiecare proces p
i
prioritatea P
i
astfel:
P
timp CPUconsumat de p
timpdestationare inmemoriealui p
i
i
i
=
Se garanteaz astfel un timp mediu de rspuns, rezonabil pentru fiecare proces din sistem.
n schimb, nu se asigur rspuns prompt la o execuie preferenial. Din acest motiv
UNIX nu este un SO n timp real.
Round-Robin( planificare circular). Aceti algoritmi sunt destinai SO care
lucreaz n time-sharing. Pentru realizare se definete o cuant de timp, ntre 10 i 100
milisecunde. Coada READY a proceselor este tratat circular alocnd procesorul fiecrui
proces pe durata unei cuante.
Algoritmul cu cozi pe mai multe nivele se aplic atunci cnd lucrrile pot fi
clasificate uor n grupe distincte. De exemplu, la un SO de tip mixt, interactiv i serial
pot fi create 5 cozi distincte: taskuri sistem, lucrri interactive, lucrri n care se editeaz
texte, lucrri seriale obinuite, lucrri seriale ale studenilor.

2.4.3. Planificarea schimburilor cu memoria

Problemele care se pun n legtur cu gestiunea memoriei i politicile de schimb
sunt urmtoarele:
1. Care este cantitatea de memorie alocat? La alocarea pe partiii se aloc de la
nceput toat cantitatea cerut( paginare static); la alocarea paginat fiecare program
consum cantitatea de memorie de care are nevoie la un moment dat( paginare dinamic).
2. n care dintre locurile libere pe care le-ar putea ocupa programul este plasat
acesta n cazul alocrii cu partiii variabile? Rezolvrile acestei probleme sunt cunoscute
sub numele de politici de plasare.
3. Cnd se face compactarea n cazul alocrii cu partiie variabil respectiv cnd
este depus o pagin virtual ntr-una fizic la sistemele cu paginare?
4. Care sunt paginile care vor fi evacuate( swap) n cazul n care toate paginile
fizice sunt ocupate la sistemele cu paginare? Alegerea paginii care va fi nlocuit face
obiectul unor politici de nlocuire( replacement).
Politici de plasare. SO i multe programe de aplicaii solicit n timpul execuiei
lor diverse cantiti de memorie. Presupunem c ntreaga cantitate de memorie solicitat
la un moment dat este format dintr-un ir de octei consecutivi i c exist un rezervor de
memorie( heap n limbajele de programare) de unde se ia aceast cantitate. Rezolvarea
cererilor presupune existena a dou rutine: prima are sarcina de a ocupa( aloca) o zon
de memorie i de a ntoarce adresa ei de nceput( ex. procedura NEW n Pascal i funcia
malloc n C), iar a doua are rolul de a elibera spaiul ocupat anterior n vederea
refolosirii lui.
Se vor prezenta n continuare cteva metode de organizare a spaiului de memorie
i algoritmii de ocupare i alocare corespunztori. Pe lng cerinele de funcionare, este
- 100 -
bine ca plasarea succesiv a zonelor alocate s mpiedice, pe ct posibil fragmentarea
excesiv. Cele mai rspndite metode de plasare sunt:
A. Metoda primei potriviri( First- fit).
B. Metoda celei mai bune potriviri( Best- fit).
C. Metoda celei mai rele potriviri( Worst- fit).
D. Metoda alocrii prin camarazi( Budy- system).
Evident c cea mai bun metod de organizare a spaiului se face folosind liste
nlnuite, iar aceste liste s fie pstrate chiar n spaiul liber. Presupunem c un element
al listei are structura:
type
plista=^lista;
lista= record
lung: integer;
next: plista
end;
const
c= sizeof( lista);
var HEAD: plista;
unde cmpul lung d lungimea zonei libere; cmpul next este pointer ctre urmtorul
element al listei.
Un element al listei se va numi cuvnt de control. Aceste cuvinte vor permite ca
lista zonelor libere s fie nregistrat chiar n aceste zone cu preul ctorva octei la
fiecare zon. Constanta c d numrul de octei necesari pentru memorarea unui astfel de
cuvnt de control.
Pentru prezentarea unor algoritmi de plasare se fac urmtoarele convenii:
- fiecare zon liber ncepe cu un cuvnt de control; cmpul lung al lui indic
numrul de octei liberi dup cuvntul de control; pointerul next indic urmtoarea zon
liber, punctnd la nceputul cuvntului ei de control( cuvintele de control vor fi
subliniate cu linii ngroate n figurile urmtoare, iar pointerii la zone sunt indicai cu
sgei)
- fiecare zon ocupat ncepe cu un cuvnt de control; cmpul lung al lui indic
numrul de octei alocai dup cuvntul de control( n mod normal acesta coincide cu
numrul de octei solicitai pentru alocare, n unele situaii numrul de octei alocai
depete cu maximum c numrul de octei solicitai); zona ocupat este reperat dup
cuvntul ei de control
- n algoritmi se va nota cu q pointerul la zona curent, cu p pointerul la zona
precedent lui q, cu r pointerul la zona urmtaore lui q i( cnd este cazul) cu s pointerul
la zona urmtoare lui r.
n figura urmtoare a) este prezentat o zon liber al crei cuvnt de control
ncepe la adresa q i care are l octei liberi. Presupunem c se cere alocarea de n octei i
c l>n. Ca rezultat al alocrii va aprea una dintre situaiile b) dac l-n> c+1 sau c) cnd
i ultimii l-n octei rmn nefolosii.




p
q r L
q
a)
nainte
L
- 101 -













Procedura de alocare este urmtoarea:
procedure alocare( var p, q: pointer; n: integer);
var l: integer;
r: pointer;
begin
l:=q^.lung; r:=q^.next;
if l-n>= c+1 then
begin
q^.lung:= n; q:=q+c+n; q^.next:= r;
if p= nil then HEAD:= q
else p^.next:= q;
q:= q- n;
end
else
begin
if p= nil then HEAD:= r
else p^.next:= r;
q:= q+ c
end
end;
Pentru a descrie problema comasrii a dou zone libere adiacente se va presupune
c lista zonelor libere este pstrat n ordinea cresctoare a adreselor. Situaia n care este
posibil comasarea este prezentat n figura urmtoare:










p
e r
n
q+c
b)
Dup
r g
g
n
p
r r
L
q+c
c)
n
L-n
e= q+ c+ n; g= L- n- c
q L r k
L k
P
r t
t
t= L+ c+ k
- 102 -
Algoritmul de comasare a zonei de adres p cu zona care urmeaz este:
procedure comasare( var p: pointer);
var
q: pointer;
begin
q:= p^.next; p^.next:= q^.next;
p^.lung:= p^.lung+ c+ q^.lung
end;
Procedura de eliberare a unei partiii alocate prin procedura de alocare este
urmtoarea:
procedure eliberare( q: pointer);
var p, r: pointer;
begin
q:= q- c;
if q< HEAD then goto PRIMA;
p:= HEAD; r:= nil; { precedentul lui p}
repeat
if p= nil then goto DUPAULTIMA;
if p^.next> q then goto INTREDOUA;
r:=p; p:= p^.next
until false;
PRIMA: { Zona liber devine prima din list}
q^.next:= HEAD;
if q+ c+ q^.lung= HEAD then comasare( q);
HEAD:= q;
goto FINAL;
DUPAULTIMA: { Zona eliberat devine ultima din list}
r^.next:= q; q^.next:= nil;
if r+ c+ r^.lung= q then comasare( r);
goto FINAL;
INTREDOUA: { Zona e ncadrat ntre alte dou zone}
q^.next:= p^.next; p^.next:= q;
if q+ c+ q^.lung= q^.next then comasare( p);
FINAL:
end;
La eliberare partiia devenit liber se repune n lista de spaii libere. De asemenea se
verific dac nu cumva partiia proaspt eliberat se poate comasa cu una vecin din
dreapta sau stnga ei( n acest fel nu vor exist dou zone libere adiacente).
Descrierile procedurilor sunt fcute ntr-un dialect Pascal; se tie c operaiile
aritmetice asupra pointerilor sunt permise doar n C, deci un progamator bun poate
adapta aceste proceduri astfel nct ele s fie implementate.
n momentul pornirii sistemului se aloc ntreaga zon de memorie sub forma
unei singure zone libere folosind instruciunile:
HEAD:= adresa de nceput a spaiului de memorie destinat alocrii de partiii;
HEAD^.next:= nil;
HEAD^.lung:= lung max a spaiului de memorie destinat alocrilor de partiii;
- 103 -

n procedurile ce descriu primele trei metode se adopt convenia c pointerul q
va avea la ieire adresa de nceput a celor n octei consecutivi solicitai pentru alocare.
Dac nu mai exist n octei liberi, atunci q va avea la ieire valoarea nil.
A. Metoda primei potriviri( First- fit). Esena acestei metode const n aceea c
partiia solicitat este alocat n prima zon liber n care ncape. Procedura este descris
n continuare:
procedure First-fit( n: integer; var q: pointer);
var p: pointer;
begin
p:= nil; q:= HEAD;
repeat
if q<> nil then
begin
if q^.lung>= n then
begin
alocare( p, q, n); goto IEIRE
end;
p:= q; q:= q^.next
end
until q= nil;
IEIRE:
end;
Avantajul acestei metode const n simplitatea cutrii spaiului liber.
B. Metoda celei mai bune potriviri( Best- fit). Esena metodei const n cutarea
acelei zone libere care las dup alocare cel mai puin spaiu liber. Descrierea metodei
este urmtoarea:
procedure Best-fit( n: integer; var q: pointer);
var p,r,s: pointer; x: integer;
begin
r:= nil; s:= HEAD; x:= maxint;
while s<> nil do
begin
if ( s^.lung>= n) and ( x> s^.lung- n) then
begin
x:= s^.lung- n; p:= r; q:= s
end;
s:= s^.next
end;
if x< maxint then alocare( p, q, n)
end;
Avantajul acestei metode este c economisete zonele de memorie mai mari.
Exist ns i dou dezavantaje: timpul suplimentar de cutare i fragmentare intern
excesiv. Pentru nlturarea neajunsurilor se pot pstra spaiile libere n ordinea
cresctoare a lungimilor i nu a adreselor.

- 104 -
C. Metoda celei mai rele potriviri( Worst- fit). n esenta, aceast metod eset
duala metodei celei mai bune potriviri i const n cutarea acelei zone care las cel mai
mult loc liber dup alocare. Descrierea metodei este urmtoarea:
procedure Worst-fit( n: integer; var q: pointer);
var p,r,s: pointer; x: integer;
begin
r:= nil; s:= HEAD; x:= -1;
while s<> nil do
begin
if ( s^.lung>= n) and ( x< s^.lung- n) then
begin
x:= s^.lung- n; p:= r; q:= s
end;
s:= s^.next
end;
if x<> -1 then alocare( p, q, n)
end;
Faptul c dup alocare rmne un spaiu liber mare este benefic deoarece n
spaiul rmas poate fi plasat o alt partiie.
D. Metoda alocrii prin camarazi( Buddy- system). Aceast metod
exploateaz reprezentarea binar a adreselor i faptul c dimensiunea memoriei interne
este multiplu de 2. Fie c
n
-2 dimensiunea memorie interne. Se noteaz cu n cea mai mare
putere a lui 2 prin care se poate exprima dimensiunea memoriei interne. Se stabilete ca
unitate de alocare a memoriei tot o putere a lui 2.
La sistemele Buddy dimensiunile spaiilor ocupate i a celor libere sunt de forma
2
k
cu m k n s s . Ideea este de a pstra liste separate de spaii disponibile pentru fiecare
dimensiune 2
k
din cele de mai sus. Vor exista astfel n-m+1 liste de spaii disponibile.
Prin definiie, fiecare spaiu liber sau ocupat de dimensiune 2
k
are adresa de nceput un
multiplu de 2
k
. Dou spaii libere de ordinul k se numesc camarazi( Buddy) de ordin k
dac adresele lor A
1
i A
2
verific:
A A A A si A
k
1 2 2 1 1
2 < = + , mod 2 = 0
k+1

sau A A A A si A
k
2 1 1 2 2
2 < = + , mod 2 = 0
k+1
.
Atunci cnd ntr-o list de ordin k apar doi camarazi, sistemul i concateneaz ntr-un
spaiu de dimensiune 2
1 k+
.
Alocarea n sistem Buddy se desfoar astfel:
1. Se determin cel mai mic numr p, cu m p n s s pentru care numrul o de
octei solicitai verific o
p
s2 .
2. Se caut, n aceast ordine, n listele de ordin p, p+1, p+2, ..., n o zon liber
de dimensiune cel puin o.
3. Dac se gsete o zon de ordin p atunci aceasta este alocat i se terge din
lista de ordin p.
4. Dac se gsete o zon de ordin k> p atunci se aloc primii 2
p
octei, se terge
zona din lista de ordin k i se creeaz k- p zone libere cu dimensiunile 2 2 2
1 1 p p k
, ,...,
+
.
- 105 -
Eliberarea ntr-un sistem Buddy a unei zone de dimensiune 2
p
este un proces
invers alocrii i se desfoar astfel:
1. Se introduce zona respectiv n lista de dimensiune p.
2. Se verific dac zona eliberat are un camarad de ordin p. Dac da, atunci zona
este comasat cu acest camarad i formeaz mpreun o zon liber de dimensiune 2
1 p+
.
Att zona eliberat ct i camaradul su se terg din lista de ordin p, iar zona nou aprut
se adaug la lista de ordin p+1.
3. Se execut pasul 2 n mod repetat mrind p cu o unitate pn cnd nu se mai
pot face comasri.
Avantajul acestei metode este manipularea comod a adreselor de zone( adresele
a doi camarazi de ordin k difer doar prin bitul de pe poziia k).
Politici de ncrcare. La sistemele cu alocare paginat, n momentul lansrii n
execuie a programului acesta nu are nici o pagin n memorie. La prima solicitare a
programului SO i aduce n memorie numai pagina solicitat. Programul funcioneaz
normal un timp, dup care va cere o nou pagin care nu este n memorie. Problema care
apare este reducerea numrului de cereri de aducere a paginilor n memorie.
O soluie simpl, dar ineficient este aducerea de la nceput n memorie a tuturor
paginilor( dispare mecanismul de paginare).
O alt modalitate este aducerea de pagini la cerere( n mometul solicitrii ei).
Aceast metod este frecvent utilizat.
Exist metode prin care se aduc n memorie pagini n avans. Astfel, odat cu o
pagin se aduc n memorie i cteva pagini vecine, n ipoteza c acestea vor fi invocate n
viitorul apropiat. Legat de ncrcarea n avans, P.J. Denning a emis principiul vecintii:
adresele de memorie solicitate de un program nu se distribuie uniform pe ntreaga
memorie folosit, ci se grupeaz n jurul unor centre. Apelurile n apropierea acestor
centre sunt mult mai frecvente dect apelurile de la un centru la altul. Acest principiu
sugereaz o politic de ncrcare n avans a unor pagini dup cum urmeaz: se stabilete
o memorie de lucru compus din cteva pagini; n momentul solicitrii unei pagini de pe
disc se aduc n memoria de lucru i cteva pagini vecine. n conformitate cu principiul
vecintii este probabil ca urmtoarele referiri s fie fcute n cadrul memorie de lucru.
Politici de nlocuire. Numrul total al paginilor active poate deveni mai mare
dect numrul paginilor fizice din memorie operativ. Se pune ntrebarea care dintre
paginile paginile fizice s fie evacuat pentru a crea spaiul necesar? Optim ar fi s fie
evacuat pagina care va fi solicitat cel mai trziu, acest lucru este ns imposibil de
realizat. Dintre metodele mai obinuite se folosesc n special trei:
- nlocuirea unei pagini care nu a fost recent utilizat( NRU, Not Recently Used).
n acest caz se mpart paginile fizice, cu ajutorul a doi bii n patru clase: clasa 0- pagini
nereferite i nemodificate, 1- pagini nereferite, dar modificate la ncrcare, 2- pagini
referite , dar nemodificate, 3- pagini referite i modificate. Cnd o pagin trebuie
nlocuit se ncepe alegerea ei cu clasa 0 .a.m.d.
- nlocuirea n ordinea ncrcrii paginilor( FIFO, First In First Out). Pentru a
realiza acest lucru se creeaz i actualizeaz o list a paginilor n ordinea ncrcrii lor.
- nlocuirea paginii nesolicitate cel mai mult timp( LRU Least Recently Used).
Acest mod de nlocuire se bazeaz pe observaia c o pagin care a fost mai mult utilizat
de ctre ultimele instruciuni, va fi probabil solicitat mai des i n continuare.

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