Sunteți pe pagina 1din 91

Emilia Pecheanu

Sisteme de Calcul
i
Sisteme de Operare

Editura Fundaiei Dunrea de Jos


Galai

Cuprins
1. INTRODUCERE
1.1. Sisteme de calcul .................................................................. 3
1.2. Elemente de arhitectur hardware ........................................ 8
1.3. Istoricul Sistemelor de Operare .......................................... 28
2. CONCEPTE SPECIFICE SISTEMELOR DE OPERARE
2.1. Resurse n cadrul unui Sistem de Operare .........................
2.2. Procese ...............................................................................
2.3. Fire de execuie ..................................................................
2.4. ntreruperi ...........................................................................
2.5. Apeluri sistem ....................................................................
2.6. Sistemul de fiiere ..............................................................

37
39
41
44
47
49

3. CLASE DE SISTEME DE OPERARE


3.1. Clasificarea dup implementarea serviciilor ......................
3.2. Clasificarea dup modelul structural ..................................
3.3. Clasificarea dup modul de acces la servicii ......................
3.4. Clasificarea dup tipul de servicii oferite de sistem ...........

51
61
66
67

4. GESTIUNEA PROCESELOR
4.1. Conceptul de proces ...........................................................
4.2. Modele de execuie a proceselor ........................................
4.3. Structuri de date pentru gestiunea proceselor ....................
4.4. Procese sub UNIX ..............................................................

71
72
78
82

ANEXA - SISTEMUL DE FIIERE UNIX ...................................... 87


BIBLIOGRAFIE .................................................................................. 90

1. INTRODUCERE
1.1. SISTEME DE CALCUL

1.1.1. Sistem de Calcul i Sistem de Operare


Un sistem de calcul este un ansamblu organizat de echipamente i de
programe care interacioneaz n vederea realizrii unui scop comun,
prelucrarea automat a datelor. Echipamentele electronice, electrice i
mecanice alctuiesc partea hardware a unui sistem de calcul, iar
programele i datele formeaz partea software a acestuia.
Prin tehnologiile implementate, partea hardware determin n mod direct
performanele unui sistem de calcul: viteza de calcul, puterea de calcul i
capacitatea de stocare a datelor. Partea software transform calculatorul ntrun obiect care poate fi utilizat cu uurin de ctre operatorul uman.
Partea software a oricrui sistem de calcul cuprinde dou componente :
software-ul de baz (programe i date de sistem), care
coordoneaz funcionarea de ansamblu a sistemului
software-ul de aplicaie (programe i date de aplicaie), care
rezolv probleme din diverse domenii de activitate socio-uman.
Sistemul de Operare face parte din software-ul de baz, coordonnd
activitile de prelucrare de date desfurate de calculator. El asigur
exploatarea eficace a resurselor hardware/software ale mainii, furniznd
suportul necesar pentru dezvoltarea i execuia programelor de aplicaie.
Sistemele de calcul moderne sunt obiecte extrem de complexe din punct de
vedere tehnic. Utilizarea calculatoarelor ar fi imposibil dac ar necesita
cunoaterea modului lor de funcionare. Dezvoltarea de programe ar deveni
o activitate dificil, dac programatorii ar trebui s cunoasc n detaliu
structura i funcionarea componentelor hardware ale unui sistem de calcul.
n acest context, rolul Sistemului de Operare este de a realiza separaia
necesar ntre complexitatea intern i modul de utilizare al unui calculator.

Un sistem de calcul este alctuit din resurse fizice (procesor, memorie,


dispozitive de intrare/ieire), resurse logice (programe de sistem i aplicaie)
i resurse informaionale (date organizate n structuri coerente) care
interacioneaz pentru satisfacerea cerinelor utilizatorilor privind stocarea,
prelucrarea i transmisia informaiilor. n acest sens, Sistemul de Operare
este componenta software care asigur administrarea eficient a resurselor
sistemului de calcul, oferind o interfa de lucru accesibil pentru utilizatori.
1.2.2. Instruciuni i date la un sistem de calcul
Partea hardware a unui sistem de calcul este alctuit din trei componente:
Unitatea Central de Procesare, Memoria i Dispozitivele Periferice.
Unitatea Central de Procesare realizeaz prelucrarea automat a datelor
prin execuia unor programe. Programele sunt secvene de comenzi
stocate intern n format numeric. Aceste comenzi sunt numite instruciuni.
Instruciunile acioneaz asupra unor date care capt astfel semnificaie,
devenind informaie. Informaia este o reprezentare simbolic, n format
numeric, pentru entiti dintr-un anumit univers de interes : numere,
caractere, texte, imagini, secvene video sau audio, .a.. plus algoritmii de
prelucrare transpui intern sub form de instruciuni.
Observaie : Unitatea Central de Procesare va fi desemnat n continuare i
prin prescurtarea UCP. Denumirea de Unitate Central (de Procesare) va fi
considerat sinonim cu termenul de Procesor, n sensul de entitate hardware
care execut instruciunile din programe, n cadrul unui sistem de calcul.
Instruciunile pe care le poate executa n mod direct UCP formeaz un aanumitul limbaj main. Fiecare tip hardware de Procesor implementeaz
un limbaj main propriu, limbaj care cuprinde un set de instruciuni.
Fiecare instruciune din acest set este alctuit din dou componente :
Codul operaiei (opcode), o valoare numeric care indic ce tip de
prelucrare (operaie) trebuie efectuat la execuia instruciunii
Operanzii, care specific datele (sau adresa datelor) asupra crora se
va efectua prelucrarea indicat de codul operaiei.
Instruciunile din setul de instruciuni al UCP posed i specificaii bazate
pe mnemonice (cuvinte cheie), pe lng de reprezentarea numeric din
limbajul main. Aceste specificaii formeaz limbajul de asamblare al
acelui tip de Unitate Central de Procesare.
4

Stocarea instruciunilor n vederea execuiei lor i a datelor pe parcursul


prelucrrii lor se face n memoria intern a sistemului de calcul, utiliznduse reprezentarea binar. Aceast reprezentare a fost aleas deoarece ea se
implementeaz n hardware cu ajutorul unor circuite electronice la care se
pot distinge dou stri electrice : o stare corespunztoare valorii 0 i o alt
stare corespunztoare valorii 1. Cele dou stri au fost asimilate cu cifrele
binare 0 i 1 i fiecare constituie un bit. Bitul constituie cea mai mic pies
de informaie din cadrul memoriei interne.
Circuitele de stocare ce formeaz memoria intern sunt grupate n uniti
denumite celule de memorare, dimensiunea uzual a unei celule fiind de 8
bii (octet sau byte). Fiecare celul din memorie este identificat printr-o
adres unic, iar aceste adrese sunt numerice i ncep de la 0.
O instruciune n limbaj main este codificat binar n unul sau mai multe
cuvinte-procesor. Lungimea cuvntului-procesor (cuvntul-main)
constituie o caracteristic important pentru un anumit tip de UCP i
dimensiunea lui este dat de numrul de bii ce se transfer simultan pe
magistrala de date a UCP, la un acces la memorie. Astfel, exist Procesoare
cu cuvnt main de 1 bit (automatele programabile), de 8 bii (la sistemele
cu microprocesor Intel 8080, Z80, Motorola M6800), de 16 bii (la sistemele
cu microprocesoare Intel 80286, 80386, 80486, Pentium I, Pentium II, Zilog
Z8000, Motorola M68000 ) sau de 32 bii (la sisteme cu microprocesor
Pentium III, Pentium IV, Athlon ).
n ce privete lungimea unei instruciuni main, aceasta poate fi fix sau
variabil de la instruciune la alta din setul de instruciuni al unui Procesor.
1.1.3. Modelul abstract al unui sistem de calcul
Structura unui sistem de calcul modern, vzut ca ansamblu hardwaresoftware, se poate reprezenta cu ajutorul unei scheme formate dintr-o
succesiune de niveluri logice suprapuse (Figura 1.1).
1. Nivelul mainii fizice este constituit din dispozitivele electronice,
electrice i mecanice (plachete cu circuite integrate i alte componente
electronice, circuite fizice, conectori, sistemul de alimentare, ansamble
mecanice de poziionare, .a.) care alctuiesc calculatorul ca obiect fizic.

2. Nivelul microprogramelor se ntlnete la majoritatea sistemelor de


calcul moderne. Este alctuit dintr-o colecie de microprograme stocate
ntr-o memorie nevolatil din cadrul Procesorului, memorie care nu este
accesibil utilizatorului. Microprogramele (microrutinele) sunt alctuite pe
baza unui set de microinstruciuni, specific fiecrui tip de Procesor.
Microinstruciunile sunt comenzi elementare care comand n mod direct
circuitele electronice digitale care alctuiesc Procesorul. Microprogramele
constituie o component de tip firmware (entitate software nevolatil i
constructiv inclus n hardware) n cadrul unui sistem de calcul.
La unele calculatoare nivelul mainii fizice i cel al microprogramelor sunt
privite ca un tot unitar i nu sunt prezentate ca niveluri separate.

Programe de
aplicaie

Software de aplicaie

Compilatoare Translatoare
Biblioteci Medii de lucru
Maina
extins

Software
Software de baz

Sistemul de Operare
Limbajul main
Microprograme

Hardware i firmware

Maina fizic

Figura 1.1. Modelul abstract al unui sistem de calcul.


3. Nivelul limbajului main urmeaz dup nivelul microprogramelor.
Instruciunile limbajului main se exprim n format hexazecimal sau
binar.
Forma explicit a instruciunilor acestui limbaj (forma care utilizeaz
mnemonice - cuvinte cheie) constituie limbajul de asamblare al
Procesorului. Pentru fiecare instruciune din limbajul main exist la
nivelul microprogramelor o microrutin coninnd secvena de comenzi
elementare (de microinstruciuni) care se lanseaz la execuia acelei
instruciuni. Limbajul main este specific fiecrui tip hardware de Procesor
i poate avea ntre 50 i 300 de instruciuni din urmtoarele categorii:
instruciuni de citire/scriere n memorie
instruciuni de calcul aritmetic i logic
instruciuni de comparare valori
6

instruciuni de salt (ruptur de secven)


instruciuni de deplasare de date
instruciuni de intrare/ieire efectuate prin intermediul regitrilor sau
prin transfer de la/la porturile de intrare/ieire
instruciuni de comand i control.
4. Nivelul Sistemului de Operare se afl deasupra nivelului limbajului
main. n general, Sistemul de Operare care ruleaz n cadrul unui
calculator trebuie s realizeze trei mari funciuni :
s mascheze complexitatea nivelurilor precedente i s furnizeze
utilizatorului o interfa de lucru simplificat i accesibil
s furnizeze suportul de lucru necesar pentru crearea i execuia
aplicaiilor utilizator
s administreze n mod eficient resursele hardware i software ale
sistemului de calcul, astfel nct s fie satisfcute n timp util toate
cererile de alocare de resurse, iar conflictele legate de partajarea
acestora ntre programe s fie rezolvate n mod corect
Sintetiznd aceste idei, o definiie pentru Sistemul de Operare ar putea fi:
Sistemul de Operare este un ansamblu organizat de programe i de
structuri de date care furnizeaz interfaa cu utilizatorul i ofer suportul
necesar pentru dezvoltarea i execuia programelor de aplicaie, n condiiile
unei gestionri eficiente a resurselor sistemului de calcul.
Modulele de program care alctuiesc Sistemul de Operare se execut ntr-un
mod specific, denumit mod privilegiat (sau mod nucleu sau supervizor).
Programele de aplicaie din cadrul unui sistem de calcul se execut, de
regul, n mod utilizator. Execuia unui modul de program n mod
supervizor se caracterizeaz prin :
accesul fr restricii la toate resursele hardware i software
posibilitatea de a executa orice instruciune aparinnd limbajului de
asamblare al mainii.
Execuia unui program n mod utilizator se caracterizeaz prin:
restrngerea posibilitilor de lucru cu anumite resurse software i
interzicerea accesului direct la resursele hardware
restricionarea accesului la anumite resurse, inclusiv componente ale
Sistemului de Operare, acesta din urm fiind astfel protejat
mpotriva modificrii accidentale sau voite.

Primele patru niveluri prezentate sunt vzute de utilizatorii ca un tot unitar.


Se consider c aceste patru niveluri formeaz aa-numita main virtual
(sau main extins) n cadrul unui sistem de calcul (Figura 1.1.)
5. Nivelul programelor utilitare de sistem : este urmtorul nivel din
schema abstract, deasupra Sistemului de Operare. Componentele acestui
nivel se numesc programe utilitare de sistem i pot s varieze de la un
Sistem de Operare la altul. Programele utilitare de sistem fac parte din
software-ul de baz, ca i Sistemul de Operare. Repertoriul de utilitare
depinde de tipul Sistemului de Operare, de opiunile utilizatorului sau de
scopul n care este folosit sistemul de calcul.
Programele utilitare de sistem sunt, de regul, furnizate chiar de creatorii
Sistemului de Operare, dar pot s fie realizate de programatori sau companii
de software care utilizeaz sau promoveaz un anumit Sistem de Operare.
6. Nivelul programelor de aplicaie este ultimul strat reprezentat n
schema abstract din Figura 1.1. Acest nivel este format din programe
realizate de programatori profesioniti sau amatori, pentru a rezolva diverse
probleme din domeniul tiinific, economic, militar, al vieii sociale sau al
divertismentului.

1.2. ELEMENTE DE ARHITECTUR HARDWARE

1.2.1. Principii i modele de arhitectur a sistemelor de calcul


Noiunea de arhitectur desemneaz n tiina calculatoarelor modelul
structural-constructiv al unui anumit tip de sistem de calcul. Un model
structural-constructiv definete modul de alctuire, principiile de
funcionare i de interaciune dintre componentele unui sistem de calcul:
Unitatea Central de Procesare, memoria, dispozitivele periferice. Cele mai
cunoscute modele de arhitectur pentru sistemele de calcul sunt:
arhitectura von Neumann
arhitectura Harvard.
Arhitectura von Neumann este un model structural-constructiv care
implementeaz urmtorul principiu: att datele ct i programele sunt
stocate n format numeric binar n memoria intern a calculatorului.
8

Singura deosebire dintre date i programe const n modul de interpretare a


acestora n cadrul prelucrrilor efectuate de sistemul de calcul.
Programele pot fi accesate i modificate la fel ca i datele, fr a fi necesare
schimbri n structura hardware a mainii, i ca urmare un acelai calculator
poate executa prelucrri variabile (sub form de programe) asupra datelor.
Calculatoarele contruite n arhitectur von Neumann se mai numesc i
maini cu program memorat. La aceste sisteme de calcul transferul
datelor i al instruciunilor ntre memorie i Procesor se realizeaz prin
intermediul aceleiai magistrale, transferurile fiind secveniale. Diferena
dintre viteza de transfer a datelor n memorie i viteza de procesare a UCP
conduce la o reducere a capacitii generale de prelucrare a sistemului de
calcul.
Fenomenul se numete gtuirea von Neumann (von Neumann bottleneck).
Arhitectura Harvard este un model structural-constructiv la care datele i
instruciunile sunt stocate pe dispozitive de memorare intern (fizic)
separate.
Transferul datelor i a instruciunilor ntre memorie i Procesor se realizeaz
prin intermediul unor magistrale diferite i dedicate. Aceast separaie
constructiv permite ca instruciunile s poat fi transferate din memoria
intern simultan cu scrierea sau citirea datelor. Un calculator n arhitectur
Harvard este n principiu mai rapid dect un calculator similar n arhitectur
von Neumann. Ctigul obinut n viteza de procesare este ns pltit printro mai mare complexitate constructiv (hardware).
Unele sisteme de calcul moderne implementeaz o arhitectur hibrid,
prin combinarea modelelor von Neumann i Harvard. Aceast soluie a fost
adoptat pentru a se diminua diferena dintre viteza de lucru a Procesorului
i viteza de transfer a datelor din/ctre memoria intern. Sistemele de calcul
moderne posed o memorie intermediar de mare vitez, memoria cache,
care se interpune ntre memoria intern i Procesor. La unele modele actuale
de sisteme de calcul, memoria cache este construit i exploatat la conform
principiilor arhitecturii Harvard, ea fiind alctuit din zone de stocare i
magistralele de transfer fizic separate pentru date i instruciuni. Pe alt
parte, la aceste sisteme memoria intern funcioneaz conform principiilor
arhitecturii von Neumann: datele i intruciunile sunt stocate i accesate prin
intermediul acelorai dispozitive de memorare i respectiv de transfer.

1.2.2. Arhitectura von Neumann


Aa cum reiese din cele prezentate anterior, principiul care st la baza
arhitecturii von Neumann este strns legat de rolul memoriei n cadrul
sistemului de calcul : memoria intern stocheaz n codificare binar (sub
forma unor iruri de bii) date i programe.
Att datele ct i programele care efectueaz prelucrarea acestor date pot fi
modificate prin intermediul acelorai operaii.
Codificarea uniform a programelor i a datelor a constituit o una din
cele mai importante inovaii din tiina calculatoarelor. Aceasta a permis
modificarea programelor (a modelului de prelucrarea a datelor), deci
schimbarea dinamic a modului de funcionare al unui sistem de calcul
fr a se opera transformri asupra hardware-ului acelui sistem.
Observaie : Primele calculatoare electronice nu implementau n totalitate
principiul fundamental al arhitecturii von Neumann: stocarea uniform a
programelor i a datelor. Existau programe care erau direct "cablate" pe
plachete cu circuite electronice, plachete ce se inserau (fizic) n Procesor.
Pentru a rezolva o nou problem sau a modifica un program era necesar
recablarea unei pri din circuitele Procesorului. Spre deosebire de
programele moderne, la aceste prime calculatoare unele programe aveau
consisten fizic, fiind deci entiti hardware i nu software.
Unitate de Intrare Ieire

Unitate de Memorare

Unitate de Comand i Control

Unitatea Aritmetico-Logic

Figura 1.2. Modelul de arhitectur von Neumann.

10

Modelul clasic de calculator n arhitectur von Neumann posed


urmtoarele componente: Unitate de Comand i Control, Unitate
Aritmetico - Logic, Unitate de Memorie i Unitate de Intrare / Ieire
(Figura 1.2.). ntre cele patru componente exist att schimb de fluxuri de
informaii ct i conexiuni de comand, iar funciunile ndeplinite de aceste
componente sunt :
Unitatea de Comand i Control (UCC) supervizeaz transferul
informaiei ntre toate celelalte prti componente ale calculatorului
Unitatea Aritmetico-Logic (UAL) efectueaz operaii aritmetice
sau operaii logice (negaie, SAU logic SI logic), conform tipului de
instruciune n execuie
Unitatea de Memorare (M) stocheaz uniform informaia (date i
instruciuni)
Unitatea de Intrare/Ieire realizeaz comunicaia cu exteriorul i
este alctuit din:
o Unitatea de Intrare (UI), compus din dispozitive i
interfeele aferente ce transmit informaii ctre UAL,
eventual direct n memoria calculatorului printr-un mecanism
specific numit DMA (Acces Direct la Memorie ).
o Unitatea de Ieire (UE), compus din dispozitive i
interfeele aferente ce primesc informaii transmise de UAL
sau direct din memorie prin mecanismul menionat deja.
Unitatea Central de Procesare

n cadrul arhitecturii von Neumann, Unitatea Central de Procesare


(Procesorul) se definete ca fiind ansamblul format de UAL i UCC, acestea
dou fiind puternic interactive i constructiv combinate. UAL conine, pe
lng circuitele necesare realizrii operaiilor, mai multe zone de memorare
temporar numite registre (regitri).
Regitrii sunt utilizai pe parcursul execuiei instruciunilor, deoarece UAL
nu realizeaz prelucrarea datelor direct n memoria intern. Prelucrarea
datelor n cadrul unei instruciuni este ntotdeauna precedat de un transfer
n regitrii UAL. Dup prelucrarea lor n regitri, datele sunt eventual
retransferate n memorie, deci se poate spune ca UAL nu proceseaz n mod
direct coninutul memoriei, ci realizeaz aceasta aciune prin intermediul
regitrilor. Numrul de regitri variaz de la un tip de UCP la altul, dar n
principiu, orice UAL deine urmtorii regitri :
11

Regitrii generali, care sunt accesibili/modificabili prin instruciuni,


att din programele utilizator ct i din programele de sistem
Regitrii de adrese, care conin adrese legate de execuia
programului curent
Regitrii de control i stare, care sunt folosii de UCP pentru
controlul operaiilor efectuate, sau de Sistemul de Operare n
controlul execuiei programelor.
Regitrii generali sunt, n principiu, urmtorii :
registrul Acumulator (AC), care poate fi unicul registru de date i
operandul implicit n cazul unor instruciuni
ali regitri, n funcie de arhitectura Procesorului, uneori i regitrii
utilizai pentru adresare.
Regitrii de adrese pot fi, n funcie de arhitectura hardware :
registrul adresei (RA), care conine adresa operandului din
instruciunea curent
registrul index, care particip la construcia adresei de memorie
prin asigurarea unui deplasament al valorii din registrul adresei RA
registrul pointer de segment, care conine adresa unui segment de
memorie intern, n cazul exploatrii pe segmente a memoriei
interne
registrul Contor Program (PCProgram Counter), ce conine
adresa instruciunii urmtoare celei aflate n execuie
registrul Pointer de Stiv (SPStack Pointer) ce conine adresa
locaiei curente din stiv.
Regitrii de Control i Stare sunt utilizai determinarea strii UCP dup
execuia unei instruciuni sau pentru controlul execuiei programului:
registrul instruciunii (IRInstruction Register), care stocheaz
codul operaiei (opcode) din instruciunea n curs de execuie
registrul de Stare a Programului (PSW Program Status Word),
care memoreaz :
o indicatorii de condiie
o starea sistemului de ntreruperi (activat sau dezactivat )
o modul de lucru (mod privilegiat/mod utilizator), .a.
Indicatorii de condiie sunt bii poziionai de Procesor n funcie de
rezultatul obinut n urma execuiei unei intruciuni. Acetia se refer la:
rezultat zero, rezultat negativ, depire, transport, paritate, etc. Indicatorii de
condiie pot fi accesai prin program, dar nu pot fi modificai n mod direct.

12

Observaie : Registrul IR precum i regitrii Procesorului care conin adresa


fizic efectiv a operanzilor (adresa de unde/unde se face citirea/scrierea) nu
sunt accesibili sau modificabili prin program. UAL mai deine i un set
intern de regitri complet invizibili pentru programe, utilizai la efectuarea
diverselor operaii interne care sunt efectuate la execuia unei instruciuni.
Memoria

n cadrul unui sistem de calcul termenul de memorie desemneaz o entitate


care stocheaz datele pentru un anumit interval de timp, chiar i dup
scoaterea de sub tensiune a sistemului. Memoria este alctuit din mai multe
componente de memorare, fiecare avnd un mod de funcionare specific,
conform cu rolul i cu tehnologia sa de realizare.
Principalele componente de memorare ale unui sistem de calcul sunt:
regitrii Procesorului
memoria intern
memoria cache a Procesorului
dispozitivele periferice numite dispozitive externe de memorare:
discul dur (HDD), discheta, CD-ROM i DVD-ROM, band
magnetic, caseta magnetic, memoria "flash", .a.
Regitrii Procesorului sunt utilizai pentru stocarea datelor pe parcursul
execuiei instruciunilor. Din acest punct de vedere ei pot fi considerai
componente de memorare temporar.
Memoria intern stocheaz programele pe parcursul execuiei i datele pe
parcursul prelucrrii lor. Memoria intern este organizat ca un ansamblu
liniar de celule numite octei (a se vedea Seciunea 1.2.2.), fiecrei celule
fiindu-i asigurat un identificator sub form de adres. Regsirea unei celule
n vederea efecturii uneia din cele dou operaii, citire sau scriere, se face
pe baza adresei acesteia.
Memoria cache a Procesorului este o component de memorare de
capacitate mic i cu timp de acces de cteva ori mai mic dect al memoriei
interne. Ea servete la stocarea temporar a unei copii pentru anumite date
din memoria intern. Aceste date sunt fie frecvent utilizate de Procesor, fie
au fost recent utilizate, sau exist o probabilitate foarte mare ca ele s fie
utilizate n intervalul de timp imediat urmtor.
13

Rolul memoriei cache este de a mri viteza de prelucrare a Procesorului prin


reducerea timpilor de acces la date i la instruciuni, pe parcursul execuiei
programelor. n general orice memorie cache servete la accelerarea vitezei
de comunicaie ntre o entitate consumatoare i o entitate furnizoare.
Rezultatul urmrit este diminuarea timpului de procesare, deci creterea
performanelor generale a sistemului de calcul.
La calculatoarele moderne exist mai multe componente de memorare de tip
cache: memoria cache a Procesorului (CPU cache), care a fost menionat
anterior, sau memoria cache a discului dur (disk cache sau cache buffer)
care face parte din unitatea de disc (disk drive).
Indiferent de locul unde este amplasat, memoria cache funcioneaz
conform unui principiu numit n tiina calculatoarelor principiul referinei
localizate (locality of reference). Acest principiu se refer la modul de
desfurare al unei activiti n care are loc accesarea repetat a unei resurse.
Exist mai multe aspecte exprimate de principiului referinei localizate,
dintre care menionam:
localizarea temporal, care spune c exist o probabilitate mare ca o
resurs accesat la un moment dat s fie accesat din nou dup un
scurt interval de timp
localizarea spaial, care spune c exist o probabilitate mare ca
dup accesarea unei anumite resurse, s fie accesat o alta cu
amplasament apropiat de prima.
Funcionarea memoriei cache se bazeaz pe localizare temporal i/sau
localizare spaial.
Componentele de memorare din cadrul unui sistem de calcul pot fi descrise
prin prisma mai multor aspecte. Unul dintre acestea este tehnologia
hardware de realizare, n funcie de care se pot emumera urmtoarele
tipuri de memorie: memorie cu ferite, memorie pe baz de circuite
semiconductoare (static sau dinamic), memorie magnetic, memorie
optic, memorie magneto-optic, .a.
Alte aspecte care se pot considera pentru caracterizarea sau descrierea
componentelor de memorare ale unui sistem de calcul sunt cele funcionale.
Astfel, componentele de memorare pot fi clasificate dup urmtoarele
criterii funcionale:

14

modul de acces al UCP la componenta de memorare, criteriu dup


care se pot evidenia :
memoria principal, la care Procesorul are acces direct i
care include memoria intern i memoria cache a
Procesorului
memoria secundar, la care accesul Procesorului este
indirect (se efectueaz prin intermediul unor interfee) i care
cuprinde dispozitivele externe de memorare
modul de acces la unitile de stocare (celule sau blocuri fizice),
care poate fi :
aleatoriu (RAM-Random Access Memory) : fiecare unitate
de stocare din cadrul memoriei (celul sau bloc fizic) este
accesat n mod direct, pe baza adresei sale; memoria intern,
memoria cache sunt de tip RAM, ca i majoritatea
dispozitivelor externe de memorare : discul dur, discheta,
CD-ROM, DVD-ROM
secvenial, care se caracterizeaz prin necesitatea de a citi
toate unitile de stocare precedente pentru a ajunge la
unitatea de interes; acest mod se ntlnete la dispozitive
externe de memorare cum ar fi banda sau caseta magnetic
tipurile de operaii care se pot efectua n cadrul componentei de
memorare: citire sau citire/scriere date; conform acestui criteriu se
pot distinge dou tipuri de memorie :
memorie ROM (Read Only Memory), care permite doar
citirea repetat
memorie read-write, care permite att citirea ct i scrierea
repetat
persistena datelor la scoaterea de sistemului de sub tensiune,
criteriu conform cruia se pot evidenia dou tipuri de memorie :
memorie volatil, la care datele se pierd la scoaterea
sistemului de sub tensiune
memorie nevolatil, la care datele se menin la scoaterea de
sub tensiune.
Memoria intern i memoria cache a Procesorului permit scrierea i citirea
repetat. Prin prisma persistenei datelor, memoria intern i memoria
cache sunt memorii volatile, deoarece la scoaterea de sub tensiune a
sistemului datele stocate se pierd.

15

Exist totusi o excepie: la sistemele moderne memoria intern include un


spaiu de memorare de tip ROM, care conine informaii importante de
configurare i care se pstreaz i dup scoatrea de sub tensiune a
sistemului. n ceea ce privete modul de acces la unitile (celulele) de
stocare, memoria intern i memoria cache sunt de tip RAM, fiecare celul
putnd fi accesat n mod direct pe baza adresei sale.
Componentele care memorare din cadrul unui sistem de calcul pot fi
descrise i n funcie de performanele lor. n acest sens, exist dou aspecte
care se iau n considerare :
timpul de acces, care reprezint intervalul de timp necesar pentru a
efectua un transfer de date de-la/la componenta de memorare; timpul
de acces trebuie s fie ct mai redus iar dupacest criteriu ierahia de
performan este urmtoarea :
regitrii Procesorului, caracterizai prin timpul de acces cel mai mic
memoria cache
memoria intern
dispozitivele externe de memorare, la care exist timpii de acces cei
mai mari
capacitatea de stocare, care trebuie s fie ct mai mare; pornind de
acest criteriu de performan se poate constata urmtoarea ierarhie:
dispozitivele externe memorare, care posed cea mai mare
capacitatea de stocare
memoria intern
memoria cache
regitrii Procesorului, care au capacitatea de stocare cea mai redus
din sistem.
Execuia instruciunilor

La un sistem de calcul, principala sarcin a Procesorului este s execute


instruciuni. Instruciunile sunt, ntr-o succint definire, iruiri de bii care
specific Procesorului ce operaii trebuie s efectueze asupra unui set de
date sau n scopul controlui funionrii sale.
La modul cel mai general, formatul unei instruciuni cuprinde 5 cmpuri
(Figura 1.3.). n practic nu sunt ns implementate instruciuni care s
conin efectiv toate cele 5 cmpuri. De regul, cmpul 4 este n mod
implicit registrul general numit Acumulator, deci nu se mai specific.

16

Codul
instruciunii

Adresa
primului
operand

Adresa celui
de al doilea
operand

Adresa de stocare
a rezultatului

Adresa urmtoarei
instruciuni

Figura 1.3. Formatul general al unei instruciuni n limbaj main.


La instruciunile aritmetice i logice cmpurile 2 i 4 sunt n mod implicit
registrul acumulator. Cmpul 5 lipsete ntotdeauna, adresa implicit fiind
cea a urmtoarei instruciuni din programul n execuie, desigur cu excepia
instruciunilor de ruptur de secven (salt).
Instruciunile executate de Procesor se desfoar n mai muli pai,
denumii faze. Pe durata acestor faze instruciunea (stocat memoria intern
sau n memoria cache a Procesorului) este transferat n regitrii
Procesorului i operaia (operaiile) indicate de aceasta sunt efectuate.
Desfurarea fazelor unei instruiuni este controlat (cadenat) prin
intermediul unui orologiu intern al Procesorului.
Fiecare faz poate avea unul sau mai multe cicluri main, iar fiecrui ciclu
i corespund mai multe microoperaii numite stri (o stare se declaneaz pe
frontul unui impuls al orologiului intern al Procesorului). Fazele de execuie
ale unei instruciuni n limbaj main sunt destul de diferite de la un
Procesor la altul i de la o generaie la alta de Procesoare. Totui, se pot
identifica trei faze n execuia unei instruciuni :
1. Faza de aducere a instruciunii din memoria intern
2. Faza de decodificare a instruciunii
3. Faza de execuie a instruciunii.
Faza de aducere a instruciunii const din citirea codului instruciunii
(opcode) din memoria intern, de la adresa indicat de registrul adresei RA,
i plasarea acestui cod n registrul de instruciuni IR. Schematic, aceste
activiti se reprezint astfel :
RA [ AS | ] CP + [ IX ]
RI Mem ( RA )
CP CP + numrul de octei ai cuvntului main

unde:
RA = registrul adresei, care memoreaz adresa efectiv a cuvntului
din memoria intern de unde se va citi codul instruciunii

17

CP = contorul de program, care specific adresa instruciunii (adresa

este absolut dac memoria nu este segmentat) sau deplasamentul


fa de adresa nceputului de segment curent
AS = registru cu adresa segmentului curent (unde se afl
instruciunea), n cazul unei memorii exploatate prin tehnica de
segmentare
[ AS | ] CP = compunerea adresei de segment cu adresa instruciunii
IX = un posibil identificator (de registru) de indexare a adresei
(valoarea din IX este adiionat la valoarea de adres aflat n
registrului CP sau n registrul AS)
RI = registrul instruciunii care va memora codul instruciunii ce
urmeaz s se execute.
Faza de decodificare a instruciunii const din decodificarea codului
instruciunii, care arat ce operaie se efectueaz prin execuia acelei
instruciuni. n aceast faz se trimit semnale ctre UCC i UAL n scopul
execuiei instruciunii (Figura 1.4.).
Faza de execuie a instruciunii const din urmtoarele (Figura 1.4.) :
n cazul n care instruciunea este cu adresare indirect, se determin
adresa adresei indirecte i se citete din memorie prin intermediul
registrului MAR (Memory Address Register)
n cazul n care un operand este stocat n memorie, se determin
valoarea acestuia i se transfer aceast valoare ntr-un registru
temporar, registrul de date al memoriei
se efectueaz operaia specificat de codul instruciunii i se
memoreaz la adresa rezultat, care este de regul registrul
Acumulator sau un registru specificat explicit.
Durata execuiei unei instruciuni depinde de natura sa i de contextul n
care se gsete Procesorul atunci cnd se execut instruciunea. De exemplu
exist stri de ateptare de durat nedefinit generate de cauze diverse, ca
cea de ocupare a magistralelor de alt dispozitiv n timpul accesului la
memorie. Principiul conform cruia execuia unei instruciuni se efectueaz
prin ncrcarea sa n regitrii Procesorului are urmtoarea implicaie direct:
un calculator dotat cu un singur Procesor poate s execute doar o
singur instruciune la un moment dat. Ca urmare un sistem
monoprocesor n arhitectura von Neumann va executa o singur instruciune
la un moment dat, spre deosebire de sistemele de calcul mulltiprocesor sunt
capabile s execute mai multe instruciuni n acelai timp.
18

Scriere date n memorie


Flux de control

Flux de date

AC

Citire date din memorie

Adres
memorie

UCC

Memoria
intern

UAL
MAR

Opcod

IR

Figura 1.4. Diagrama de fluxuri de date i de control pentru un Procesor cu


un Acumulator.
1.2.3. Tipuri de sisteme de calcul
Clasificarea sistemelor de calcul se poate efectua dup mai multe criterii,
dintre care cele mai des utilizate sunt urmtoarele :
A. tehnologia hardware de realizare
B. modelul de prelucrare a datelor
C. capacitatea de prelucrare (performanele sistemului de calcul)
D. scopul n care sistemele de calcul sunt utilizate.

19

A. Clasificarea dup tehnologia hardware de realizare

n lumea calculatoarelor se consider c spre deosebire de alte criterii,


clasificarea dup tehnologia de realizare evideniaz clase bine delimitate de
sisteme de calcul (Figura 1.5.) :
Sisteme calcul electro-mecanice
Sisteme de calcul electronice
Sisteme de calcul optice
Sisteme de calcul cuantice.
Sistemele de calcul electro-mecanice au fost construite folosindu-se relee
electromagnetice. Cele mai cunoscute calculatoarele electro-mecanice au
fost cele create de Konrad Zuse n Germania, n timpul anilor 30. Aceste
calculatoare implementau unele concepte avansate de arhitectur i de
funcionare, care se vor regasi mai trziu n arhitectura von Neumann.
Sisteme de calcul electronice au fost construite ncepnd cu anii 40. Se
pot distinge patru generaii de calculatoare electronice :
Generatia I-a, care cuprinde sistemele de calcul construite pe baz de
tuburi electronice
Generatia a II-a, a sistemelor de calcul realizate cu tranzistori
Generatia a III-a, care curprinde sisteme de calcul realizate cu
circuite integrate pe scar mic (SSI) i medie (MSI)
Generatia a IV-a, care a cunoscut (deocamdat) dou etape :
o Perioada anilor 70: sisteme de calcul construite cu circuite
integrate pe scar larg (LSI)
o Perioada anilor 80, 90, 2000: sisteme de calcul construite
cu circuite integrate pe scar foarte larg (VLSI) i
microprocesoare.
Sistemele de calcul optice exist actualmente sub form de prototip sau n
cadrul unor proiecte secrete din domeniul militar. Sunt sisteme construite cu
circuite care funcioneaz pe principii optice sau opto-electronice i folosite
(experimental - cu succes!) pentru procesarea paralel a datelor.
Sistemele de calcul cuantice sunt calculatoare care utilizeaz fenomene ale
mecanicii cuantice pentru prelucrarea datelor. Propriettile cuantice ale
particulelor sunt folosite pentru stocarea datelor.
20

Mecanisme aparinnd mecanicii cuantice sunt aplicate pentru a realiza


procesarea acestor date. Dac la calculatoarele clasice unitatea de masur
cea mai mic pentru informaie este bitul, n cazul calculatoarelor cuantice
aceast unitate este numit qubit.

Sisteme de calcul electro-mecanice


Relee electromagnetice
Sisteme de calcul electronice
Generaia I a (1945)
Logic cablat, tuburi electronice
Generaia a II a (1956)
Logic cablat, tranzistori
Generaia a III a (1960)
Circuite integrate ( ~20 tranzistori per circuit)
Circuite SSI ( 2 10 pori logice per circuit)
Circuite MSI ( 20 100 pori logice per circuit)
Generaia a IV a (1970)
Circuite LSI ( 200 1000 pori logice per circuit)
Memorie EPROM
Circuite n tehnologie CMOS
Generaia a IV a (1980 - 2000 ....)
Circuite VLSI (~100.000 pori logice per circuit)
Microprocesoare (mai mult de un milion de pori logice i
cteva milioane de tranzistori individuali)
Sisteme de calcul optice
Sisteme de calcul cuantice

Figura 1.5. Clasificarea i evoluia sistemelor de calcul n funcie de


tehnologia de realizare.

21

B. Clasificarea dup modelul de prelucrare a datelor

O clasificare consacrat dup modelul de prelucrare a datelor este aanumita taxonomie Flynn. Aceasta ia n considerare gradul de paralelism
n execuia instruciunilor sau n prelucrarea fluxurilor de date i pune n
eviden urmtoarele categorii de sisteme de calcul:
Sisteme de calcul SISD
Sisteme de calcul MISD
Sisteme de calcul SIMD
Sisteme de calcul MIMD
Sisteme de calcul SPMD
Prima categorie cuprinde sisteme de calcul monoprocesor. O caracteristic
comun pentru sistemele MISD, SIMD, MIMD i SPMD este procesarea
paralel a datelor, paralelismul avnd ns aspecte diferite la cele patru
categorii.
Sistemele de calcul de tip SISD (Single Instruction, Single Data stream)
execut la un moment dat o singur instruciune asupra unui singur set de
date.
Sistemele de calcul de tip MISD (Multiple Instruction, Single Data
stream) sunt mai rar ntlnite, fiind special proiectate pentru instalaii sau
medii de activitate unde este necesar redundana n prelucrarea datelor
(vehicule de zbor, centrale nucleare, etc.).
Sistemele de calcul de tip SIMD (Single Instruction, Multiple Data
streams) execut simultan aceeai instruciune asupra unor fluxuri de date
diferite. Un caz particular de procesare SIMD este procesarea vectorial,
n care aceeai instruciune este aplicat asupra unui masiv (array) de date.
Sistemele de calcul de tip MIMD (Multiple Instruction, Multiple Data
streams), instruciuni diferite asupra unor fluxuri de date diferite.
Sistemele de calcul de tip SPMD (Single Program, Multiple Data streams)
sunt o combinaie a celor dou categorii anterioare. Un astfel de sistem
deine mai multe procesoare care execut simultan acelai program (dar din
puncte diferite) asupra unor fluxuri de date diferite.

22

C. Clasificarea dup modelul de prelucrare a datelor i arhitectura

Clasificarea dup modelul de prelucrare a datelor poate fi efectuat i prin


corelare cu arhitectura entitii sau entitilor care realizeaz procesarea
datelor. n acest sens, se pot pune n eviden clase specifice n cadrul a
dou clase generale de sisteme de calcul:
Sistemele multiprocesor
Sistemele multi-computer
C1. Sisteme multiprocesor

Sistemele multiprocesor pot fi clasificate dup criteriul urmtor :


prelucrarea fluxurilor de date n corelare cu modul de acces la memoria
intern. Ca urmare, se pot decela categoriile :
Sisteme de calcul cu prelucrare simetric a datelor (symmetric
multiprocessing - SMP)
Sisteme de calcul cu prelucrare asimetric a datelor (asymmetric
multiprocessing)
Sisteme de calcul cu prelucrare hibrid a datelor.
Prelucrarea simetric a datelor se caracterizez prin faptul c toate
procesoarele prezente n cadrul sistemului de calcul sunt conectate i
partajeaz acelai spaiu de memorare intern. Ca urmare, sub controlul
Sistemului de Operare orice procesor poate executa orice program .
Sistemele SMP au avantajul c pot realiza (prin intermediul Sistemului de
Operare) o distribuire uniform a sarcinii de lucru ntre procesoare, ceea ce
conduce la sporirea general a eficienei activitii de prelucrare a datelor.
Numeroase tipuri actuale de sisteme multiprocesor implementeaz
prelucrare simetric a datelor: serverele i staiile de lucru de capacitate
mic i medie (n arhitecturi hardware Intel XEON i AMD, Sparc, IBM
PowerPC, Apple PowerPC, DEC Alpha, .a.) sau anumite modele din seria
CRAY de calculatoare de mare performan (supercomputere).
Sistemele cu prelucrare asimetric se bazeaz pe modelul arhitectural
NUMA (Non-Uniform Memory Access) la care fiecare procesor posed un
spaiu separat (fizic) de memorie intern precum i magistrale proprii pentru
acces la aceast memorie.

23

Prelucrarea asimetric induce o sporire implicit a performanelor de vitez


de lucru a sistemului, dar poate genera probleme complexe de echilibrare a
ncrcrii de lucru per procesor. Arhitecturile NUMA i prelucrarea
asimetric sunt favorabile atunci cnd sistemul de calcul efectueaz frecvent
aceleai operaii sau activiti de prelucrare (taskuri).
Prelucrarea hibrid (simetric i asimetric) este implementat fie prin
specializarea pe activiti a procesoarelor din sistem, fie prin clusterizarea
(gruparea) procesoarelor. n ambele cazuri, grupuri de procesoare utilizeaz
n comun o zon de memorie intern fr a avea acces la spaiile de
memorie afectate celorlalte grupuri.
Observaie : Modul de prelucrare a datelor n cadrul arhitecturilor
multiprocesor este o consecin a doi factori : arhitectura hardware i
capacitatea Sistemului de Operare de a exploata aceast arhitectur. Nu se
poate discuta de prelucrare simetric sau asimetric la un sistem
multiprocesor fr un Sistem de Operare care s fie capabil s gestioneze
activitile i resursele n sensul dorit.
C2. Sisteme multi-computer

Un sistem multi-computer este o colecie de calculatoare de sine stttoare


interconectate n reea i care coopereaz pentru execuia unor prelucrari de
date. Din punctul de vedere al arhitecturii calculatoarelor care alctuiesc un
sistem multi-computer, se pot distinge dou categorii:
Sisteme multi-computer omogene, la care sistemele din alctuire
sunt de acelai tip hardware i fac parte din aceeai reea; de regul,
aceste sisteme multi-computer sunt utilizate pentru procesare
paralel, fiecare calculator executd un anumit task care ine de o
problem ce trebuie rezolvat de ntregul sistem multi-computer
Sisteme multi-computer heterogene, la care calculatoarele din
alctuire sunt diferite ca tip hardware i ca performane.
Daca se iau concomitent n consideraie modul de cooperare i modul de
conectare a calculatoarelor care fac parte dintr-un sistem multi-computer, se
pot evidenia trei clase principale de sisteme multi-computer :
Sistemele distribuite
Clusterele de calculatoare
Sistemele de tip gril.
24

Sistemele distribuite sunt sisteme multi-computer omogene sau heterogene


la care calculatoarele din compunere pot s coopereze pentru efectuarea
unor prelucrari de date, dar pot s lucreze i complet independent.
Calculatoarele care fac parte dintr-un sistem distribuit pot de asemenea s
foloseasc (s pun) n comun anumite resurse.
Dup arhitectura lor, sistemele distribuite pot fi :
Sisteme distribuite de tip client-server
Sisteme distribuite client server de tip tri sau multi+nivel
Sisteme distribuite de tip punct la punct.
Sisteme distribuite de tip client-server se caracterizeaz prin faptul c
aplicaie care ruleaz pe un calculator client poate emite cereri de servicii
ctre o aplicaie care ruleaz pe un alt calculator avnd statut de furnizor de
servicii (server) n cadrul sistemului distribuit.
Sisteme distribuite client-server de tip tri sau multinivel sunt o
generalizare a celor dinainte : un serviciu solicitat de un calculator client
este divizat ntr-o ierahie de prelucrri care sunt efectuate (secvenial sau
paralel) de mai multe calculatoare server care coopereaz.
Sisteme distribuite de tip punct-la-punct se caracterizeaz prin aceea c
nu posed calculatoare cu un rol prestabilit (de client sau de server).
Efectuarea unui serviciu se face prin conectare direct a calculatorului care
a emis o solicitarea la un calculator din cadrul sistemului multi-computer
care este capabil s efectueze serviciul cerut.
Clusterele sunt sisteme multi-computer omogene. Ele sunt formate din
calculatoare conectate ntr-o reea (local) de mare vitez i care coopereaz
intens la efectuarea prelucrarilor de date, astfel nct sunt vzute n exterior
ca o singur main. Se pot distinge urmtoarele categorii de sisteme cluster
:
Clustere cu noduri redundante
Clustere cu echilibrare a ncrcrii de lucru
Clustere de mare performan.
Clusterele cu noduri redundante sunt astfel alctuite nct fiecare
calculator este dublat de un altul identic care efectueaz aceleai servicii.
Aceast arhitectur permite o cretere a fiabilittii generale a sistemului
multi-computer precum i o minimizare a timpilor de raspuns la cererile de
servicii prin eliminarea punctelor de gtuire.

25

Clusterele cu echilibrare a ncrcrii de lucru sunt alctuite din


calculatoare cu rol diferit : mai multe calculatoare frontale (front-end
systems) preiau i apoi distribuie cererile de servicii ctre calculatoarele de
procesare (back-end systems) care efectueaz aceste servicii.
Clusterele de mare performan realizeaz divizarea prelucrrilor n
vederea execuiei n paralel. Aceste clustere sunt implementate hardware
prin calculatoare de mare capacitate i vitez de lucru, sau printr-un numr
mare de calculatoare personale (PC-uri) legate n reea.
Un exemplu cunoscut de cluster de mare performan este sistemul multicomputer numit Beowulf. Acest sistem este format din PC-uri care ruleaz
Linux i sunt interconectate ntr-o reea de mare vitez, comunicnd prin
protocolul MPI (Message Passing Interface). Acest protocol este special
adaptat pentru calculele tiinifice, deoarece permite aplicaiilor s distribuie
execuia task-urilor pe mai multe calculatoare din cluster, iar apoi s
colecteze i s compun rezultatele acestor execuii.
Sistemele gril (grid) sunt colecii de calculatoare care coopereaz pentru
realizarea unor procesri de date, folosind reeua Internet ca suport.
Sistemele gril se bazeaz pe utilizarea timpului de repaus (idle time) al
calculatoarelor din alctuire pentru a efectua procesri de date care altfel ar
necesita capacitatea de calcul a unui supercomputer. Sistemele gril sunt
formate din resurse heterogene: calculatoare diferite ca tip i configuraie
hardware care aparin unor domenii Internet diferite. Aceste sisteme
implementeaz conceptul de virtualizare a unor domenii diferite ntr-o reea,
pe baza unor standarde deschise. Sistemele gril sunt adesea confundate cu
clusterele, dei exist dou deosebiri importante ntre aceste dou clase de
sisteme multi-computer:
clusterele sunt colecii de sisteme omogene, pe cnd sistemele gril
sunt heterogene i conin de regul calculatoare de tip PC, n diverse
configuraii
sistemele gril cuprind calculatoare aflate n locaii distante, pe cnd
clusterele sunt de formate din calculatoare aflate ntr-un singur loc
(de regul, un centru de calcul).
Din punctul de vedere al tipului de aplicaii pe care le execut, sistemele
gril pot fi:
Sisteme gril de tip computaional
Sisteme gril pentru prelucrare de date.

26

Sistemele gril de tip computaional sunt orientate pe execuia aplicaiilor


de calcul intensiv. Dintre aceste sisteme se remarc cele necrofage
(scavenging systems), care utilizeaza timpul de repaos nocturn sau din
week-end PC-urilor din reea. PC-urile sunt folosite n regim de prelucrare
pe loturi, adic pentru execuia nlnuit a unor colecii de programme
intens computationale.
Sistemele gril orientate pe prelucrare de date realizeaz prelucrarea i
gestiunea unor sisteme de (baze de) date distribuite.
D. Clasificarea sistemelor de calcul dup capacitatea de prelucrare

O clasificare a sistemelor de calcul dup capacitatea de prelucrare (sau dup


performane - vitez i putere de prelucrare, capacitate de stocare a datelor)
poate cuprinde urmtoarele categorii :
Supercomputere
Mini-Supercomputere
Mainframe-uri
Minicalculatoare
Staii de lucru
Calculatoare personale, cu urmtoarele subcategorii :
o Desktop (Calculator personal de birou)
o Laptop (Calculator portabil)
o Tablet digitizoare sub form de notebook
o PDA (Personal Digital Assistant)
o Calculator de buzunar sau calculator sub form de accesoriu
portabil
Aceast clasificare nu stabilete n mod precis limitele fiecrei categorii, dar
este frecvent utilizat pentru plasarea unui sistem de calcul ntr-o anumit
clas, pe baza caracteristicilor sale hardware.

27

1.3. ISTORICUL SISTEMELOR DE OPERARE


Dezvoltarea Sistemelor de Operare este strns legat de evoluia
tehnologiilor de realizare a hardware-ului echipamentelor de calcul. n cele
ce urmeaz se va prezenta istoricul Sistemelor de Operare n corelaie cu
succesiunea generaiilor de calculatoare electronice, de la apariia acestora
pn n epoca actual.
1.3.1. Generaia I-a de calculatoare
Primele calculatoare electronice au fost realizate n cel de-al patrulea
deceniu al secolului al XX-lea. ntre anii 1940 i 1950 Howard Aiken de la
Universitatea din Harvard, John von Neumann de la Institutul de studii
avansate din Princeton, John Presper Eckert i William Mauchley de la
Universitatea Pennsylvania au proiectat i construit calculatoare (numite
atunci maini de calculat) cu tuburi electronice.
Generaia I-a de calculatoare se consider a fi fost ntre anii 1950 - 1955, iar
primul calculator comercializat a fost Univac-1 n anul 1951. Calculatoarele
generaiei I-a erau realizate cu ajutorul tuburilor electronice i aveau o
arhitectur serial. Ele erau realizate n marea lor majoritate dup o
arhitectura von Neumann i erau denumite maini de calcul cu program
memorat, (calculatoare de tip main von Neumann).
Un calculator din generaia I-a era alctuit dintr-o memorie unic pentru
stocarea programelor i instruciunilor, o Unitate Central de Procesare
(format la rndul ei dintr-o Unitate de Control i o Unitate Aritmetico Logic ), dispozitive de intrare-ieire. Caracteristica cea mai important a
acestor calculatoare era execuia secvenial a tuturor operaiilor: citire din
memorie (memory fetch), scriere n memorie (memory store), operaii
aritmetico-logice, operaii de intrare/ieire.
La generaia I-a de calculatore, persoanele care proiectau i realizau
echipamentul de calcul erau n acelai timp utilizatorii i programatorii
acestuia. Programele erau scrise direct n limbajul main (dar n cod binar!)
fiind introduse n memorie i lansate n execuie de la claviatura panoului
frontal al calculatorului. Ulterior au nceput s fie folosite ca suport de
stocare a programelor benzile de hrtie perforat sau cartelele perforate.
28

Caracteristici
Hardware

IBM 701 1951


4 Kcuvinte
32 bii
36 sec
24
ncrctor octal
aritmetic n
Virgul Mobil

Capacitate de memorie
Lungime cuvnt
Durat ciclu de memorie
Set de instruciuni

Software

IBM 704 1954


8 Kcuvinte
32 bii
12 sec
80
+ asamblor
+ linkeditor

Tabela 1. 3. Caracteristici a dou sisteme de calcul din generaia I-a


Introducerea n memorie a programului aflat pe band sau cartele (tot n cod
binar!) se realiza cu ajutorul unui program numit ncrctor de cod
absolut, care plasa programul la adresa de memorie specificat la nceputul
benzii. Programul ncrctor era la rndul su ncrcat manual n memoria
calculatorului, sau adus de pe band perforat cu ajutorul unui
prencrctor cablat (implementat direct prin hardware-ul mainii).
Un mare progres l-a constituit apariia asambloarelor. Asamblorul era
ncrcat n memorie cu ajutorul ncrctorului, iar apoi el citea programul
surs de pe band perforat i genera cod obiect (cod binar absolut) tot pe
band perforat. ncrcarea n memorie a codului binar astfel obinut, n
vederea execuiei, se fcea tot cu ajutorul ncrctorului.Toate aceste
operaii implicau un numr mare de proceduri manuale, ceea ce ducea la o
productivitate foarte mic la lucrul cu calculatorul.
Echipamentele de calcul din generaia I-a erau folosite n special la
realizarea de calcule matematice. Fiabilitatea lor extrem de sczut precum
i modul de operare greoi a mpiedicat rspndirea acestora pe scar larg.
1.3.2. Generaia a II-a de calculatoare
Odat cu realizarea primelor echipamente de calcul cu tranzistori se
marcheaz nceputul unei noi generaii, generaia a II-a de calculatoare.
Calculatoarele devin suficient de fiabile pentru a fi construite i vndute
unor clieni n sperana c acetia vor reui s fac ceva cu ele. Pentru prima
dat apare o distincie clar ntre cei care construiesc un echipament de
calcul i cei care l utilizeaz (programatori i operatori).

29

Caracteristici

Hardware

Capacitate de memorie
Lungime cuvnt
Durat ciclu de
memorie
Set de instruciuni
Alte elemente noi

Software

IBM 709 - 1958


32 Kcuvinte
32 bii

IBM 7090 - 1960


32 Kcuvinte
32 bii

12 sec

2.18 sec

140

189

Adresare indirect
Canale de I/E
independente

+sistem de ntreruperi
+ ceas programabil

Compilator
FORTRAN II

FORTRAN IV
Rutine pentru lucrul n
Dubl Precizie

Tabela 1.4. Caracteristici a dou sisteme tipice din generaia a II-a :


Din tabel se observ apariia unui element hardware nou, canalele de
intrare/ieire. Acestea sunt procesoare separate care fac posibil
desfurarea operaiilor de intrare/ieire paralel i independent fa de
Unitatea Central de Procesare .O consecin imediat este implementarea
sistemului de ntreruperi, care va fi folosit pentru semnalarea terminrii
operaiilor de intrare/ieire sau pentru tratarea unor evenimente interne:
erori, depiri, expirarea unor intervale de timp, .a.
Calculatoarele din generaia a II-a, dei mai fiabile dect cele cu tuburi
electronice, aveau urmtoarele deficiene: erau echipamente extrem de
scumpe, de dimensiuni mari i care necesitau ncperi climatizate pentru a
putea funciona. Din cauza aestor inconveniente ele puteau fi achiziionate
doar de ctre mari companii, de universiti sau de instituii de stat.
Calculatoarele din generaia a II-a efectuau o singur lucrare (job) la un
moment dat. O lucrare reprezinta totalitatea serviciilor solicitate de
utilizator de la echipamentul de calcul. n mod tipic, o lucrare cuprindea un
program surs care trebuia compilat, link-editat i executat. Lucrarea se
prezenta la calculator transpus pe band sau cartele perforate i era citit
de un dispozitiv special numit cititor de cartele. Rezultatele execuiei
lucrrii erau tiprite pe hrtie cu ajutorul unei imprimante. O lucrare (job)
cuprindea nu numai programele surs FORTRAN sau COBOL, ci i cartele
de control care indicau calculatorului genul de activitate care trebuia
efectuat la un moment dat.
30

Activitile de prelucrare erau: compilarea unui program surs i eventual


stocarea codului obiect rezultat ntr-un fiier, ncrcarea n memorie a
codului obiect generat la compilare, editarea de legturi (care implic i
adugarea de module obiect din diverse biblioteci), execuia programului.
Cartelele de control (marcate printr-un caracter special n prima coloan)
erau interpretate de un modul Sistemului de Operare numit monitor de
nlnuiri. Monitorul de nlnuiri poate fi considerat precursorul
interpretoarelor de comenzi moderne.
Aa cum s-a menionatm citirea cartelelor perforate i imprimarea
rezultatelor se realizau prin intermediul unor dispozitive periferice. Aceste
dispozitive erau mult mai lente dect Unitatea Central de Procesare, ceea
ce ducea la apariia unor timpi de ateptare la nivelul Unitii Centrale.
Efectuarea diverselor servicii solicitate n cadrul unei lucrri implic
ncrcarea succesiv a unor programe auxiliare compilator, link-editor,
ncrctor, ceea ce producea un consum suplimentar de timp pentru fiecare
lucrare. n cele din urm, intervalul de timp dintre prezentarea lucrrii la
calculator i preluarea rezultatelor putea s ajung s fie destul de mare, nu
numai datorit duratei prelucrrilor din programe, ci i din cauza
consumurilor suplimentare de timp enumerate anterior.
Deoarece calculatorul era un echipament extrem de scump, s-a ncercat
gsirea unei soluii pentru eficientizarea activitii ntregului sistem, prin
reducerea consumurile de timp. Gruparea lucrrilor n loturi care erau
prelucrate automat, fr intervenia operatorului, a constituit una din aceste
soluii. Acest mod lucru, denumit tratamentul pe loturi de lucrri sau
batch processing, era format din succesiunea urmtoarelor activiti :
lucrrile erau grupate i apoi transferate (cu ajutorul unui calculator
mai mic) de pe cartele pe band magnetic; lucrrile astfel grupate
constituiau un lot de lucrri
banda era transportat apoi fizic la calculatorul care trebuia s
efectueze prelucrrile propriu-zise; n memoria acestuia exist
ncrcat un program special numit monitor rezident (strmoul
Sistemelor de Operare moderne !) care :
o starta execuia lotului
o efectua trecerea de la o lucrare la alta realiznd astfel
nlnuirea automat a lucrrilor; (monitorul cuprindea i un
modul interpretor de cartele de comand, care recunotea
i interpreta cartelele de comanda)
31

pe msur ce lucrrile se executau rezultatele erau scrise succesiv pe


o alta band, numit banda de ieire a lotului
coninutul benzii de ieire era tiprit pe hrtie la un alt calculator,
specializat n transferul band-imprimant.
Automatizarea unor activitilor de nlnuire a lucrrilor i de ncrcare a
modulelor de bibliotec n programe a condus la eficientizarea ntregii
activiti din cadrul echipamentului de calcul.
Alte elemente software specifice generaiei a II-a au fost:
rutinele de bibliotec, care au condus la necesitatea de a dezvolta
programe relocatabile (care puteau fi ncrcate oriunde n
memorie) : la codul obiect relocabil se alipeau rutinele de bibliotec,
iar apoi prin editarea de legturi se crea codul binar absolut
(imaginea memorie a programului)
utilitarele pentru diverse sortri i conversii.
1.3.3. Generaia a III-a de calculatoare
Realizarea primelor circuite integrate la nceputul anilor 60 a nsemnat un
nou avnt n industria calculatoarelor. Apare astfel generaia a III-a de
calculatoare, cu echipamente avnd performane superioare din punct de
vedere hardware i software i cu un raport mult mai bun performane/pre.
Se marcheaz astfel o perioad de rspndire pe scar tot mai mare a
echipamentelor de calcul, att n domeniul tiinific ct i cel comercial.
Cele mai cunoscute calculatoare din generaia a III-a au fost modelele
produse de IBM n seriile 360 i 370. Aceste echipamente erau denumite
main-frame-uri (intr-o traducere aproximativa : calculatoare mari) iar
Sistemele de Operare care au rulat pe aceste echipamente de calcul au fost
produse tot de IBM i se numeau OS/360 respectiv OS/370.
La calculatoarele din generaia a III-a se remarc elementele de noutate :
hardware :
o citirea suprapus a instruciunilor din memorie: anumite faze
ale instruciunii curente se suprapuneau cu cele ale
instruciunii urmtoare
o protecia prin mecanisme hardware a zonele de lucru din
memoria intern, mpotriva acceselor neautorizate

32

software:
o sistem de fiiere on-line pe disc magnetic
o multiprogramarea unitii centrale
o lucrul n timp partajat (time sharing).
Cea mai important noutate din punct de vedere software era
multiprogramarea unitii centrale. Memoria intern era mprit n mai
multe zone, numite partiii, fiecare partiie cuprinznd cte o lucrare (sau o
parte dintr-o lucrare). Pe durata ct una din lucrri atepta terminarea unei
operaii de intrare/ieire, Unitatea Central de Procesare era afectat altei
lucrri, astfel ajungdu-se la o utilizare cvasi-permanent a Procesorului.
Aceasta tehnic de lucru, prin creterea gradului de utilizare al Unitii
Centrale de Procesare, va aduce o optimizare important a activitii
ntregului echipament de calcul. Multiprogramarea Unitii Centrale este un
concept implementat de majoritatea Sistemelor de Operare moderne. Modul
de lucru tipic la un echipament de generaia a II-a poate fi descris astfel :
memoria intern era divizat n mai multe partiii
n fiecare partiie se realiza prelucrarea unui lot de lucrri
fiecare lot de lucrri ce trebuia executat se gsea stocat pe discul
magnetic sub form unui fiier numit fir (tren) de intrare
rezultatele prelucrrii lotului de lucrri se depuneau tot pe discul
magnetic ntr-un fiier ce constituia firul (trenul) de ieire al lotului
ori de cte ori o lucrare se termina ntr-o partiie se ncrca
urmtoarea din lot direct de pe discul magnetic .a.m.d.
Aceast tehnic de lucru care const n tratamentul succesiv al lucrrilor
aflate ntr-un fir de intrare n memoria auxiliar (disc), cu depunerea
rezultatelor ntr-un fir de ieire, a fost denumit spooling (Simultaneous
Peripheral Operation On Line). Folosirea tehnicii de spooling punea n
permanen la dispoziia unitii centrale un tampon de lucru cu un numr
mare de lucrri.
Crearea unui pool de lucrri (o rezerv de lucrri) a implicat
implementarea n cadrul Sistemului de Operare a unor module speciale de
planificare a lucrrilor. De regul, acest gen de planificare era
semiautomat, deci se realiza cu intervenia direct a operatorului uman.
Conceptul de spooling este implementat n mod curent la Sistemele de
Operare moderne.
33

Tot la generaia a III-a de calculatoare a fost implementat tehnic de


partajare a timpului unitii centrale ntre utilizatori conectai on-line
(time sharing) :
mai muli utilizatori puteau s lucreze simultan i direct la
calculator, mprind ntre ei timpul Unitii Centrale de Procesare.
Unitatea Central avea o vitez de lucru suficient de mare pentru a
executa comenzile tuturor utilizatorilor, astfel nct acetia s fie
deranjai unul de prezena celorlali.
partajarea era implementat prin mecanismele Sistemului de
Operare,
lucrul cu utilizatorii se efectua n prim plan (foreground)
simultan se efectuau n fundal (background) prelucrri pe loturi de
lucrri.
Unul din cele mai notabile Sisteme de Operare concepute pentru
calculatoarele din generaia a III-a a fost MULTICS (MULTIplexed
Information and Computing Service), realizat la mijlocul anilor 60.
Sistemul MULTICS i propunea s fie o platform general pentru
implementarea tuturor tipurilor de aplicaii, de aceea a ajuns n cele din
urm s fie extrem de mare i complex. Avnd o fiabilitate sczut, el nu s-a
impus pe pia ca o soluie de Sistem de Operare pentru calculatoarele mari.
Cu toate acestea, MULTICS a introdus numeroase idei noi care au fost
implementate ulterior la alte Sisteme de Operare foarte populare.
Sfritul anilor 60 a marcat apariia unui nou tip de echipament de calcul:
minicalculatorul. Acest nou tip, reprezentat cu succes prin seria de modele
PDP a firmei DEC, a cunoscut rapid o larg rspndire. Minicalculatoarele
erau mult mai ieftine dect calculatoarele mari i erau potrivite pentru a rula
aplicaii din domeniul industrial sau pentru aplicaii mai restrnse.
Dezvoltarea minicalculatoarelor a condus la crearea unor Sisteme de
Operare specifice. Firma DEC, creatoarea seriei PDP, a realizat astfel
Sistemul de Operare RSX-11, care a constituit o adevrat reuit prin
calitile sale: o palet diversificat de servicii oferite utilizatorului,
dimensiune mic, implementarea unei concepii unitare de lucru
perifericele, management de memorie eficace, fiabilitate i robustee.
Conceptele implementate la RSX-11 i-au dovedit viabilitatea n timp i ele
se vor regsi i la sistemul VMS, urmtorul Sistem de Operare creat de
firma DEC pentru echipamente de tip minicalculator.

34

Alt Sistem de Operare scris iniial pentru o platform de tip minicalculator a


fost UNIX. Prima variant de UNIX a fost realizat n anul 1969 pentru un
minicalculator PDP-7. Ken Thompson, creatorul primului sistem UNIX,
participase deja la proiectul MULTICS i a implementat n UNIX concepte
i idei dezvoltate pentru MULTICS.
1.3.4. Generaia a IV-a de calculatoare
La nceputul anilor 70, prin apariia tehnologiei MOS, au fost realizate
circuitele integrate pe scar larg (LSI). Ele au fost folosite n industria
calculatoarelor i astfel s-a marcat nceputul generaiei a IV-a de
calculatoare. Microprocesoarele, ce nglobeaz ntr-un circuit de civa mm
ptrai o putere de calcul egal cu cea a calculatoarelor din primele generaii
au dus la crearea n anii 80 a microcalculatoarelor. Acestea din urm, sub
form de calculatoare personale (PC), au devenit n anii 90 obiecte de
lucru accesibile, prin performanele i preurile lor.
Sistemele de calcul moderne, dei aparin nc generaiei a IV-a, se remarc
prin arhitecturi hardware cu un grad mare de paralelism, prin viteze de
calcul extrem de mari i capaciti de stocare uriae, performane ce nici nu
puteau fi imaginate la calculatoarele din generaiile anterioare.
Sistemele de Operare pentru calculatoarele generaiei a IV-a se pot clasifica
n trei categorii, dup tipul de main pe care ruleaz:
Sisteme de Operare pentru microcalculatoare; iniial, n anii 80, cele
mai rspndite au fost sistemele SFDX i CP/M, iar la nivelul anilor
90 cel mai popular este MS-DOS
Sisteme de Operare pentru minicalculatoare i staii de lucru; dintre
acestea cele mai cunoscute sunt sistemele UNIX, VMS, OS/2
Sisteme de Operare pentru calculatoare de mari, de tip main-frame.
Dintre Sistemele de Operare pentru microcalculatoare o menionare special
trebuie fcut pentru sistemul MS-DOS. El a fost creat de firma Microsoft
pentru echipamente de calcul avnd Unitatea Central construit n jurul
unui microprocesor Intel (8086 i succesorii si 80286, 80386, 80486,
Pentium) sau AMD. Destul de simplu n varianta sa iniial, MS-DOS a fost
perfecionat treptat n versiunile urmtoare, firma Microsoft ncercnd
implementarea unor mecanisme specifice Sistemelor de Operare pentru
minicalculatoare.
35

Rivalul sistemului MS-DOS, respectiv al microcalculatoarelor compatibile


IBM este Sistemul de Operare MACOS al firmei Apple, implementat la
familia de calculatoare personale MacIntosh. Acesta prezint o interfa
grafic cu utilizatorul deosebit de puternic i un mediu de lucru unificat,
ceea ce face ca aceste echipamente de calcul s fie preferate deseori de ctre
utilizatorii neprofesioniti.
Succesorul sistemului MS-DOS a fost Windows, care ruleaz actualmente
pe zeci de milioane de calculatoare personale i care fost mbogit cu un
numr uria de programe de aplicaie pentru cele mai diverse scopuri.
Dotate cu performane deosebite (grafic de nalt calitate, interfee
conviviale, etc.) aceste programe aplicative au contribuit n mod substanial
la popularitatea Sistemului de Operare Windows.
Pentru platformele de tip minicalculator, piaa este dominat n momentul
de fa de UNIX. Trebuie fcut observaia c UNIX este singurul Sistem de
Operare care are versiuni pentru aproape toate tipurile de calculatoare
existente n momentul de fa i constituie deja, prin diversele distribuii
necomerciale un concurent serios pentru Sistemele de Operare Microsoft ce
domin deocamdat piaa microcalculatoarelor, adic sistemelor de calcul
cu procesoare Intel sau AMD.
Anii 90 au marcat i o alt tendin important n domeniul Sistemelor de
Operare: ca urmare a progresului tehnologic i a integrrii echipamentelor
de calcul cu mijloacele de telecomunicaie au aprut reelele de
calculatoare. Consecina a fost realizarea i implementarea unor Sisteme
de Operare n Reea i a Sistemele de Operare Distribuite, ambele
categorii funcionnd pe echipamente de calcul interconectate.

36

2. CONCEPTE SPECIFICE SISTEMELOR


DE OPERARE
2.1. RESURSE N CADRUL UNUI SISTEM DE OPERARE
O resurs este o component din cadrul unui echipament de calcul, care
poate fi utilizat ca o entitate distinct n cadrul unei activiti. Dac se
adopt o clasificare bazat pe consisten atunci se pot evidenia
urmtoarele tipuri de resurse:
resurse fizice, care aparin hardware-ului mainii :
o procesorul central
o memoria intern
o memoria extern
o canalele de intrare/ieire
o dispozitivele periferice
resurse logice (abstracte), care sunt componente ale software-ului
mainii, create ca urmare a activitii Sistemului de Operare :
o fiiere
o biblioteci de programe
o baze de date
o translatoare de programe (compilatoare, asambloare)
o medii de lucru sau de programare
o programe utilitare.
ntr-o abordare funcional, resursele pot fi considerate ca fiind acele entiti
pe care Sistemul de Operare le utilizeaz n vederea efecturii serviciilor
solicitate de programe.
Sistemul de Operare deine mecanisme prin care devine posibil utilizarea
n comun de ctre programe a resurselor fizice i logice. Prin intermediul
acestor mecanisme se asigur :
administrarea i gestionarea resurselor
protecia resurselor
rezolvarea conflictele legate de partajarea resurselor.

37

Administrarea resurselor este efectuat prin prisma unor obiective bine


precizate:
n cazul calculatoarelor medii i mari obiectivul principal este, de
regul, utilizarea n comun resurselor fizice i logice
n cazul calculatoarelor personale se urmrete n principal
asigurarea accesului utilizatorului la informaie, n condiiile unei
gestionari coerente a acestei informaii.
n general, obiectivele urmrite n activitatea Sistemului de Operare sunt
urmtoarele :
minimizarea timpului de rspuns la cererile utilizatorilor
maximizarea factorului de utilizare a resurselor fizice
maximizarea factorului de utilizare a resurselor fizice, cu restricia
c timpii de rspuns nu trebuie s depeasc o limit superioar.
Clasificarea unui Sistem de Operare ntr-o anumit categorie tipologica este
strns legat de obiectivul principal urmrit n cadrul activitii desfurate
de acel sistem. Gestionarea resurselor de ctre Sistemul de Operare se
realizeaz pe baza unei anumite strategii, care stabilete obiectivele
urmrite n activitatea acelui sistem. n acest context, un principiu important
este separaia ntre politici i mecanisme :
mecanismele determin modul n care se va efectua o anumit
activitate
politicile decid ce anume se va efectua, n funcie de obiectivul
urmrit.
Exemplu
ntreruperile date de ceasul intern constituie mecanismul concret
prin care Unitatea Central de Procesare poate fi alocat
programelor n scopul de a se executa
la fiecare ntrerupere de ceas, componenta sistem numit
planificator decide crui program i va fi alocat Unitatea Central
de Procesare, ceea ce este o politic de lucru.

38

2.2. PROCESE
Un procesl este forma sub care se gsete un program n sistem n timpul
execuiei sale. Programul este un obiect static, procesul este un obiect
dinamic, a crui stare se schimba n permanen. La execuii diferite acelai
program poate s aib o evoluie diferit, n funcie de evenimentele externe
care intervin sau n funcie de interaciunile cu utilizatorul.
Orice proces este caracterizat la un moment dat printr-o stare. Starea unui
proces la un anumit moment este descris de urmtoarele elemente:
codul programului din care provine procesul (care este executat ca
proces)
valorile tuturor variabilelor folosite de proces
istoricul apelurilor de funcii (funcii a cror execuie nu s-a
ncheiat nc)
valoarea contorului de instruciuni i a registrului de stare
program
informaiile despre resursele folosite de proces n acel moment.
Practic, pentru a transforma un program ntr-un proces, Sistemul de Operare
trebuie :
s aloce cte o zon de memorie pentru fiecare din elementele
enumerate anterior
s plaseze n contorul de instruciuni adresa primei instruciuni din
codul programului
s plaseze n registrul de stare program (PSW) informaiile privind
modul de execuie al programului (master/slave).
Primele sisteme de calcul permiteau execuia unui singur program al un
moment dat. Programul avea controlul complet asupra sistemului de calcul
i acces la toate resursele acestuia. Sistemele moderne permit ncrcarea
simultan n memorie i execuia concurent (ntreesut) a mai multor
programe. Aceast evoluie a necesitat un control mai puternic din partea
Sistemului de Operare, o mai mare separaie ntre programe i a condus n
cele din urm la apariia conceptului de proces. Procesul este o
abstractizare a noiunii de program.

39

n aceast abordare, Sistemul de Operare poate fi considerat un ansamblu de


procese utilizator i procese sistem. Toate aceste procese se execut n
concuren, multiplexnd Unitatea Central Procesare ntre ele. Comutarea
Unitii Centrale ntre procese este comandat de Sistemul de Operare i ea
se desfoar astfel :
Unitatea Central de Procesare execut la un moment dat
instruciuni aparinnd unui anumit proces
dup un interval de timp trece la execuia de cod aparinnd unui alt
proces, .a.m.d.
pe durata unei secunde, Unitatea Central Procesare execut
secvene de cod provenind din programe diferite, simulnd astfel
prin vitez paralelismul n execuia programelor.
n contextul unui Sistem de Operare care implementeaz multiplexarea
(comutarea repetat) a Unitii Centrale ntre procese, conceptul de stare a
unui proces capt sensul de situaie n care se afla la un moment dat un
proces n cadrul sistemului. n aceast abordare, strile generice n care se
poate afla un proces pe parcursul existenei sale n sistem sunt :
n execuie, situaie cnd codul procesului este executat de Unitatea
Central de Procesare
n ateptare :
o blocat, situaie n care procesul ateapt producerea unui
eveniment
o gata de execuie, situaie n care procesul ateapt s
primeasc resursa Unitate Central pentru a-i continua
execuia ntrerupt anterior datorit epuizrii intervalului de
timp alocat sau altor cauze.
Comutarea repetat a Unitii Centrale ntre procese este o form de
pseudoparalelism n execuia programelor. El nu trebuie confundat cu :
paralelismul real n execuie, care se produce atunci cnd
echipamentul de calcul dispune de mai multe procesoare care
execut simultan programe diferite
paralelismul n lucru, care se refera la activitatea simultan a
unitii centrale, a interfeelor i a dispozitivelor de intrare/ieire n
cadrul unui echipament de calcul.

40

Pseudoparalelismul n execuia proceselor este principiul de baz de


funcionare la Sistemele de Operare cele mai cunoscute : UNIX, Windows
NT, Windows 2000, Windows XP.
Acest model de lucru mai este cunoscut i sub denumirea de
multiprogramare a Unitii Centrale de Procesare. Creatorii Sistemelor
de Operare moderne au reuit s mbunteasc treptat modelul
pseudoparalelismului n execuia programelor, astfel nct aceast activitate
s devin complet transparent pentru utilizatori i s nu influeneze
rezultatele execuiei programelor.

2.3. FIRE DE EXECUIE


Un proces este caracterizat prin spaiul de adrese i resursele pe care le
folosete. n cadrul unui Sistem de Operare exist situaii n care este
necesar ca anumite resurse s fie folosite n comun de mai multe procese
identice. Acest gen de situaii sunt rezolvate prin aplicarea reentranei :
execuia unui proces cu mai multe contoare de instruciuni.
n acest fel un proces se poate multiplic din punct de vedere funcional, dar
exist fizic n memoria intern sub forma unui unic spaiu de adrese.
Crearea i gestionarea unui proces n cadrul Sistemului de Operare necesit
consum de timp i de spaiu de memorie. De aceea, chiar i reentrana
proceselor nu este cea mai economic soluie n cazul n care se dorete
utilizarea n comun a unor resurse de ctre mai multe procese. Cu att mai
mult, reentrana nu poate fi aplicat atunci cnd procesele care trebuie s
utilizeze n comun un grup de resurse nu sunt identice. O soluie posibil
este n acest caz folosirea firelor de execuie (threads).
Un fir de execuie este un sub-proces. Firele de execuie sunt o form de
implementare a multiprogramrii la nivelul intern al unui proces. Cu alte
cuvinte, un proces realizeaz o gestiune a codului propriu dup modelul
aplicat de Sistemele de Operare multiprogramate : anumite poriuni de cod
(funcii) componente ale procesului sunt executate cvasi-simultan, n
intervalul de timp de execuie alocat procesului. n fapt, procesul comut
Unitatea Central ntre mai multe funcii diferite, care formeaz astfel subprocese sau fire de execuie ale sale. Fenomenul nu implic crearea de noi
procese la nivelul Sistemului de Operare, deci se desfoar n condiii de
economie de resurse la nivel general sistem.

41

Observaie :Stiva program, unde se menine istoricul apelurilor de funcii


care nu s-au ncheiat, este mecanismul utilizat pentru crearea firelor de
execuie. n cadrul Sistemului de Operare UNIX, biblioteca de funcii sistem
pune la dispoziia proceselor apeluri sistem care permit deplasarea n
stiv, deci comutarea Unitii Centrale ntre funciile lansate n execuie
ale unui proces.
Un Sistem de Operare care implementeaz fire de execuie se numete
multi-thread. Un fir de execuie mai este denumit i proces cu greutate
mic (light-weight process - LPW). Un fir de execuie are urmtoarele
componente :
contor de instruciuni
ansamblu de regitri
stiv proprie.
Un fir de execuie partajeaz cu alte fire de execuie ale aceluiai proces
seciuni de cod, seciuni de date i resurse ale aceluiai proces. n acest
context, procesul proprietaral firelor de execuie este denumit task, iar un
proces tradiional, sau proces de greutate mare (heavy-weight process HWP) este de fapt un task cu un singur fir de execuie.
Un fir de execuie funcioneaz ca proces. El poate s se gseasc n una din
strile cunoscute: blocat, gata de execuie, n execuie ca i un proces
obinuit. La un moment dat, exist un singur fir de execuie n execuie la
nivelul procesului proprietar. Spre deosebire de procese ns, firele de
execuie nu sunt independente unul fa de cellalt. Un fir de execuie poate
avea acces la orice stiv aparinnd altui fir de execuie din cadrul aceluiai
proces. Protecia ntre firele de execuie ale unui proces nu este necesar,
deoarece ele sunt concepute pentru a coopera i a se asista reciproc.
n cazul gestiunii multi-thread, Unitatea Central este partajat ntre firele
de execuie ale aceluiai task, dar trecerea de la un fir la altul se face fr
comutare de context UC. Trecerea UCP de la un fir de execuie la altul din
cadrul aceluiai task nu nseamn dect comutarea (schimbarea valorilor)
setului de regitri generali. Unele Sisteme de Operare implementeaz
mecanismul de fir de execuie la nivel utilizator prin intermediul unei
biblioteci de nivel utilizator. n acest fel trecerea de la un fir de execuie la
altul ntr-un task se face cu rutinele din aceast bibliotec i nu printr-un
apel sistem, care ar produce o ntrerupere a nucleului Sistemului de Operare.

42

Comutarea ntre fire de execuie la nivel utilizator se face deci fr


intervenia Sistemului de Operare i este n consecin foarte rapid.
Firele de execuie la nivel utilizator sunt avantajoase dac nucleul
Sistemului de Operare este la rndul sau multi-thread. Exist Sisteme de
Operare care implementeaz gestiunea multithread la nivelul nucleului; cele
mai cunoscute dintre acestea fiind OS/2 i Solaris 2.
Eficacitatea firelor de execuie poate fi neleas dac gestiunea multi-thread
este comparat cu gestiunea multi-proces. n cazul Sistemelor de Operare
multi-proces (care execut cvasi-simultan mai multe procese aflate n
memoria intern) fiecare proces funcioneaz independent fa de celelalte,
are propriul contor de instruciuni, propria stiv, propriul spaiu de adrese,
etc.
Acest mod de organizare este util atunci cnd procesele efectueaz
prelucrri relativ independente. n cazul n care este necesar ca aceeai
prelucrare (sau prelucrri care utilizeaz acelai set de resurse) s fie
efectuat de mai multe ori simultan, conceptul de fir de execuie devine
extrem de avantajos. Mecanismul de multi-thread constituie o soluie pentru
problema urmtoare: cum poate fi creat un proces server care s prelucreze
mai multe cereri venite simultan de la procese client..
Exemplu
Un proces server de fiiere care a lansat o operaie de intrare/ieire se
blocheaz i ateapt pn la terminarea acesteia. Performanele sale ar fi
mult ameliorate dac acest server nu ar atepta, ci ar prelua i trata o alt
cerere provenind de la un proces client.
Procesul server de fiiere nu poate fi ns multiplicat din raiuni de
economie de spaiu de memorie. Dac el implementeaz ns gestiunea
multithread, se poate realiza servirea simultan a mai multor cereri de la
procese client, fr a se face risip de memorie.

43

2.4. NTRERUPERI
ntreruperea este un mecanism prin care Unitatea Central de Procesare ia
cunotin de apariia unui eveniment n sistem. Ca urmare a producerii
unui eveniment, procesul care era n curs de execuie este ntrerupt
(suspendat temporar) iar Sistemul de Operare ia n considerare evenimentul
respectiv. Aceast activitate de luare n considerare a unui eveniment aprut
n sistem poart denumirea de tratare de ntrerupere.
Un proces poate fi ntrerupt n timpul execuiei sale din diverse cauze.
Un proces este ntrerupt din execuie :
la ncheierea n sistem a unei operaii de intrare/ieire
la epuizarea intervalului de timp de execuie acordat, n cadrul unui
Sistem de Operare care implementeaz multiprogramarea UCP.
Un proces genereaz el nsui o ntrerupere ca urmare a producerii
urmtoarelor evenimente :
la tentativa de execuie a unei instruciuni inexistente sau interzise
la mprirea la zero sau la depire
la tentativa de accesare a unei zone de memorie interzise sau n cazul
generrii unei adrese invalide de memorie
la execuia instruciunii de lansare a unui apel sistem.
O clasificare generala a evenimentelor care genereaz ntreruperi, mpreun
cu cauza i proveniena acestora este prezentat n tabelul urmtor :
Eveniment
ntrerupere
externa
Excepie
(trap, derut)

Cauza
Exterioar execuiei
procesului curent
Legat de execuia
procesului curent

Apel sistem

idem (generare
explicit)

Proveniena
Apariia unui eveniment extern
asincron
Apariia unei erori sau a unei situaii
excepionale n derularea
procesului
Cererea unui serviciu de la
Sistemul de Operare

Observaie : Termenul generic de NTRERUPERE este adesea folosit


pentru cel trei tipuri de evenimente prezentate n tabela de mai sus.

44

Prin raportare la un proces, ntreruperile care l pot afecta se clasific n:


ntreruperi hardware, generate din cauze externe execuiei procesului
ntreruperi software, generate din cauze interne execuiei procesului.
ntreruperile hardware sunt asincrone fa de execuia proceselor (se produc
la momente de timp nepredictibile) iar cele software sunt sincrone (se
produc ntotdeauna la execuia unei anumite instruciuni aparinnd codului
proceselor).
ntreruperile software pot fi generate de urmtoarele componente hardware:
Unitatea de Management a Memoriei (UMM), n cazul tentativei
unui proces de a accesa o zon de memorie interzis (violare de
zona) sau inexistent
Unitatea Central (UC), n cazul tentativei unui proces de a executa
o instruciune interzis sau inexistente, sau la execuia instruciunii
de lansare a unui apel sistem..
Observaie : UMM este o component hardware care face parte din
microprocesor sau este un circuit separat. Rolul UMM este urmtorul:
n cazul oricrui acces la memorie solicitat de un proces, este
indicat o adres (logic[) care este verificat de UMM
adresa (logic[) este transformat de UMM n adres fizic, conform
unui set de reguli care este sub controlul Unitii Centrale.
Rezultatul este o adres fizica valida sau o eroare (excepie).
Modul de desfurare al unei ntreruperi hardware este urmtorul:
1. dup execuia fiecrei instruciuni, Unitatea Central de Procesare
testeaz un indicator (flag) de prezen ntrerupere
2. prin mecanisme hardware (pornind de la numrul sau codul
ntreruperii) este regsit i apoi plasat pe magistrala de adrese
adresa rutinei de tratare ntrerupere
3. prin mecanisme hardware (i nu programat!) se salveaz automat n
stiva sistem:
valoarea curent a registrului contor de instruciuni (PC)
valoarea curent a registrului de stare program (PSW)
4. adresa rutinei de tratare ntrerupere este ncrcat n contorul de
instruciuni (PC)
5. se execut n continuare codul rutinei de tratare ntrerupere, care
ncepe o secven de salvare a informaiilor referitoare la procesul
ntrerupt.

45

Pentru fiecare tip de ntrerupere care poat fi tratat de Sistemul de Operare


exist o rutin de tratare specifica (interrupt handler). Adresele rutinelor
de tratare ntreruperi sunt meninute intr-un vector de ntreruperi, n
memoria intern i ncepnd de la adresa fizica 0. Se consider c vectorul
de ntreruperi face parte din nucleul Sistemului de Operare.
n general, Sistemele de Operare utilizeaz dou scheme de baz pentru
tratarea ntreruperilor:
un indicator unic este utilizat de toate ntreruperile i n acest caz :
o o rutin generala de tratare ntrerupere este activat la
comutarea de context
o codul ntreruperii, este furnizat prin mecanisme hard n PSW
sau intr-o locaie bine stabilit din memorie
o n funcie de valoarea acestui cod, rutina de tratare apeleaz
procedura de tratare ntrerupere corespunztoare;
nivelul ntreruperii este livrat n funcie de tipul ntreruperii:
o pentru fiecare nivel exist o rutin diferit de tratare
ntrerupere, activat automat la comutarea de context n cazul
apariiei ntreruperii respective
o exist o ordine de prioritate prestabilit a nivelelor
o pe parcursul tratrii unei ntreruperi de nivel superior este
posibil ca s se ntrzie livrarea ntreruperilor de nivel
inferior (mascare sau inhibare a nivelelor inferioare) sau
s se suprime livrarea ntreruperilor de nivel inferior
(dezarmarea nivelelor inferioare).
La apariia unei ntreruperi, indiferent de tipul ei, are loc comutarea de
context a Unitii Centrale de Procesare, adic salvarea informaiilor de
stare a procesului curent (n execuie) i ncrcarea informaiilor necesare
execuiei unui nou proces, care este chiar rutina de tratare a ntreruperii.
Contextul Unitii Centrale de Procesare se refer la:
coninutul contorului de instruciuni (PC)
coninutul registrelor generali
coninutul registrului de stare program (PSW) :
o starea de execuie a procesului curent : n ateptare sau activ
o modul de lucru al procesului curent : master/slave
o mtile pentru ntreruperi specifice procesului curent
informaiile despre zonele de memorie accesibile procesului i
drepturile asociate.

46

Comutarea de context este o operaie indivizibil (nentreruptibil),


executat n cadrul mainii prin mecanisme hardware i software.
La apariia unei ntreruperi Unitatea Central este trecut automat n modul
de lucru master, ceea ce permite executarea tuturor instruciunilor nepermise
n modul slave (instruciuni de intrare/ieire, de schimbare a modului de
lucru, de control al ntreruperilor, etc.).

2.5. APELURI SISTEM


Apelul sistem este un mecanism prin care un program (proces) comunic cu
Sistemul de Operare i solicit diverse servicii acestuia. Apelurile sistem
sunt mecanismele eseniale prin care Sistemul de Operare furnizeaz diverse
servicii proceselor utilizator.
Apelul sistem este similar cu apelul de procedur sau funcie din cadrul unui
program obinuit, cu deosebirea ca procedura i funcia apelat este extern
programului i aparine codului Sistemului de Operare. Numrul i forma
apelurilor sistem variaz de la un Sistem de Operare la altul i
caracterizeaz un anumit Sistem de Operare. n cele mai multe cazuri un
proces execut un apel sistem pentru lansarea unei operaii de intrare/ieire
sau pentru lansarea unei operaii de comunicare cu un alt proces.
Fiecrui apel sistem i corespunde o funcie de bibliotec care execut
trecerea de la procesul utilizator la rutina din cadrul Sistemul de Operare
care va executa serviciul solicitat. Aceast funcie efectueaz pregtirile
necesare activrii rutinei de tratare apel din cadrul Sistemului de Operare ,
astfel nct apelul sistem s apar ca un apel obinuit de procedur.
n general, funcia de bibliotec realizeaz urmtorii pai :
iniiaz apelul sistem, activitate care const din urmtoarele operaii
:
o plaseaza parametrii apelului sistem intr-un loc bine stabilit,
cum ar fi regitrii procesorului sau o structur de date
special pentru transfer parametri.
o execut o instruciune special (TRAP sau EMT -Emulator
Trap-) care invoca Sistemul de Operare.
ncheie apelul sistem prin predarea controlului ctre procesul apelant
transmite codul de retur, o valoare ce indic procesului apelant daca
apelul sistem solicitat s-a desfurat n mod corect sau nu.
47

Execuia unui apel sistem se efectueaz conform urmtoarelor etape:


preia controlul de la procesul apelant prin intermediul funciei de
bibliotec
verific validitatea parametrilor de apel transmii de proces
daca parametrii de apel sunt coreci, execut serviciul solicitat, n
mod supervizor
la ncheierea prelucrrii, plaseaza intr-un registru codul de retur
execut o instruciune RETURN FROM TRAP care pred controlul
funciei de bibliotec ce face trecerea la procesul apelant.
Exemplu
Modul de execuie al unui apel sistem n cadrul unui Sistem de Operare la
care pentru fiecare serviciu ce poate fi solicitat exist o rutin de tratare
distinct numit procedura de serviciu. n acest caz apelul sistem este
executat dup paii urmtori (Figura 2.1.):
Pasul 1, efectuat de funcia de biblioteca corespunztoare apelului sistem,
cuprinde fazele:
controlul este transferat de la procesul apelant la Sistemul de
Operare
execuia apelului sistem se va face n continuare n mod supervizor.
Pasul 2, efectuat de module ale Sistemului de Operare, cuprinde fazele :
rutina general de tratare apeluri sistem examineaz parametrii
apelului i determin pe baza lor ce serviciu a solicitat programul
utilizator
pe baza unei tabele dispecer este determinat adresa procedurii care
va efectua serviciul solicitat de procesul apelant.
Pasul 3, efectuat de module ale Sistemului de Operare cuprinde fazele :
controlul este predat procedurii de serviciu
procedura de serviciu efectueaz prelucrarea solicitat de procesul
apelant.
Pasul 4, efectuat de funcia de biblioteca corespunztoare apelului sistem,
cuprinde fazele:
codul de retur este plasat ntr-un registru sau ntr-o zon special
dedicat
se face comutarea din modul de lucru supervizor n modul utilizator
controlul este redat procesului ce a lansat apelul sistem, iar acest
proces i continu execuia cu instruciunea care urmeaz dup
apelul sistem.
48

Procese
utilizator

Proces apelant

Apel sistem

ili

Sistemul de
Operare

Procedur
de serviciu

Memoria
intern

2
Procedur
principal

Procedur
de serviciu
Tabela
dispecer

Figura 2.1. Paii de execuie ai unui apel sistem.

2.6. SISTEMUL DE FIIERE


ncepnd cu calculatoarele din generaia a II-a Sistemul de Operare va
include un sistem de fiiere on-line pe suport magnetic (disc sau banda)
pentru stocarea i regsirea informaiei. Sistemul de fiiere stocheaz
informaia prin intermediul unor obiecte bine definite numite fiiere.
Un fiier este o colecie de informaii care posed un nume.
Sistemele de fiiere din cadrul majoritii Sistemelor de Operare moderne au
urmtoarele caracteristici :
fiierele sunt grupate (din punct de vedere logic) n directoare
directoarele alctuiesc o structura arborescent
exist un director rdcin de la care pornesc toate directoare
fiecare proces posed un director implicit de lucru, care este
identic cu cel al utilizatorului proprietar al procesului
fiecare fiier are un nume unic - specificatorul fiierului - care
cuprinde numele propriu-zis al fiierului plus poziia s n cadrul
arborelui de directoare (traseul de directoare ce trebuie parcurs n
arbore pn la acel fiier).

49

Pentru a salva (scrie) informaia sau a accesa (citi) informaia dintr-un fiier
acesta trebuie deschis. Deschiderea fiierului se efectueaz prin intermediul
unui apel sistem dedicat. Dac drepturile de acces ale utilizatorului sunt
corespunztoare, Sistemul de Operare rentoarce procesului apelant un
descriptor de fiier (file descriptor sau file handle), care trebuie apoi
folosit n orice operaie care se refera la fiierul respectiv. Descriptorul de
fiier este o valoare numeric, sau un sir de caractere, sau adresa unei tabele.
Prin extinderea conceptului de fiier a fost introdus la unele Sisteme de
Operare (UNIX i MS-DOS) abstractizarea n lucrul cu anumite
dispozitive periferice.
Perifericele care nu au ataat o structur de fiiere, dar pot fi accesate ca un
fiier sunt urmtoarele : imprimanta, ecranul terminalului, tastatura
terminalului, interfeele de reea. Acestea sunt denumite fiiere speciale de
tip caracter i suport operaii de citire i de scriere ca orice fiier obinuit.
Fiierele speciale de tip caracter au un descriptor implicit i sunt alocate
automat la deschiderea oricrei sesiuni de lucru cu sistemul.
Exemplu
n cadrul Sistemului de Operare UNIX, la o sesiune utilizator sunt alocate
automat urmtoarele fiiere speciale de tip caracter :
fiierul de intrare standard (tastatura terminalului sau al staiei de
lucru), descriptor 0
fiierul de ieire standard (ecranul terminalului sau al staiei de
lucru), descriptor 1
fiierul de ieire standard de eroare (ecranul terminalului sau al
staiei de lucru), avnd valoarea descriptorului egala cu 2.
Sistemele de fiiere moderne permit uneori i accesul direct la date.
Perifericele care posed o structur de fiiere (discurile magnetice, floppy
disc, CD-ROM, .a.) pot fi accesate n mod global ca un singur fiier
special de tip bloc.
n acest caz structura de fiiere nu mai este vizibil, accesul fcndu-se
direct la nivel de blocuri fizice de date. Acest mod de lucru este de regul
permis doar utilizatorilor cu drepturi speciale, cum ar fi cei din grupul
administratorului de sistem.

50

3. CLASE DE SISTEME DE OPERARE


Clasificarea Sistemelor de Operare se poate efectua pe baza mai multor
criterii, cum ar fi :
modul de implementare a serviciilor furnizate de Sistem
modelul structural al Sistemului de Operare
modul de acces al utilizatorului la serviciile oferite de Sistem
tipurile de servicii oferite de Sistemul de Operare.

3.1. CLASIFICAREA DUP IMPLEMENTAREA


SERVICIILOR
3.1.1. Nucleul Sistemului de Operare
Clasificarea dup modul de implementare a serviciilor se face prin prisma
localizrii acestor servicii n raport cu nucleul Sistemului de Operare.
Nucleul este componenta principal a oricrui Sistem de Operare. Nucleul
poate fi privit ca o colecie de proceduri de serviciu ce pot fi apelate de ctre
procesele utilizator. n acelai timp, nucleul este un interpretor care ofer
instruciuni (sub form de apeluri sistem) programelor utilizator.
Caracteristicile unui nucleu de Sistem de Operare sunt urmtoarele :
nucleul poate executa pentru procesele utilizator operaii care nu
sunt permise acestora
zona de memorie n care se afl nucleul devine vizibil pentru
procese numai atunci cnd ele invoc serviciile acestuia, n rest fiind
invizibil (inaccesibil) acestora
codul nucleului este reentrant, exist o singur copie a nucleului n
memoria intern, dar el poate fi executat simultan n contextul mai
multor procese.
Nucleul unui Sistem de Operare este rezident n memoria intern pe toat
durata funcionrii acelui sistem. Nucleul se ncarc n memoria intern,
parial sau n totalitate, la boot-area Sistemului de Operare.

51

Exemplu
Sistemului de Operare MS-DOS posed o component a nucleului care se
numete BIOS.
BIOS-ul este o suit de funcii nscrise n memoria intern nevolatil
(ROM) a unui calculator personal. BIOS-ul furnizeaz rutinele de baz
(drivere, funcii de configurare, etc..) pentru comanda i controlul
componentelor hardware ale unui PC.
Nucleul Sistemului de Operare MS-DOS mai cuprinde i alte componente
(stocate n fiierele msdos.sys i io.sys) care se ncarc n memoria intern
volatil (RAM) la boot-area sistemului.
Funciunile nucleului legate de execuia proceselor sunt urmtoarele:
realizeaz controlul execuiei programelor, adic managementul
proceselor
poate asigura execuia simultan a proceselor (multiprogramarea):
o real, atunci cnd exist mai multe procesoare n
echipamentului de calcul
o simulat (time-sharing), atunci cnd echipamentul de calcul
posed un singur procesor (o singur Unitate Central)
poate asigura planificarea proceselor (scheduling-ul) n Sistemelor
de Operare care implementeaz multiprogramarea Unitii Centrale.
Funciunile nucleului legate de gestiunea memoriei sunt urmtoarele:
menine lista zonelor libere i ocupate din memoria intern
menine pentru fiecare proces o list cu zonele de memorie la care
are acces
implementeaz un spaiu virtual de adrese (memorie virtual)
pentru procese, spaiu care este translatat n adrese fizice la execuia
proceselor (address mapping).
Implementarea serviciilor oferite proceselor utilizator, n raport cu nucleul
Sistemului de Operare, se poate realiza astfel (Figura 3.1.) :
n spaiul proceselor utilizator, prin legare la program (proces) a
unor funcii care provin dintr-o bibliotec partajabil de funcii
sistem
n spaiul nucleului, cu accesare prin apeluri sistem; aceste sisteme
se numesc monolitice
n gestiunea unor procese separate denumite procese server; aceste
sisteme se numesc micro-kernel (micro-nucleu).

52

PROCES

PROCES
server

PROCES

PROCES

BIBLIOTEC

NUCLEU

mesaj

NUCLEU

NUCLEU

Figura 3.1. Tipuri de Sisteme de Operare dup modul de implementare a


serviciilor.
Observaie : n general, fiecare Sistem de Operare utilizeaz toate cele trei
moduri de implementare a serviciilor ntr-o msur mai mare sau mai mic.
Plasarea unui Sistem de Operare ntr-o anumit categorie tipologic
(monolitic, micro-kernel, etc..) se face dup modul predominant de
implementare a serviciilor n cadrul acelui sistem.
3.1.2. Sisteme de tip bibliotec de funcii
Un Sistem de Operare de tip bibliotec de funcii plaseaz majoritatea
serviciilor n cadrul bibliotecilor sistem. O astfel de bibliotec este
partajabil, deci poate fi utilizat de toate procesele din sistem. Biblioteca
de funcii sistem este n fapt o colecie de funcii care se pot lega la
programe n dou moduri :
static, la sfritul compilrii unui program (static linking)
dinamic, pe parcursul execuiei unui proces (dynamic linking).
Legarea funciilor de bibliotec la un program (proces) se face o singur
dat i are avantajul eficienei, deoarece la execuie cererea de servicii
devine un apel obinuit de funcie n spaiul procesului, deci se execut cu
vitez mare.

53

Observaie : Codul bibliotecilor partajate care se ncarc dinamic poate s


fie mai ineficient dect codul de program obinuit, deoarece trebuie s fie
PIC (Position Independent Code).
Exemple
1. Sistemul de Operare MS-DOS poate fi considerat de tip bibliotec
de funcii deoarece serviciile solicitate de procese sunt efectuate de
un ansamblu de funcii DOS ( sunt 2 categorii de funcii:DOS,
(apelabile prin INT 021H) i BIOS).Aceste funcii au urmtoarele
caracteristici :
o funcie DOS este un rudiment de apel sistem
funciile DOS sunt eficiente (rapide) pentru c neexistnd
memorie virtual nu exist nici translaie de adrese
apelul funciilor DOS se face prin ntreruperi software (INT
021h) i nu prin plasarea argumentelor pe o stiv.
2. Sistemul de Operare Exokernel este de tip bibliotec de funcii. La
acest sistem nucleul este aproape complet nlocuit :
cu biblioteci de funcii care se pot lega la procesele utilizator
cu maini virtuale pentru rularea diverselor tipuri de aplicaii.
3. Sistemul de Operare Windows NT, dei este considerat de tip microkernel, plaseaz serviciile cele mai frecvent solicitate ntr-o
bibliotec sistem.
3.1.3. Sisteme monolitice
Sistemele de Operare care plaseaz majoritatea serviciilor n cadrul
nucleului sunt considerate de tip monolitic. Nucleul acestor sisteme are
urmtoarele trsturi caracteristice :
este relativ inflexibil; greu de modificat
asigur o separaie net ntre spaiul propriu de adrese i cel al
proceselor utilizator
exercit un control strns al operaiilor efectuate de procese i
impune respectarea politicilor de alocare resurse.
Urmtoarele componente ale unui nucleu de Sistem de Operare monolitic
sunt utilizate pentru efectuarea serviciilor (Figura 3.2.) :

54

procedura (rutina) principal, care preia orice apel sistem i


detecteaz care este procedura (modulul sistem) care va efectua
serviciul solicitat de procesul apelant
setul de proceduri de serviciu care execut apelurile sistem
setul de proceduri utilitare care sunt folosite de procedurile de
serviciu.
Procedur principal

Procedur
de serviciu

Procedur
utilitar

Procedur
de serviciu

Procedur
utilitar

Procedur
utilitar

Procedur
de serviciu

Procedur
utilitar

Procedur
de serviciu

Procedur
utilitar

Figura 3.2. Structurarea serviciilor n cadrul nucleu monolitic.


Exemple
Cele mai cunoscute Sisteme de Operare de tip monolic sunt : sistemele
UNIX, Windows 95, RSX ,VMS
Sistemele de Operare din familia UNIX constituie exemple tipice de sisteme
cu nucleu monolitic. Categoriile de servicii oferite de un nucleu UNIX sunt
:
servicii legate de gestiunea proceselor :
o depanarea i msurarea (profiling) proceselor
o planificarea i execuia proceselor
o comunicaia inter-procese prin conducte, semnale, memorie
partajat, semafoare, mesaje
servicii legate de gestiunea resurselor :
o accounting (contabilizarea utilizrii resurselor)
o tarifare dup consumul resurselor
servicii legate de gestiunea memoriei virtuale i de alocarea
/eliberarea memoriei
servicii legate de protecie i securitate.

55

Pe lng aceste servicii, care sunt furnizate de orice tip nucleu, sistemele
UNIX includ n nucleu i alte servicii suplimentare. Acest lucru conduce la
plasarea sistemelor UNIX n categoria celor monolitice. Aceste servicii
suplimentare sunt :
managementul perifericelor i operaiile cu fiierele
protocoale de comunicaie n reea (ex: TCP/IP)
timere, alarme i legarea dinamic.
3.1.4. Sisteme de tip micro-kernel
Un Sistem de Operare care posed un nucleu de tip micro-kernel (micronucleu) se caracterizeaz prin urmtoarele trsturi :
nucleul furnizeaz un minim de servicii proceselor, i are
dimensiune redus
marea majoritate a serviciilor sunt asigurate de procese server,
care ndeplinesc solicitrile unor procese client
comunicaia ntre procesele server i procesele client se face prin
mesaje, prin intermediul nucleului Sistemului de Operare
modul n care un serviciu este invocat de ctre client este trimiterea
unui mesaj ce este interceptat i direcionat de nucleul Sistemului de
Operare ctre un server
comunicaia inter-procese este eficient i flexibil.
Un proces server i desfoar activitatea dup un ciclu de mai muli pai :
ateapt n starea blocat cereri de la clieni
la apariia unei cereri creeaz un fir de execuie, cruia i paseaz
mesajul primit spre prelucrare de la client
firul de execuie decodific mesajul, execut operaia cerut,
rspunde i se ncheie.
Un proces server din cadrul unui Sistem de Operare micro-kernel poate
executa mai multe cereri simultan. Acest proces nu va consuma resurse
deoarece n intervalele de ateptare el este n starea blocat. Se pot enumera
principalele avantaje ale Sistemelor de Operare de tip micro-kernel:
modularitate : interaciunea inter-procese se face prin interfee bine
precizate (mesaje), i nu prin variabile globale, ceea ce asigur
consistena codului nucleului

56

scalabilitat: pot fi adugate servere pentru servicii suplimentare


distribuire facil: nu conteaz pe ce main se afl serverul apelat de
procesul client
adaptabilitate: serverele pot fi adugate n funcie de necesitile
aplicaiilor care vor rula pe maina respectiv.
Pe de alt parte, dezavantajele arhitecturilor micro-kernel sunt :
costul serviciilor este ridicat deoarece sunt necesare prea multe
apeluri sistem pentru manipularea mesajelor cu mpachetarea i
despachetarea argumentelor mesajelor
mesajele sunt copiate de mai multe ori nainte de a fi livrate.
Sisteme de Operare distribuite

Un Sistem de Operare distribuit este un ansamblu de Sisteme de Operare de


tip micro-kernel care ruleaz pe echipamente de calcul interconectate n
reea. Aceste Sisteme de Operare micro-kernel ruleaz procese server care
pot fi apelate de pe oricare alt main din reea.
Lansarea unei cereri de servicii de la un client ctre un proces server se
poate face prin mecanismul denumit RPC, apel de procedura la distan
(Remote Procedure Call).
Un apel de procedur la distan este de fapt o lansare n execuie efectuat
de un proces client a unei proceduri (funcii) care aparine unui proces
server localizat pe o alt main din reea. Procedura este lansat n scopul
de a efectua un anumit serviciu pentru procesul apelant (client). Apelurile de
procedur la distan funcioneaz dup urmtoarele principii :
se face localizarea (binding-ul) serverului care ofer serviciul
sunt construite automat funciile de manipulare mesaje pentru client
i server (numite stubs) pe baza specificaiilor oferite de server
pentru procedur apelat.
Stub-urile sunt funcii apelate de procesul client i de procesul server i
sunt generate de compilatoare din descrierea interfeei lor (tipul
argumentelor i al rezultatelor cerute). Aceste funcii realizeaz:
mpachetarea argumentelor procedurii ntr-un mesaj (marshalling)
trimiterea mesajul astfel creat
despachetarea (demarshalling) rspunsului la recepia unui mesaj.

57

SERVER

CLIENT
11

1
5

4
3
8

10
STUB

STUB

1. clientul cheam stub-ul


2. mpachetare (marshalling)
3. stub-ul client trimite mesaj
4. despachetare (demarshalling)
5. apelul procedurii n server
6. execuia procedurii n server
7. procedura serverului se
ntoarce
8. stub-ul mpacheteaz
rezultatele
9. rezultatele sunt transmise la
client
10. stub-ul client despacheteaz
11. stub-ul client se ntoarce

Figura 3.3. Etapele unui apel de procedur la distan.


Windows NT - un Sistem de Operare de micro-kernel

Windows NT este un Sistem de Operare de tip micro-kernel (micro-nucleu)


avnd particulariti arhitecturale i de funcionare :
serverul de ecran, care se ocupa de grafic i afiare face parte din
nucleul sistemului
serverul Win95 (pentru rularea aplicaiilor Windows 95) face parte
din nucleul sistemului
comunicaia ntre procesele server i cele client se face prin tehnica
LPC (Local Procedure Call) care este un apel RPC simplificat
pentru dou procese rulnd pe aceeai main.
Apelul de procedur local LPC se caracterizeaz prin faptul c este
eliminat conversia datelor i este evitat copierea argumentelor de
dimensiune mare (fenomen care duce la risip de timp i spaiu), prin
folosirea unor zone de memorie partajate. Procesul client depune datele n
zona partajat, transmind procesului server adresa i descrierea acestei
zone. Prin intermediul nucleului Sistemului de Operare Windows NT, zona
partajat devine vizibil pentru procesul server, care prelucreaz datele
stocate aici de client. La ncheierea prelucrrilor zona partajat devine din
nou invizibil pentru procesul server, iar clientul poate accesa i utiliza
aceste date.

58

O alt particularitate a Sistemului de Operare Windows NT este utilizarea


prealocrii de resurse. Prin aceast tehnic este creat un fir de execuie
special n cadrul serverului pentru fiecare client foarte activ. Acest fir care
va executa numai cererile clientului respectiv i va supravieui ct timp
acel client este activ (firul nu mai este distrus dup efectuarea unui anumit
serviciu). O zon de memorie partajat este alocat permanent pentru client
i pentru firul de execuie de pe server care lucreaz cu acel client, i ca
urmare operaiunile de gestionare memorie sunt simplificate. n completare,
un ntreruptor software, numit pereche de evenimente (event-pair), este
alocat ntre cele dou procese, client i server, pentru a se realiza
semnalizarea reciproc.
Aspecte de implementare ale arhitecturilor micro-kernel

Sistemele de Operare de tip micro-kernel plaseaz majoritatea serviciilor n


cadrul unor procese externe, procesele server. Acest mod de lucru are ca
implicaie principal simplificarea activitii de gestiune a proceselor
nivelul nucleului. Ca fenomen negativ se constat o anumit fragmentare a
serviciilor : un serviciu oferit n mod tradiional de nucleu este adesea
compus din mai multe servicii oferite de servere diferite. Aceast
fragmentare conduce la creterea timpului de rspuns pentru o cerere de
serviciu venit de la un client. Creterea timpului de rspuns este cauzat i
de faptul c mesajele trebuie s treac mai multe granie n deplasarea lor
de la client la server i invers.
n cazul sistemului Windows NT, care posed o arhitectur micro-kernel
tipic, se ncearc recuperarea eficienei prin plasarea unor servicii mai des
solicitate direct n nucleu. Acest lucru d sistemului Windows NT o anumit
caracteristic de monolit. Pe de alt parte, ideea de a folosi procese server
exterioare nucleului este implementat n cazul unor sisteme monolitice
cunoscute cum ar fi UNIX, care ruleaz mai multe servere :
serverul NFS, pentru accesul fiierelor la distan
super-serverul inetd, care poate porni la cerere alte servere :
o servere de acces la distan : telnet, rlogin, rsh, rexec
o servere de pot electronic : smtp, uucp
serverul de transfer fiiere : ftp i serverul WWW
serverul de nume named , serverele de raportare erori syslogd,
klogd
serverul de ferestre X Windows.
59

3.1.5. Amplasare a serviciilor sistem cteva concluzii


Toate cele trei modele de plasare a serviciilor sistem prezentate anterior
rezolv ntr-un fel particular urmtoarele dou probleme :
Ce resurs se aloc unui proces n vederea satisfacerii unei cereri de
servicii : o funcie de bibliotec, un modul al nucleul Sistemului de
Operare sau un proces server ?
Unde trebuie plasat un serviciu? (nsuirile unui serviciu depind n
mod esenial de plasarea sa) : n cadrul unei biblioteci de funcii
sistem, n cadrul nucleului Sistemului de Operare sau n cadrul unui
proces server ?
Pornind de la soluiile adoptate pentru rezolvarea celor dou probleme, se
pot nota i alte diferene dintre arhitecturile de tip bibliotec de funcii i
cele monolit, pe lng cele evideniate n seciunile anterioare. Aceste
diferene se refer la :
durata de via a informaiei : anumite informaii de interes nu pot
supravieui la ncheierea unui proces, n cazul bibliotecilor de funcii
sigurana informaiei : informaiile globale din sistem sunt mai
bine meninute de nucleul Sistemului de Operare, care
supravieuiete tuturor proceselor utilizator.
Att Sistemele de Operare monolitice ct i cele de tip micro-kernel
utilizeaz procese server pentru a rezolva cereri de servicii venite de la
procesele utilizator. Cu toate acestea, exist diferene ntre sistemele
monolitice i cele micro-kernel, n ceea ce privete utilizarea serverelor
distribuite n reea. Aceste diferene se refer la :
sigurana gestionrii cererilor :
o un nucleu monolit, dac este operaional, rspunde
ntotdeauna la cererile de servicii ale proceselor
o un micro-nucleu nu garanteaz c un server va rspunde la o
cerere de servicii, atunci acesta se gsete pe alt main
dect clientul care a emis cererea;
legitimitatea cererilor de servicii: la sistemele micro-kernel cu
servere distribuite n reea trebuie adugat un mecanism de verificare
a identitii clientului care a lansat o cerere, lucru ne-necesar n
cazul sistemelor monolit.
60

3.2. CLASIFICAREA DUP MODELUL STRUCTURAL


Acest mod de clasificare ia n consideraie arhitectura general a Sistemelor
de Operare. Cteva clase de Sisteme de Operare care se pot evidenia dup
acest criteriu sunt urmtoarele :
Sisteme de Operare slab-structurate
Sisteme de Operare ierarhizate
Sisteme de Operare de tip main virtual
3.2.1. Sisteme de Operare slab structurate
Sistemele de Operare slab structurate nu prezint o organizare intern bine
conturat, n sensul de grupare a componentelor sistemului sau ale nucleului
pe niveluri funcionale clar delimitate
Cele mai cunoscute sisteme din aceast clas sunt MS-DOS i UNIX. n
cazul ambelor Sisteme de Operare se poate evidenia o anumit structurare
la nivel general sistem. La nivelul nucleului ns, sistemul MS-DOS este
nestructurat iar sistemele UNIX prezint a structur destul de simpl.
Sistemul de Operare MS-DOS se caracterizeaz printr-un model de
organizare intern care permite programelor de aplicaie s aib acces la
nivelul rutinelor de intrare/ieire de baz.
Cu alte cuvinte, un program de aplicaie poate s acceseze n mod direct o
resurs (disc, memorie video, etc..) fr a mai invoca nucleul sistemului MsDOS (Figura 3.4.). Acest fenomen a fcut Sistemul de Operare MS-DOS
extrem de vulnerabil la erorile de programare i/sau la viruii informatici.
Observaie : Accesul programelor de aplicaie la componentele de baz ale
sistemului MS-DOS este o consecin a permiterii accesului la hardware-ul
Sistemului de Calcul. Anumite microprocesoare din familia 80x86 nu au
permis implementarea celor dou moduri de lucru, master i slave, care
difereniaz contextul de execuie al modulelor sistem de cel al programelor
de aplicaie. Reamintim c sistemul MS-DOS ruleaz pe maini avnd
Unitatea Central construit n jurul unui microprocesor 80x86.

61

Programe de aplicaie
Nucleu rezident
Drivere MS-DOS
Drivere ROM-BIOS
Sistem de Operare

Figura 3.4. Structura general a sistemului MS-DOS.


Sistemele de Operare din familia UNIX constituie un alt exemplu de
organizare intern limitat. Un sistem UNIX este alctuit din urmtoarele
componente principale (Figura 3.5.)
nucleu
interfaa pentru apeluri sistem
biblioteca de funcii sistem.
Programe
utilitare

shell (interpretoare de comenzi)


compilatoare
biblioteca sistem
interfaa pentru apeluri sistem

Nucleu

semnale
gestiunea
terminalelor
I/E n mod
caracter
drivere de
terminal

gestiunea fiierelor
swapping

planificarea UC
gestiune pagini

I/E n mb bloc

memorie virtual

drivere de disc i
band

drivere de
memorie

Sistem de
Operare

Figura 3.5. Organizarea intern a unui Sistem de Operare UNIX.


Nucleul unui sistem UNIX este format din tot ce se afl direct deasupra
hardware-lui mainii. El conine o multitudine de module negrupate anumit
ierarhic, dar exist un nivel de baz format din driverele care lucreaz direct
cu interfeele fizice. Acest mod de organizare nu este totui valabil pentru
orice sistem din familia UNIX : sistemul UNIX IBM, AIX posed un nucleu
separat n mai multe niveluri.
62

3.2.3. Sistemele de operare ierarhizate


Sistemele de Operare ierarhizate propun o soluie de modularizare prin
gruparea componentelor sistemului pe mai multe niveluri structurale.
Un nivel este o ncapsulare a unor structuri de date i a unor operaii ce se
pot efectua asupra acestor date. Fiecare nivel este construit pe baza celui
inferior lui i este alctuit dintr-un set de rutine care furnizeaz servicii
nivelului imediat superior. n acest fel, un nivel cunoate serviciile furnizate
de nivelul inferior, fr s cunoasc modul de implementare a acestora.
Primul Sistem de Operare ierarhizat pe nivele a fost THE, realizat i
implementat de E.W. Dijsktra i de elevii si la Universitatea Eindhoven din
Olanda n anul 1968 (Figura 3.6.).
Nivelul 5
Nivelul 4
Nivelul 3
Nivelul 2
Nivelul 1
Nivelul 0

Programele utilizator
Gestiunea operaiilor de intrare/ieire
Comunicaia cu consola sistem
Gestiunea memoriei
Multiprogramarea Unitii Centrale
Hardware (maina fizic)

Figura 3.6. Structura Sistemului de Operare THE.


La sistemul THE funciunile i rolurile nivelurilor au fost urmtoarele :
reprezinta maina fizic
Nivelul 0
coninea modulele pentru multiprogramarea UCP i
Nivelul 1
realizarea planificrii proceselor (dup un algoritm bazat pe prioriti),
precum i pentru sincronizarea proceselor prin semafoare.
coninea modulele de gestiune ale memoriei i implementa
Nivelul 2
memoria virtual i de swapping-ul (evacuare/rencrcate pagini pe disc).
cuprindea modulele de comunicaie procese-consol operator.
Nivelul 3
realizea gestiunea operaiilor de intrare/ieire. Schimburile de
Nivelul 4
informaie ntre procesor i dispozitive se efectua prin intermediul
tampoanelor (buffers). Deasupra acestui nivel dispozitivele periferice
apreau programelor utilizator ca dispozitive abstracte cu care se puteau
efectua operaii logice de transfer de date.
coninea programele aplicative ale utilizatorilor
Nivelul 5
63

Un alt exemplu clasic de sistem ierarhizat a fost Sistemul de Operare


MULTICS. Acest sistem a fost dezvoltat la sfritul anilor 60 n cadrul
laboratoarelor Bell i a fost implementat pe un model de calculator de
generaia a III-a produs de General Electrics.
Sistemul de Operare MULTICS organizat logic ca o colecie de inele
concentrice la care nucleul formeaz inelele interioare iar procesele
utilizatorilor alctuiesc nveliul exterior.
Cteva caracteristici notabile ale sistemului MULTICS:
Sistemul de Operare era vzut n cadrul proceselor utilizator ca parte
din spaiul propriu de adrese
pentru prevenirea acceselor neautorizate exist mecanisme hardware
de protecie la citirea, scrierea i execuia segmentelor de memorie
ierarhizarea proceselor pe nivele exist i n cadrul programelor
utilizator
apelul unei proceduri de nivel inferior se face printr-o instruciune
TRAP (deci printr-o ntrerupere) cu transmitere de parametri.
Arhitectura modularizat a sistemului MULTICS a facilitat dezvoltarea i
depanarea mai rapid a acestui sistem.
Dezavantajele sistemului MULTICS au fost ns mai multe :
dificultate n definirea adecvat a coninutul fiecrui nivel, astfel
nct s existe un optim n funcionarea Sistemului de Operare
apelurile sistem erau lente deoarece la execuia unui apel sistem era
necesar parcurgerea succesiv a mai multor niveluri pn la gsirea
modulului care efectua serviciul solicitat de procesul apelant;
parcurgerea unui nivel ducea de fiecare dat la suprancrcarea
apelului sistem.
Aceste dezavantaje au fost sesizate la toate Sistemele de Operare ierarhizate
pe niveluri, ceea ce a provocat un recul n implementarea acestui model.
Dintre Sistemele de Operare moderne, OS/2 dezvoltat de IBM posed o
structur intern bazat pe nivele ierarhice.

64

3.2.4. Sisteme de Operare de tip Main virtual


Maina Virtual este un model arhitectural care se bazeaz pe ideea c
multiprogramarea Unitii Centrale poate fi separat de celelalte activiti
ale unui Sistem de Operare. Un Sistem de Operare de tip main virtual se
numete Monitor de main virtual.
Monitorul de main virtual este un nucleu minimal de Sistem de Operare
care poate furniza mai multe copii ale mainii fizice. Aceste copii au fost
denumite maini virtuale. Fiecare main virtual trebuie s fie capabil s
simuleze sistemul de tratare ntreruperi precum i modurile de lucru
supervizor i utilizator care se ntlnesc la orice nucleu. Teoretic, o main
virtual poate s ruleze orice alt nucleu de Sistem de Operare, care se va
prezenta utilizatorilor ca o main extins dotat cu sistem de fiiere i cu
toate celelalte faciliti obinuite. .
Primul Sistem de Operare de tip monitor de main virtual a fost VM370,
realizat de o echip de la Centrul de cercetare IBM de la Cambridge n anul
1970. Acest sistem furniza mai multe copii ale hardware-ului mainii i
simula existena pe acelai calculator a mai multor Uniti Centrale lucrnd
simultan i separat. Pe aceste copii ale mainii fizice rulau mai multe
sisteme CMS. Sistemul de Operare CMS a fost produs de IBM i este un
sistem monoutilizator interactiv
Maini virtuale IBM 370

Aplicaii
utilizator

Aplicaii
utilizator

Aplicaii
utilizator

Sistem de Operare Sistem de Operare Sistem de Operare


CMS
CMS
CMS
Monitor de maina virtual VM/370
Maina fizic IBM 370

Figura 3.7. Arhitectura unui Sistem de Operare de tip main virtual.


65

Dup o perioad n care a fost abandonat, n ultimii ani modelul de main


virtual a fost revitalizat sub forma unor sisteme software dedicate rulrii
unor Sisteme de Operare sub alte sisteme (VMware).
Exemple
Unii productori de minicalculatoare din anii 90 (Sun Microsistems sau
Digital Equipment), au implementat maini virtuale Intel (care simuleaz
funcionarea unui procesor Intel 80x86) pentru permite rularea aplicaiilor
MS-DOS i Windows pe platformele proprii.
Maina virtual Java este un alt exemplu de sistem software care permite
rularea de cod executabil (byte-cod) pe diferite platforme hardware.

3.3. CLASIFICAREA DUP MODUL DE ACCES LA


SERVICII
Modul de acces servicii se refer la felul n care utilizatorul pune n lucru
(are acces la) serviciile oferite de un Sistem de Operare. Din punct de
vedere istoric se pot distinge dou categorii de Sisteme de Operare :
Sisteme de Operare cu prelucrare pe loturi
Sisteme de Operare interactive.
3.3.1 Sisteme de Operare cu prelucrare pe loturi
Acestea au fost primele Sisteme de Operare utilizate pe scar larg. Ele se
caracterizeaz prin faptul c utilizatorul era complet izolat de sistem.
Intervalul de timp ntre predarea unei lucrri i primirea rezultatelor putea fi
foarte mare, n mare parte datorit combinaiei de proceduri automate i
manuale de pe fluxul parcurs de lucrare n sistem (Figura 3.8.).
2

1
Receptie lucrri
Eliberare rezultate

Introducere
lucrare ntr-un
lot de lucrri

3
4

Execuie
lucrare

Imprimare
rezultate
Sistem de calcul

Figura 3.8. Fluxul de execuie al unei lucrri.


66

Fluxul parcurs de o lucrare n sistem era alctuit din mai multe etape:
Etapa 1 era prezentarea lucrrii pe cartele sau suport magnetic la oficiul de
recepie/predare
Etapa 2 const din introducerea lucrrii ntr-un lot aflat sub form de fiier
pe disc; acest fiier era apoi prelucrat prin spooling
Etapa 3 const din execuia lucrrii (conform unei planificri automate sau
manuale)
Etapa 4 const din imprimarea rezultatelor din fiierul de ieire al lotului
Etapa 5 const din predarea rezultatelor lucrrii utilizatorului.
Prelucrarea pe loturi exist sub forma fiierelor de comenzi la i la
Sistemele de Operare moderne. Scripturile utilizate n cadrul unor Sisteme
de Operare sunt de fapt secvene de comenzi care se execut cu nlnuire
automat ca i lucrrile dintr-un lot.
3.3.2. Sisteme de Operare cu acces interactiv
Aceste sisteme permit interaciunea direct a utilizatorului cu calculatorul.
Prin intermediul unor terminale sau staii de lucru sunt emise (n mod grafic
sau alfanumeric) comenzi ctre Sistemul de Operare. Comenzile sunt
executate ntr-un timp convenabil, timpul de rspuns al Sistemului de
Operare este suficient de mic pentru a crea impresia de execuie instantanee.
Unele Sisteme de Operare privilegiaz un anumit terminal, care joac rolul
de consol sistem. De la consola sistem se demareaz Sistemul de Operare
i tot aici sunt afiate mesaje de interes general (mesaje de stare sistem,
mesaje de eroare, avertismente, etc.).

3.4. CLASIFICAREA DUP TIPUL DE SERVICII


OFERITE DE SISTEM
Aceast clasificare ia n considerare facilitile oferite de Sistemul de
Operare pentru dezvoltarea i rularea aplicaiilor. Pe baza acestui criteriu
pot fi decelate dou mari clase de Sisteme de Operare :
Sisteme de Operare de multiprogramate
Sisteme de Operare de timp real.

67

3.4.1. Sisteme de Operare multiprogramate


Sisteme de Operare multiprogramate permit execuia cvasi-simultan a
mai multor programe (procese) i/sau lucrul interactiv cu mai muli
utilizatori. Simultaneitatea este simulat prin comutarea UCP ntre procese.
Deoarece viteza de lucru a procesoarelor actuale este de ordinul milioanelor
de operaii pe secund, comutarea este transparent pentru utilizatorii
interactivi, care percep sistemul de calcul ca pe o main care le este alocat
individual.
Sistemele care implementeaz multiprogramarea UCP se clasific n :
Sisteme de Operare multitasking-monouser, care permit execuia
(cvasi) simultan a mai multor programe i lucrul cu un singur
utilizator interactiv; cele mai cunoscute sisteme din aceast categorie
sunt : Windows 95, Windows 98, Windows NT, Windows XP,
sistemele MAC OS, etc..
Sisteme de Operare multitasking - multiuser care permit execuia
(cvasi) simultan a mai multor programe i lucrul simultan cu mai
muli utilizatori interactivi; cele mai cunoscute sisteme din aceast
categorie sunt : sistemele UNIX, VMS, OS/2, .a.
Sistemele de Operare multiprogramate nu permit evaluarea precis a duratei
de execuie a unui proces, aceast durat depinznd de incrcarea sistemului
la momentul execuiei. Ca urmare, aceste sisteme nu sunt adecvate pentru
rularea aplicaiilor cu restricii de timp. Dei cele moderne pun la dispoziia
programelor anumite servicii pentru gestionarea timpului, se consider c
aceste Sisteme de Operare nu sunt adecvate pentru rularea aplicaiilor n
care restriciile de timp sunt importante.
Sistemele de Operare multiprogramate sunt cele mai rspndite deoarece
permit dezvoltarea i rularea unei game largi de aplicaii din domeniul
tiinific, tehnic, economic, financiar, etc. Aceste sisteme sunt considerate
Sisteme de Operare de uz general.

68

3.4.2. Sistemele de Operare de timp real


Sistemele de Operare de timp real permit dezvoltarea i rularea
aplicaiilor care funcioneaz n cadrul unor limite de timp bine precizate.
Pentru a satisface aceste cerine, sistemul pune la dispoziia programelor
faciliti avansate pentru gestionarea timpului i a evenimentelor.
Sistemele de Operare de timp real ruleaz, de regul, pe calculatoare
implicate nemijlocit n funcionarea unor instalaii tehnologice. La aceste
sisteme limitele de timp pentru efectuarea interaciunilor aplicaiilor cu
instalaiile industriale supravegheate sau comandate sunt stricte i sunt
dictate de natura procesului tehnologic.
Sistemele de Operare de timp real ruleaz pe calculatoare care sunt
conectate la procesul tehnologic prin intermediul unor interfee
specializate : convertoare (numeric-analogice, analog-numerice), interfee
pentru intrri numerice, ieirii numerice, .a. Sistemul de Operare trebuie s
posede n acest caz modulele (drivere-le) pentru controlul acestor interfee.
Aplicaii de supervizare
i conducere procese

Traductor
Traductor

Proces
tehnologic

Sistem de Operare
de timp real

Proces
tehnologic

CAN

Maina fizic
N

EN

Semnale de la
procesul
tehnologic

CNA

Traductor
Traductor

Comenzi ctre
procesul
tehnologic

Figura 3.9. Structura unui sistem de calcul pentru conducere procese


Sisteme de Operare de timp real rigid

Aceste Sisteme de Operare garanteaz efectuarea prelucrrilor critice ntr-un


timp bine precizat, dar pe de alt parte, majoritatea serviciilor evoluate nu
sunt implementate.

69

Se caracterizeaz prin limitarea tuturor activitilor proprii ale Sistemului de


Operare :
eliminarea unor componente hardware a cror funcionare se face cu
un consum mai mare timp (memoria disc este inexistent sau foarte
redus)
stocarea datelor se face n memoria intern
De cele mai multe ori Sistemele de Operare de timp real rigid sunt dedicate,
adic sunt proiectate pentru a rula pe un anumit tip de calculator de proces
sau pentru a executa un anumit tip de aplicaii de supraveghere sau control
procese.
Sisteme de Operare de timp real suplu

Aceste Sisteme de Operare mai puin restrictive, n sensul c pot s includ


faciliti evoluate: multiprogramarea Unitii Centrale de Procesare,
memoria virtual, lucrul interactiv cu utilizatorii, .a. Cu toate acestea,
activitile curente ale nucleului sunt pe ct posibil limitate n timp.
Sistemele de Operare de timp real suplu permit execuia cu prioritate sporit
sau fr ntreruperi a unor secvene de cod din procese. Ele ofer un ntreg
set de apeluri sistem pentru gestionarea timpului i a evenimentelor, sau
permit execuia unor operaii nentreruptibile pentru tratarea evenimentelor.
Sistemele de Operare de timp real suplu sunt folosite ca:
suport pentru aplicaii multimedia, de divertisment sau de realitate
virtual
suport n proiecte tiinifice legate de cercetarea submarin,
zborurile cosmice, etc.
Exemple
Printre cele mai cunoscute Sistemele de Operare de timp real suplu se afl
sistemele RSX i VMS. n familia sistemelor UNIX exist i unele variante
de timp real, cum ar fi QNX.

70

4. GESTIUNEA PROCESELOR
4.1. CONCEPTUL DE PROCES
Procesul este forma sub care se afl n cadrul Sistemului de Operare orice
program lansat n execuie. Un proces este o secven de aciuni a1 , a2 , .., an
unde o aciune ai corespunde unei instruciuni din programul care a generat
acel proces.
Programul este o entitate pasiv stocat ntr-un fiier pe disc iar procesul
este o entitate activ stocat (parial sau n totalitate) n memoria intern.
Starea unui proces se modific pe durata existenei sale n sistem. Starea
unui proces la un moment dat este determinat de sensul prelucrrilor
efectuate de proces i de contextul general al Sistemului de Operare (ceea ce
mai exist i ceea ce se ntmpl n acel moment n sistem). Se consider c
starea unui proces la un moment dat este descris de urmtoarele informaii
:
codul programului prin lansarea cruia a fost generat procesul
valorile tuturor variabilelor aparinnd procesului
istoricul apelurilor de funcii (pentru funciile n curs de execuie)
valoarea contorului de instruciuni i a registrului de stare program
informaiile despre resursele folosite n acel moment de ctre proces.
Localizarea acestor informaii este prezentat n tabela de mai jos.
Element
Codul programului
Variabilele
Funciile n curs de
execuie
Contorul de Instruciuni
Registrul de Stare Program
Informaii despre resursele
utilizate de proces

Locul de stocare
n memorie, n segmentul de cod al procesului
n memorie, n segmentul de date al procesului
n memorie, n segmentul de stiv al
procesului
n registrul PC al Unitii Centrale
n registrul PSW al Unitii Centrale
n memorie, n structurile de date nucleului

Tabela 4.1. Coninutul unei intrari n Tabela Proceselor la sistemul UNIX.

71

Pentru a realiza transformarea unui program ntr-un proces, Sistemul de


Operare trebuie :
s aloce spaiul de memorare corespunztor pentru fiecare dintre
elementele enumerate
s plaseze n registrul Contor de Instruciuni (PC), adresa primei
instruciuni din codul executabil al programului respectiv ;
s plaseze n Registrul de Stare Program (PSW) informaiile privind
modul de execuie (master sau slave) al acelui program.
Dintre toate elementele care compun informaia de stare a unui proces,
singurul care rmne neschimbat pe tot parcursul execuiei procesului este
codul programului. Ca urmare, atunci cnd este necesar ca un program s fie
executat simultan n mai multe instane, acelai cod executabil poate fi
partajat de mai multe procese (sau altfel spus, executat cu Contoare de
Instruciuni diferite). Folosirea n comun de ctre mai multe procese a
codului executabil al unui program se numete reentran. Modulele
nucleului sunt reentrante la majoritatea Sistemelor de Operare
multiprogramate sau n time-sharing

4.2. MODELE DE EXECUIE A PROCESELOR

4.2.1. Multiprogramare i multitasking


Calculatoarele moderne permit incrcarea simultan n memorie a mai
multor programe, n scopul execuiei lor concurente. Ca urmare, Sistemul de
Operare trebuie s exercite un control mai strns al execuiei programelor i
s aplice o mai mare separaie ntre programe. Aceast evoluie a condus la
apariia conceptului de proces, ca form de abstractizare a noiunii de
program.
Modul de gestionare a execuiei proceselor constituie un element ce
caracterizeaz n principal orice Sistem de Operare:
dac procesele sunt executate integral n ordine strict secvenial, n
concordan cu momentele apariiei lor n sistem, atunci acel Sistem
de Operare este de tip monotasking (i implicit mono-user, deci un
singur utilizator poate lucra interactiv cu sistemul la un moment dat)

72

dac un Sistem de Operare gestioneaz execuia proceselor folosind


ca tehnic multiplexarea Unitii Centrale a calculatorului, atunci
acel Sistem de Operare se va numi multitasking. n acest caz
comutarea Unitii Centrale de la un proces la altul este asigurat
prin mecanisme hardware i software i se desfoar astfel :
o la un moment dat UCP execut instruciuni aparinnd unui
singur proces; dup un interval de timp, Unitatea Central
(care joac rolul unei resurse de execuie a programelor),
este rechiziionat de la procesul curent i alocat unui alt
proces, aflat n ateptare pentru resursa de execuie
o fenomenul se repet pn cnd toate procesele aflate n
ateptare pentru execuie primesc resursa UCP, sau pn la
apariia unui eveniment extern care trebuie tratat tot prin
lansarea n execuie a unui proces.
o modelul de gestionare a proceselor ntr-un sistem
multitasking conduce la execuia complet ntr-un interval de
timp a mai multor programe, dei la un moment de timp
oricare UCP execut o singur instruciune aparinnd unui
singur proces.
Execuia ntreesut a proceselor, care este specific Sistemelor de
Operare multitasking, nu influeneaz (nu trebuie s influeneze) rezultatele
de prelucrare a datelor, ci doar durata total de execuie a fiecrui proces.
Aceast durat devine practic mai mare : fiecare proces se execut ca i cum
ar avea o Unitate Central proprie care funcioneaz alternnd intervale de
lucru cu intervale de pauz (ateptare).
Deoarece la calculatoarele moderne viteza de lucru a Unitii Centrale este
foarte mare (poate ajunge la cteva milioane de operaii pe secund),
utilizatorii care lucreaz simultan i interactiv cu un Sistem de Operare
multitasking nu percep fenomenul de execuie ntreesut a proceselor. Cu
alte cuvinte, datorit diferenei dintre timpii de percepie umani i viteza de
procesare a calculatorului, utilizatorii interactivi ai unui Sistem de Operare
multitasking sunt servii ca i cum ar exista o Unitate Central de Procesare
alocat pentru fiecare n parte.

73

4.2.2. Modelul de execuie concurent a proceselor


Un proces este o activitate coerent i cu un scop bine precizat din cadrul
unui Sistem de Operare. Acesta activitate (procesul) se amorseaz prin
lansarea n execuie a unui program executabil i este caracterizat n orice
moment prin informaii specifice de stare.
Dac n cadrul unui Sistem de Operare exist simultan mai multe procese
aflate n diverse stadii de execuie, care partajeaz resursa Unitate Central
prin excludere mutual (un singur proces se execut la un moment dat, mai
multe procese s-au executat ntr-un interval de timp), atunci se spune c acel
Sistem de Operare implementeaz modelul multiprogramrii, sau
modelul de execuie concurent a proceselor.
Desfurarea proceselor, n sensul atingerii obiectivelor de prelucrare a
datelor, nu este afectat de execuia pseudoparalel bazat pe comutarea
Unitii Centrale. Fiecare proces se desfoar ca i cum fiecare ar avea
propria sa Unitate Central. Comutarea Unitii Centrale ntre procese se
efectueaz dup un algoritm de planificare deinut i aplicat de Sistemul
de Operare. Acest algoritm determin momentul de timp la care un proces
trebuie suspendat, i crui proces i va fi alocat Unitatea Central de
Procesare la momentul urmtor.
Modul de execuie al proceselor ntr-un mediu multiprogramat (n cadrul
unui Sistem de Operare care implementeaz multiprogramarea proceselor)
este redat n Figura 4.1.
Fiecare proces A, B, C, D are
Contor de Instruciuni propriu

Procese

D
C
B
A

Timp

Figura 4.1. Evoluia proceselor n timp, ntr-un mediu multiprogramat.

74

Din Figura 4.1. se observ c cele patru programe A, B, C, D devin n


momentul execuiei patru procese paralele i independente A, B, C, D,
fiecare avnd un flux propriu de desfurare. Graficul din Figura 4.1 arat
c dup un anumit timp toate procesele au progresat, dar c la un moment
dat exist un singur proces activ.
Ca urmare a fenomenului de comutare a Unitii Centrale precum i datorit
tratrii evenimentelor asincrone i sincrone, ntr-un mediu multiprogramat
progresul proceselor nu este uniform. n consecin, nu se poate aprecia cu
precizie viteza de execuie a unui proces i nici durata de execuie a acestuia
Atunci cnd un proces care se execut ntr-un mediu multiprogramat trebuie
s starteze o operaie la un moment precis, sau trebuie s atepte durate de
timp bine stabilite, el apeleaz la mecanisme speciale puse la dispoziie de
Sistemul de Operare. n afara situaiilor n care este necesar evaluarea cu
precizie a timpului, procesele nu sunt afectate de multiprogramare i de
faptul c i ele se desfoar (se execut) cu viteze diferite.
4.2.3. Strile unui proces ntr-un mediu multiprogramat
Starea unui proces este caracterizat n orice moment prin valorile
elementelor descrise n seciunea 4.1. Dac se ia ns n consideraie situaia
de execuie n care se poate afla un proces la un moment dat, se pot
evidenia urmtoarele stri generice (Figura 4.2.) :
proces n execuie;
proces gata de execuie;
proces blocat
Starea n execuie corespunde situaiei n care procesul deine resursa
Unitate Central.n acest caz Unitatea Central execut instruciuni
aparinnd codului procesului.
Starea gata de execuie corespunde situaiei n care un proces este apt s
i continue execuia, dar este suspendat provizoriu. Aceast suspendare este
necesar pentru a se permite altor procese s progreseze n execuia lor.
Procesele gata de execuie formeaz o coad de ateptare iar urmtorul
proces care va primi resursa Unitate Central este selectat din cadrul acestei
cozi, pe baza unui algoritm de planificare care respecta politica general de
lucru a Sistemului de Operare.
75

Starea blocat corespunde situaiei n care un proces ateapt apariia unui


eveniment extern, fr de care nu poate continua. n cele mai multe cazuri
blocarea unui proces corespunde cu ateptarea n vederea terminrii unei
operaii de intrare/ieire.
Procesele aflate n starea blocat formeaz o coad de ateptare. Un proces
prsete coada proceselor blocate la apariia evenimentului ateptat.
Strile 2 i 3 sunt stri de ateptare pentru un procesele existente n cadrul
unui mediu multiprogramat. Starea de ateptare gata de execuie este o
consecin a modului de funcionare a Sistemului de Operare. La rndul sau,
acest mod de funcionare a fost proiectat i implementat pentru depirea
restriciilor determinate de hardware: nu exist suficient de multe
procesoare pentru a se acorda cte unul fiecrui proces care trebuie s se
execute!.
Trecerea n starea gata de execuie este asincrona fa de execuia unui
proces. Trecerea n starea blocat este sincron cu execuia procesului. Starea
blocat pentru un proces este, de regul inerent problemei, cu alte cuvinte,
algoritmului care implementeaz n program o anumit prelucrare de date.
n execuie

2
3

Blocat

Gata de execuie

Figura 4.2. Strile generice ale unui proces ntr-un mediu multiprogramat.
Tranziia 1 se petrece atunci cnd un proces nu poate s i continue
execuia, fr ca un anumit eveniment extern (execuiei sale) s se produc.
La unele Sisteme de Operare tranziia 1 se petrece prin lansarea de ctre
proces unui apel sistem de tip BLOCK sau WAIT.
Tranziiile 2 i 3 sunt controlate de Sistemul de Operare, fr ca procesul s
poat influena acest fenomen. Tranziia 2 se petrece atunci cnd procesul a
epuizat timpul de execuie acordat de Sistemul de Operare. Aceast tranziie
se produce odat cu apariia ntreruperii de ceas. Tranziia 3 se produce
atunci cnd procesul este selectat din coad proceselor gata de execuie.
Procesul va primi dreptul de a se executa pn la epuizarea intervalului de
timp acordat sau pn cnd va trece n starea blocat.
76

Tranziia 4 se petrece cnd evenimentul exterior ateptat de un proces


blocat s-a produs. Procesul va trece din coada proceselor blocate n coada
proceselor gata de execuie i va atepta s fie selectat pentru execuie.
Componenta Sistemului de Operare care decide crui proces din coada
proceselor gata de execuie i se va acorda Unitatea Central de Procesare se
numete Planificator de procese (scheduler). Planificatorul efectueaz
suspendarea i relansarea proceselor precum i gestiunea ntreruperilor.
Conceptual, se consider c Planificatorul de procese constituie nivelul de
baz deasupra cruia se afl restul componentelor Sistemului de Operare,
structurate sub forma unor procese secveniale (Figura 4.3).
Sistemul de
Operare

Proces 1 Proces 2 . . . . . . . Proces n


Planificatorul de procese

Figura 4.3. Planificatorul de procese al unui Sisteme de Operare.


4.2.4. Crearea proceselor ntr-un mediu multiprogramat
n cadrul unui Sistem de Operare, un proces poate s creeze unul sau mai
multe alte procese prin intermediul unui apel sistem special (un apel sistem
este o cerere de servicii adresat de un proces Sistemului de Operare).
Procesul care a efectuat crearea se numete proces tat, iar noile procese se
numesc procese fii. Fiecare proces fiu poate i el s creeze alte procese fii,
etc., constituindu-se astfel un arbore de procese similar cu arborele de
directoare de pe disc. Cnd un proces creeaz un fiu, acesta din urm poate
s obin resursele de care are nevoie fie direct de la Sistemul de Operare
sau s moteneasca un subansamblu de resurse de la procesul tat.
Partajarea resurselor ntre un proces tat i procesele sale fiu are avantajul
c reduce incrcarea general a sistemului, i poate constitui suportul pentru
schimbul de informaii dintre procesul tat i procesele fiu.
La orice Sistem de Operare care permite filiaia proceselor, procesul tat
trebuie s cunoasc identitatea proceselor fii i s aib posibilitatea s
examineze starea acestora. Cnd un proces creeaz un proces fiu, exist
dou posibiliti de continuare a execuiei procesului tat :
1. procesul tat i continu execuia n paralel cu procesul fiu
2. procesul tat ateapt pn cnd unii dintre fii, sau chiar toi, se
ncheie.
77

n ceea ce privete componena procesului fiu, exist dou posibiliti :


1. procesul fiu este un duplicat, o copie a procesului tata
2. procesul fiu ncarc un alt program i l lanseaz n execuie.
Un proces se ncheie cnd a fost executat ultima s instruciune. Procesul
cere Sistemului de Operare s-l suprime (din structurile de date ale
nucleului) prin intermediul unui apel sistem de tip exit. Ca urmare a unui
apel exit toate resursele deinute de un proces sunt eliberate de ctre
Sistemul de Operare. n cazul n care procesul deine un proces fiu, el are
posibilitatea de a solicita ncheierea procesului fiu atunci cnd
1. procesul fiu a depit indicele de utilizare al resurselor atribuite;
2. prelucrrile efectuate de procesul fiu nu mai sunt necesare;
3. procesul tat este suprimat i Sistemul de Operare nu permite ca un
proces fiu s se execute atunci cnd procesul tat s-a ncheiat.
n general, ncheierea normal sau anormal a unui proces duce la
ncheierea tuturor fiilor si; fenomenul se numete terminare n cascad.
La Sistemul de Operare UNIX, crearea unui nou proces se face cu ajutorul
apelului sistem fork. Procesul fiu rezultat este copie a procesului tat, dar
are identificator (PID) diferit. Cele dou procese, tat i fiu, continu apoi s
se execute de la instruciunea de dup apelul fork. Exist o deosebire ntre
cele dou procese: codul de retur ntors de apelul sistem fork este 0 pentru
procesul fiu, i diferit de 0 pentru procesul tat. Procesul fiu poate executa
apoi un apel sistem exec prin care se lanseaz un alt proces diferit. Noul
proces nlocuiete complet procesul fiu i aceast situaie reprezint crearea
unui nou proces, diferit de cele deja existente n cadrul Sistemului de
Operare. Un model similar exist i la sistemele VMS i Windows NT

4.3. STRUCTURI DE DATE PENTRU GESTIUNEA


PROCESELOR
4.3.1. Tabela Proceselor
Planificatorul de procese din cadrul unui mediu multiprogramat realizeaz
ordonanarea proceselor pe baza informaiilor aflate ntr-o tabel numit
Tabela Proceselor (TP) sau PMT (Proces Map Table). Tabela Proceselor
face parte din structurile de date ale nucleului Sistemului de Operare.

78

O intrare n tabela TP corespunde unui singur proces i conine, de regul,


urmtoarele informaii :
- identificatorul (unic) al procesului, PID (Proces Indentifier) ;
- coninutul regitrilor Unitii Centrale (Contorul de Instruciuni,
Acumulatori/Regitrii Generali, Regitrii de Index, Pointerul de
stiv); coninutul regitrilor este salvat n TP ori de cte ori procesul
este ntrerupt, pentru c la o reluare ulterioar acesta s i continue
execuia n mod corect
- informaii de planificare (prioritatea procesului, pointeri n diversele
cozi de ateptare)
- informaii privind spaiul de memorie intern acordat procesului
(valori ale regitrilor de baz i de limit, ale partiiei n care este
ncrcat codul procesului, sau pointeri ctre tabelele de paginare sau
de segmentare memorie, dup cum este tehnica de gestiune a
memoriei folosite n sistem)
- informaii de contabilizare : timpul procesor utilizat de proces,
limitele de timp acordate procesului, .a.
- informaii de legate de operaiile de intrare/ieire (lista perifericelor
folosite n cadrul procesului, starea lor, lista fiierele deschise i
starea lor, valoarea pointerilor de poziionare n aceste fiiere
deschise, etc.).
Coninutul unei intrri din Tabela Proceselor variaz de la un Sistem de
Operare la altul. Informaiile enumerate anterior se regsesc ns n Tabela
Proceselor la majoritatea Sistemelor de Operare multiprogramate, ele fiind
absolut necesare pentru a se gira execuia concurent a proceselor. Tabela
urmtoare red informaiile care se gsesc ntr-o intrare a Tabelei
Proceselor, tipic pentru un Sistem de Operare UNIX.
n cazul multor Sisteme de Operare, Tabela Proceselor nu este o tabel
propriu-zis ci o list nlnuit sau dublu nlnuit.
Astfel, la Sistemul de Operare VMS (realizat de Digital Equipment DECpentru a rula pe echipamentele de calcul din seria VAX), Tabela Proceselor
este o list dublu nlnuit. Un element din aceast list corespunde unui
proces din sistem, se numete Bloc de Control Proces (PCB, Process
Control Block) i are lungimea de 16 cuvinte a 2 octei.

79

Gestiunea proceselor

Gestiunea memoriei

Registri, Contor de Instruciuni


Cuvint de stare program
Pointer de stiva
Starea procesului
Data lansarii procesului
Timp UC utilizat
Timp UC utilizat de procesele fii

Pointer la segmentul de cod


Pointer la segmentul de date
Pointer catre segmentul bss
Statutul la sfirsit de execuie
Identificator de proces
Proces parinte
Grupul procesului

Data urmtoarei alarme


Pointer catre cozile de mesaje
Biti de semnale n asteptare
Identificatorul procesului (PID)
Diversi indicatori

uid real, uid efectiv


gid real, gid efectiv
Tabela cu biti de semnal
Diversi indicatori

Gestiunea fiierelor
Masca UMASK
Director radacina
Director de lucru
Descriptori de fiiere
uid efectiv
gid efectiv
Parametri apelurilor
sistem
Diversi indicatori

Tabela 4.2. O intrare tipic n Tabela Proceselor pentru u sistemUNIX.


Nr Coninut cuvnt
1.

Pointer la blocul PCB urmtor

2.

Pointer la blocul PCB anterior

3.

Rezervat sistemului de operare

4.

Pointer la lista inlantuita a intreruperilor asincrone (AST-Asincronous Trap)

5.

Pointer la PCB fizic

6.

Cote de resurse alocate

7.

Indicatori locali de eveniment

8.

Pointer le grupul indicatorilor globali de eveniment

9.

Identificatorul procesului (PID)

10. Pointer la tabela de gestiune a spatiului de memorie al procesului


11. Pointer la tabela JIB cu informaii despre jobul din care face parte procesul
12. Privilegiile procesului
13. Pointer la lista drepturilor de acces la resurse (ACL- Access Control List)
14. Starea procesului
15. Prioritatea procesului
16. Liber

Tabela 4.3. Structura unui Bloc de Control Proces n cadrul Sistemului de Operare
VMS.

80

4.3.2. Comutarea de Context


O consecin direct a multiprogramrii Unitii Centrale este activitatea
Sistemului de Operare denumit Comutarea de Context.
Comutarea de Context este activitatea Sistemului de Operare prin care
procesul aflat curent n execuie este suspendat, iar Unitatea Central este
acordat unui alt proces, care, din diverse cauze trebuie s nceap s se
execute din acel moment. Comutarea de Context implic salvarea strii
procesului curent (care se suspenda) n TP i restaurarea (incrcarea) strii
(informaiilor de stare) ale procesului care urmeaz s se execute n
continuare. Informaiile de stare care fac obiectul salvrii (sau restaurrii)
pentru un proces formeaz Contextul Procesului respectiv. ntr-un sens
mai larg, Contextul unui proces poate fi considerat ansamblul informaiilor
aferente acelui proces.
Durata activitii de Comutare de Context trebuie s fie ct mai mic,
deoarece ea este o activitate auxiliar care se repet foarte des n cadrul unui
Sistem de Operare (multiprogramat). Comutarea de Context se realizeaz la
apariia unei ntreruperi, i cum la apariia unei ntreruperi regitrii Unitii
Centrale sunt salvai n stiv prin hardware, rezult c durata Comutrii de
Context este dependent i de hardware-ul calculatorului. n general, cu ct
Sistemul de Operare este mai complex, cu att Comutarea de Context este o
operaie mai ampl, i ca urmare de durat mai mare.
La Sistemul de Operare VMS, Contextul unui Proces este alctuit din
urmtoarele elemente:
coninutul celor patru regitri Pointeri de Stiv (exist cte o stiv
pentru cele patru moduri de lucru posibile : nucleu, executiv,
supervizor, utilizator (Kernel, Executiv, Supervisor, User)
coninutul celor 14 Registre Generale ale Unitii Centrale;
Contorul de Instruciuni (PC) i Cuvntul de Stare Program (PSW);
registrul cu adresa tabelului de paginare al procesului
cuvntul care conine lungimea acestui tabel (aceste informaii se
refer la gestiunea spaiului de memorie alocat procesului);
nivelul ntreruperilor generate la terminarea operaiilor de
intrare/ieire aferente procesului;
bitul de monitorizare performante a procesului.
81

Comutarea de Context n cadrul Sistemului de Operare VMS, ntre dou


procese concurente P0 i P1 se face cu salvarea i restaurarea strii fiecruia
n cadrul Blocului de Control propriu (PCB0 i respectiv PCB1). Diagrama
de comutare este reprezentat n Figura 4.4. Din diagram se observ c
retragerea UCP de la un proces se face cu salvarea strii (salvarea
Contextului) acestuia; iar alocarea Unitii Centrale unui proces este
precedat de ncrcarea strii acelui proces (restaurarea Contextului).
Timp

Proces P0

Sistemul de Operare

Proces P1

n execuie
Salvare stare proces P0 n PCB0
ncarcare stare proces P1 din PCB1
Inactiv

ntrerupere sau apel sistem

n execuie

Salvare stare proces P1 n PCB1

Rencarcare stare proces P0 din PCB0

Inactiv

n execuie

Figura 4.4. Comutarea de Context la Sistemul de Operare VMS.

4.4. PROCESE SUB UNIX


Sistemul de Operare UNIX este de tip multitasking - multiuser i
implementeaz multiprogramarea Unitii Centrale. Ca la toate mediile
multiprogramate, n cadrul sistemului UNIX un proces este o activitate care
rezult din lansarea n execuie a unui program sau a unui modul parinnd
Sistemului de Operare. Un proces sub UNIX are ataate mai multe atribute
dintre care amintim : Identificatorul Procesului (PID unic), PID printe,
ID grup (gid) i ID utilizator real (uid) care identific posesorul procesului,
ID utilizator efectiv care specific cu drepturile crui utilizator se execut
procesul la un moment dat, etc.
82

Un proces sub UNIX are ataai diveri descriptori, care sunt structuri de
date care pstreaz starea procesului plus toate informaiile eseniale pentru
continuarea procesului, din locul n care execuia sa a fost suspendat la un
moment dat. Execuia unui proces utilizator n cadrul sistemului UNIX se
poate face n dou moduri :
1. mod utilizator, n care procesul are acces numai la propria zon de
text, date i stiva;
2. mod nucleu, n care procesul poate avea acces la structurile de date
ale nucleului.
Un proces trece din modul de lucru utilizator n modul nucleu (nucleul
devine o parte integrant a acelui proces) cnd lanseaz un apel sistem sau
cnd genereaz o ntrerupere. Pentru aceast situaie, oricrui proces i se
asociaz stiva nucleu, care va stoca parametrii afereni apelurilor sistem.
4.4.1. Contextul unui proces sub UNIX
Contextul unui proces sub UNIX este ansamblul informaiilor care pot fi
consultate prin aciunile unui proces sau care modific n urma aciunilor
unui proces. n cazul Sistemului de Operare UNIX, contextul unui proces,
denumit i imaginea procesului, cuprinde dou componente :
Contextul utilizator;
Contextul sistem.
Contextul utilizator iniial este de fapt programul executabil din care
provine acel proces; contextul utilizator este stocat n memoria intern, n
zonele alocate pentru procesele utilizator. Contextul sistem iniial este
realizat de interpretorul de comenzi (la lansarea n execuie a programului)
i este apoi stocat n cadrul structurilor de date ale nucleului UNIX.
Contextul utilizator este alctuit din 3 zone de memorie distincte din punct
de vedere logic:
segment de text (zona text);
segment de date (zona data);
segment de stiv (zona stack).
Segmentul de text reprezint partea pur, nemodificabil, a programului.
Segmentul de text cuprinde codul executabil al programului din care a
provenit procesul. Sub UNIX, mai multe procese care au segmente de cod
identice pot utiliza n comun o singur copie din memorie a acestui segment.

83

Segmentul de date cuprinde variabilele globale i statice ale programului,


care sunt alocate static n memorie nc de la nceputul execuiei
programului. Segmentul de date cuprinde i zonele de memorie alocate
dinamic n timpul execuiei, prin funcii cum ar fi malloc, calloc, realloc,
sau free. n principiu, lungimea segmentului de date este cunoscut nc de
la compilarea unui program, dar poate fi modificat n urma apelurilor
sistem prin care se aloc/dezaloc memorie suplimentar pentru date.
Segmentul de stiv (zona stack) cuprinde informaiile prin care se
realizeaz apelurile la funcii i proceduri: n stiva se stocheaz parametrii
de apel i datele locale, care se suprim la ncheierea procedurii sau funciei.
Contextul sistem al unui proces este alctuit din urmtoarele elemente:
Partea static[ a contextului sistem, format din :
o Contextul regitrilor Unitii Centrale (Regitri Generali,
Contorul de Instruciuni, Registrul de Stare program, etc.)
o Intrarea n Tabela Proceselor corespunznd acelui proces
o Zona U
Partea dinamic a contextului sistem, format din :
o Tabela pregion (a regiunilor per proces), ce conine
informaii care permit alocarea de spaiu de memorie fizic
pentru (segmente din) acel proces
o Stiva nucleu, care conine prile din stiva nucleului
referitoare la apelurile sistem (apelurile la modulele
nucleului) efectuate de acel proces.
Zona U este o component a contextului sistem specific UNIX. Cmpurile
Zonei U cuprind urmtoarele informaii:
un pointer ctre intrarea corespunznd procesului din Tabela
Proceselor
Identificatorul utilizatorului real i efectiv al procesului (valorile
variabilelor uid i efuid), n funcie de care se stabilesc drepturile de
acces la fiiere, cozi de mesaje, memorie comun sau semafoare
Tabela descriptorilor de fiiere utilizator (TDFU) accesate de proces,
starea fiierelor deschise de proces, parametrii operaiilor de I/E :
tipul fiecrei operaii, zona tampon utilizat, deplasamentul n cadrul
fiierelor deschise
Directorul curent de lucru i terminal asociat cu procesul
Valorile variabilelor de mediu (environment) pentru acel proces
Starea semnalelor pentru acel proces.

84

4.4.2. Strile unui proces sub UNIX


Strile unui proces sub UNIX corespund celor descrise n seciunea 4.2.3.,
dar cu unele substri particulare (Figura 4.6.) :
Starea n execuie (RUN):
o n execuie n mod utilizator
o n execuie n mod nucleu
Starea Gata de execuie (READY), n ateptarea resursei UCP:
o Gata de execuie preemptat (trecerea n starea de gata de
execuie s-a efectuat n urma unei ntreruperi care a aprut
atunci cnd procesul se execut n mod nucleu, adic un apel
sistem lansat de acel proces era n curs de execuie);
o Gata de execuie, stocat n memoria intern (aceast stare
este numit i gata pentru planificare)
o Gata de execuie, evacuat pe disc
Starea Blocat (WAIT):
o Adormit (Sleeping), n ateptarea unui eveniment extern ;
o Suspendat, stopat de un semnal SIGSTOP provenind de la un
alt proces i n ateptarea unui semnal SIGCONT)
Starea terminat (ZOMBI), ncheiat, dar nc existent n Tabela
Proceselor.
M
E
M
I
N
T
E
R
N
A
D
I
S
C

intrerupere
apel sistem

TERM

(zombi)

terminare

RUN
mod user

RUN
mod nucleu

READY
preemptat

slee
WAIT

evacuare pe
disc
WAIT

return

distribuir
trezire

READY
planificare

trezire

READ

memorie intern
suficient
CREAT

creare
proces
( fork )

memorie
intern
insuficient

Figura 4. 6. Strile proceselor i tranziiile ntre stri la SistemulUNIX


85

Nucleul sistemului UNIX permite comutarea de context (rechiziia UCP de


la un proces i alocarea acesteia unui alt proces) n patru cazuri :
cnd procesul curent trece n ateptare prin lansarea funciei sleep
cnd procesul curent se termina prin apelul funciei sistem exit
la revenirea dintr-un apel sistem, cnd procesul care a lansat apelul
nu mai este cel mai prioritar
la revenirea dintr-o ntrerupere, cnd este necesar trecerea
procesului n modul utilizator, iar procesul care a fost iniial
ntrerupt nu mai este cel mai prioritar.
Funcia sistem sleep este apelat de nucleu atunci cnd procesul curent se
afl n execuie n mod nucleu (n urma lansrii unui apel sistem) i trebuie
s se opreasc i s atepte producerea unui eveniment. Evenimentele pentru
care procesele sunt n ateptare sunt mapate pe adrese.
Procesele pot fi n ateptare pentru evenimente sigure (cu probabilitate mare
de producere,: eliberare tampon sau i-node, terminarea unei operaii de I/E
cu discul) sau nesigure, de aceea funcia sleep este apelat de nucleul UNIX
cu un parametru de prioritate. n ultimele dou cazuri comutarea de context
are loc datorit faptului c prioritile proceselor s-au schimbat ntre timp,
datorit apariiei ntreruperii de ceas i a lansrii rutinei de tratare
ntrerupere de ceas, care, - ntre altele -, recalculeaz prioritile proceselor
din sistem. Procesul curent, care efectua return (dintr-un apel sistem sau din
ntrerupere) nu mai este cel mai prioritar, deci trece n ateptare.
Transferarea proceselor din cozile de ateptare din memoria intern n cozile
de ateptare de pe disc (i invers) este efectuat de procesul swapper, care
aparine nucleului sistemului UNIX. Procesul swapper transfer imaginea
unui proces din memoria intern pe disc, atunci cnd:
trebuie ncrcat n memorie un alt proces i spaiul este insuficient;
dimensiunea segmentului de date al unui proces a crescut (n urma
unei alocri dinamice de memorie) i nu exist o regiune de memorie
intern libera, suficient de mare pentru acel segment.
Criteriile folosite de swapper, pentru alegerea procesului care va fi evacuat
din memorie pe disc, sunt urmtoarele :
timpul de reziden n cozile de ateptare Ready din memoria
intern, plus prioritatea procesului;
timpul de reziden n cozile de ateptare WAIT din memoria
intern, plus prioritatea procesului.

86

ANEXA. SISTEMUL DE FIIERE UNIX

1. Elementele unui sistem de fiiere


Sistemul de Operare UNIX exist sub forma mai multitudini de variante,
dintre care majoritatea se aliniaz la unul dintre standardele urmtoare:
standardul System V, realizat i brevetat de firma american ATT
standardul BSD, dezvoltat la Universitatea Berkeley-California.
Sistemul UNIX de Gestiune a Fiierelor se aliniaz la rndul su la unul
dintre aceste dou standarde. n cele ce urmeaz va fi prezentat un Sistem de
Gestiune a Fiierelor corespunznd standardului System V.
Sistemul de Gestiune a Fiierelor UNIX corespunde definiiei generale:
este o colecie de fiiere stocate pe suport magnetic n cadrul unui sistem
ierarhic de directoare, plus o colecie de structuri de date i de programe
pentru gestiunea acestor fiiere i directoare. Sistemul de Gestiune a
Fiierelor UNIX poate fi alctuit din unul sau mai multe sisteme de fiiere.
Un sistem de fiiere este o colecie de fiiere i directoare plus tabelele prin
intermediul crora se realizeaz gestiunea acestor fiiere i directoare. Un
sistem de fiiere formeaz un aa-numit disc virtual, constituit din trei
entiti de baz (Figura (8.3):
superblocul
tabela de i-noduri
blocurile de date.
Un disc virtual poate s fie localizat pe un singur disc fizic, dar i distribuit
pe mai multe discuri fizice. Este de remarcat de asemenea c, prin
partiionare, un disc fizic poate s gazduiasc mai multe sisteme de fiiere.
n cadrul unui sistem de fiiere UNIX spaiul fizic de disc este alocat n
blocuri ce pot fi ntre 512 i 4096 de octeti.
2. Superblocul UNIX
Superblocul este structura prin intermediul creia se realizeaz gestiunea
spaiului pe disc n cadrul unui sistem de fiiere UNIX. Gestiunea spaiului
de disc se realizeaz prin contorizarea blocurilor libere (SGF UNIX nu
efectueaz nici un fel de contorizare a blocurilor ocupate !).
87

Superblocul UNIX descrie starea de ocupare a discului virtual, coninnd


debutul listei nlnuite de blocuri libere de pe acest disc. Lista de blocuri
libere din Superbloc este o list de liste, n care fiecare fiecare element al
listei este o stiv FIFO, iar primul element al listei (adic prima sub-lista
FIFO) este stocat n Superbloc iar celelalte elemente (celelalte sub-liste)
sunt stocate n blocuri de date special alocate ale discului virtual UNIX.
Bloc nr. 0

boot
Superbloc

Bloc nr. 1
Bloc nr. 2
i-nod 5

Bloc nr. 3

i-node 2
i-nod 6

i-node 3
i-nod 7

i-node 4
i-nod 8

i-nod 16
i-nod 17
.
i-nod 32

Tabela
i-nod-urilor

..

Bloc nr.
s_isize -1
Bloc nr.
s_isize

..
Bloc de date
........................

Bloc nr.
s_fsize - 1

Blocurile de
date

Bloc de date

Figura 8.3. Structura discului UNIX n standard System V.


Printre informaiile sunt stocate pe n Superblocul UNIX se afl:
s_isize, dimensiunea n blocuri a tabelei de i-noduri
s_fsize, dimensiunea n blocuri a sistemului de fiiere
s_fname, numele extern al sistemului de fiiere
s_free, lista blocurilor libere i s_nfree: numrul de blocuri
libere
s_i-node, lista i-nod-urilor libere i s_ni-node, numrul de inoduri libere
88

Informaiile coninute de Superbloc permit determinarea numrului maxim


de fiiere de pe discul virtual, precum i dimensiunea ntregului sistem de
fiiere. Superblocul oricrui sistem de fiiere UNIX montat este copiat n
memoria intern, pentru a spori viteza general de lucru a SGF-ului UNIX.
3. Tabela de i-noduri
Un fiier dintr-un sistem de fiiere de UNIX este specificat prin calea n
cadrul sistemul de directoare, numele fiierului i o reprezentare intern a
structurii fiierului denumit i-nod (i-nod=index node). I-nod-ul conine
descrierea modului n care datele aparinnd fiierului sunt stocate pe disc
precum i alte informaii privitoare la fiier: proprietarul fiierului,
drepturile de acces, datele calendaristice la care s-au fcut accese la fiier.
Dou fiiere aflate pe acel sistem de fiiere tip UNIX pot partaja acelai inod. n acest caz, unul din cmpurile i-nodului va specifica cte fiiere
partajeaz acel i-nod.
I-nod-urile sunt memorate ntr-o structur linear numit tabel de i-noduri
(lista de i-nod-uri), tabel ce aparine sistemului de fiiere. Numrul i-nodului este de fapt poziia lui n aceast tabel. Pentru a micora durata
timpului de acces la fiierele din sistem o copie a acestei tabele (completat
cu alte informaii) este pstrat i n memoria intern. Un i-nod conine toate
informaiile despre fiierul asociat, cu excepia numelui acestuia; care este
pstrat n fiierul director cruia i aparine fiierul respectiv. I-nodul nu
specific calea de acces la fiier. Informaiile coninute de un i-nod sunt:
tipul fiierului
masca drepturilor de acces (specific drepturile de acces ale
utilizatorilor din sistem asupra fiierului, n funcie de relaia
dintre ei i proprietarul fiierului);
numrul de legturi (cte fiiere se refer la i-nod)
lungimea fiierului n octei
identificatorul proprietarului fiierului
identificatorul grupului cruia i aparine fiierul
data calendaristic i momentul ultimei accesri a fiierului
data calendaristic i momentul ultimei modificri a fiierului
data calendaristic i momentul crerii fiierului;
o tabel cu 13 intrri ce conine adresele blocurilor de date
aparinnd fiierului.
89

Sistemul de Operare aloc spaiu fiierelor n uniti de cte un bloc (un


bloc este un multiplu de 512; aceast este o caracteristic comun tuturor
fiierelor dintr-un sistem de fiiere). Spaiul alocat unui fiier nu este
ntotdeauna contiguu.Adresele blocurilor alocate unui fiier sunt pstrate n
tabela de adrese a i-nod-ului asociat. Pentru a limita lungimea i-nod-urilor, a
timpului de cutare n tabela i a permite crearea de fiiere de dimensiuni
foarte mari, este folosit o structur de adresare mixt:
primele 10 intrri conin adrese de blocuri de date ale fiierului
intrarea 11 conine adresa unui bloc cu adrese de blocuri de date
(primul nivel de indirectare)
intrarea 12 realizeaz al doilea nivel de indirectare
intrarea 13 realizeaz al treilea nivel de indirectare.
Observaie : Trebuie fcut distincie ntre operaia de scriere a unui i-nod
i cea a coninutului fiierului asociat. Coninutul unui i-nod se modific n
momentul n care se schimba posesorul, drepturile de acces sau numrul de
legturi. Modificarea coninutului unui fiier implic automat modificarea inod-ului asociat, n timp ce o modificare a i-nod-ului nu implic neaprat
modificarea coninutului fiierului.
Copia n memorie a tabelei i-nod-urilor conine i alte informaii
suplimentare, fa de cea pstrat n sistemul de fiiere. Aceste informaii
sunt urmtoarele:
starea i-nodului, care poate s indice dac i-nod-ul este blocat, sau
dac exist un proces care ateapt ca i-nod-ul s fie deblocat
numrul i-nod-ului (n tabela de pe disc aceast informaie nu este
nscris, poziia n tabel fiind chiar numrul i-nod-ului)
numrul de periferic logic al discului pe care se afl sistemul de
fiiere cruia i aparine i-nod-ul respectiv.

90

BIBLIOGRAFIE
A.S. Tanenbaum Modern Operating System Prentice Hall; 2 edition (February 28, 2001)
D. Acostchioaie Administrarea i configurarea sistemelor LINUX
Editura POLIROM 2003
M. Miloescu

Sisteme de calcul - Editura Teora, 1998

I. Ignat

Sistemul de operare UNIX Gestiunea fiierelor


Editura Microinformatica 1992

I. Ignat

Sistemul de operare UNIX Gestiunea proceselor


Editura Albastr 1995

I. Jurc

Sisteme de Operare Editura de Vest 2001

M.Budiu

Articole publicate n revistele PC Report i NetReport


1996 - 2002
www.cs.cmu.edu/~mihaib/articole/articole.html#vedere

157

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