Upload
celfericit
View
17
Download
5
Embed Size (px)
DESCRIPTION
sisteme de operare
Citation preview
Sisteme de Operare
Curs nr. 2
2. Structura unui sistem de operare
Datorit complexitii lor, conform ingineriei software, sistemul de operare trebuie mprit n subsisteme care se pot analiza, proiecta i realiza separat, inndu-se cont de legturile dintre subsisteme. Orice sistem de operare conine dou mari pri: partea de control i partea de servicii.
a) partea de control: se execut n mod master i realizeaz legtura cu sistemul de calcul; - ntreruperi: ansamblu de rutine, fiecare dintre ele fiind activat la
apariia unui anumit semnal de ntrerupere;
HARDWARE
Gestiunea tehnic a
SO
Gestiunea economic
a SO
Compilatoare; Asambloare; Link-editoare; Loadere
Interpretoare; Macroprocesoare (preprocesoare); Editoare de texte; Rutine de depanare
Utilitare; Biblioteci de programe; Baze de date; Alte aplicaii
Interfaa cu utilizatorul Medii de
programare Biblio-tecar
Utilizator
Operator uman
Parte de servicii
Parte de control
Planificare procese i alocare resurse
Gestiune fiiere
I/O la nivel fizic
Gestiune memorie
ntreruperi; Gestiune procese; Dispecer procesoare
Fig. 2.1. Structura general a unui sistem de operare
Sisteme de Operare
- gestiune procese: creeaz procese i rezolv problemele privind cooperarea i concurena acestora;
- dispecer procesoare: la sistemele multiprocesor, repartizeaz sarcinile de calcul solicitate de procese procesoarelor care sunt libere i pot executa sarcinile;
- gestiune memorie: aloc necesarul de memorie intern solicitat de procese i asigur protecia memoriei folosite de procese;
- I/O la nivel fizic: asigur efectuarea operaiilor elementare de I/O cu toate tipurile de periferice din sistem, realiznd acolo unde este posibil desfurarea simultan a uneia sau mai multor operaii de I/O. Este puternic dependent de hardware i conine rutine de interfa numite drivere care realizeaz compatibilizarea conveniilor de I/O ntre sistemul de calcul i echipamentele periferice;
- gestiune fiiere: asigur deschiderea, nchiderea i accesul utilizatorului la fiierele aflate pe diferite suporturi de stocare a informaiei;
- planificare procese i alocare resurse: asigur planificarea proceselor astfel nct ele s poat obine necesarul de resurse individual sau partajat cu alte procese; are influen i asupra gestiunii proceselor, memoriei, sistemului de I/O;
- gestiune tehnic a SO: pstreaz evidena erorilor hard aprute la echipamentele sistemului de calcul precum i informaii privind gradul de utilizare a componentelor sistemului de calcul;
- gestiune economic a SO: pstreaz evidena utilizatorilor care folosesc sistemul, resursele consumate;
b) partea de servicii: se execut n mod slave, folosind facilitile parii de
control i asigur legtura cu utilizatorul; - compilatoarele: - asamblorul: - link-editorul sau editorul de legturi: - loader: este un program special al sistemului de operare care are
urmtoarele sarcini: citirea unui program executabil de pe un anumit suport, ncrcarea acestuia n memorie, lansarea n execuie. Dac programul este segmentat, loader-ul ncarc la nceput segmentul rdcin al programului, dup care, la cerere, ncarc fiecare segment solicitat n memorie;
- interpretor: program care execut pas cu pas instruciunile descrise ntr-un anumit limbaj;
- macroprocesor (preprocesor): - editorul de texte: - rutine de depanare: - bibliotecarul: utilitar cu ajutorul cruia utilizatorul poate comanda
pstrarea programelor proprii n fiiere de tip bibliotec; - mediile de programare: - interfaa cu utilizatorul:
Sisteme de Operare
Exemplu: Windows 2000 are un mikrokernel modificat: - nu are un microkernel pur;
multe din funciile sistemului sunt n afara mikrokernel-ului i ruleaz n modul kernel; modulele pot fi terse, nnnoite, nlocuite fr a fi necesar rescrierea ntregului sistem Structura este pe nivele (layere):
- Hardware abstraction layer (HAL): izoleaz sistemul de operare de specificul platformei hardware;
- Mikrokernel - Drivere: transform apelurile funciilor I/O ale utilizatorului n cereri
specifice componentei hardware;
Unix:
Fig. 2.2. Arhitectura Windows 2000
Fig. 2.3. Arhitectura general a unui sistem UNIX
Sisteme de Operare
Complexitatea sistemelor de operare face ca acelai sistem s apar cu diferite organizri din puncte de vedere diferite:
- organizarea codului surs; - organizarea memoriei; - condiiile de execuie; - interaciunea dintre componente; - adaptabilitatea la configuraia hardware.
2.1. Organizarea memoriei
O anumit parte a oricrui sistem de operare trebuie s se gseasc permanent n memorie n timpul funcionrii sistemului de calcul. Aceast parte se numete partea rezident i conine procedurile care trateaz serviciile critice ca planificarea proceselor, tratarea erorilor, verificarea securitii precum i tratarea iniial a apelurilor sistem. Aceste componente se mai numesc i nucleul sistemului sau kernel, dei pot exista i alte componente care pot fi rezidente n memorie. De regul acestea ocup o zon fix a memoriei, care include regiunea cu adresele cele mai mici, regiune n care se gsesc vectorii de ntrerupere.
Componentele mai puin utilizate ale sistemului de operare, ca de exemplu cele specializate n gestionarea sistemului de fiiere sau cele legate de interfa prin comezi, sunt ncrcate la cerere i se numesc componentele tranzitorii. Aceste componente pot avea o zon de memorie rezervat sau pot fi ncrcate n orice zon de memorie disponibil, intrnd astfel n competiie cu programele utilizator.
Unele arhitecturi au rezervat o poriune a spaiului de adrese pentru I/O mapate n memorie (memory mapped I/O). Aceste adrese fac referin la registrele din interfeele hardware cu echipamentele periferice fiind rezervate pentru sistemul de operare.
Modul de utilizare a memoriei interne este ilustrat n continuare prin prezentarea hrilor de memorie (memory maps), avnd n vedere 3 aspecte distincte: - coninutul spaiului virtual de adrese cnd este n execuie un program utilizator;
- coninutul spaiului virtual de adrese cnd este n execuie o component a sistemului de operare;
- coninutul memoriei fizice; Exemplu:organizarea memoriei la diferite sisteme de operare
La CP/M, memoria direct adresabil n sistem este de 64koctei, limit impus de arhitectura procesorului 8080. Sistemul de operare folosete primii 256 octei pentru vectorii de ntrerupere i pentru informaii de sistem (tamponul pentru linia de comand). Componenetele rezidente BIOS (Basic Input / Output System) i BDOS (Basic Disk Operating System) ocup aproximativ 10 koctei din zona superioar a spaiului de adrese. Programele utilizator i rezerv propria stiv. Interpretorul de comenzi CCP (Command Control Processor) este ncrcat cnd este necesar n zona trranzitorie i
BIOS
BDOS
CCP
Nefolosit
Program + date aplicaii
Zona de comand
64k
~54k
256
0
Fig. 2.4. Harta memoriei la CP/M
Sisteme de Operare
ocup circa 2 koctei. Programele de aplicaie se ncarc de la adresa 256 (100h) a memoriei.
Procesorul 8086 permite adresarea direct a 1Moctet de memorie. Sistemul
MS-Dos rezerv zona peste 640K pentru memoria video i pentru programe memorate n ROM (o serie de programe de test activate la pornirea calculatorului). Zona de comunicaii (vectorii de ntrerupere i o zon tampon de 512 octei) ocup primii 1536 octei Partea rezident ocup zona ncepnd de la 1536, include i o poriune din interpretorul de comenzi, restul acestuia fiind n partea superioar a memoriei fizice. Partera tranzitorie a interpretorului de comenzi poate fi acoperit de programele de aplicaie.
Pentru un proces spaiul de adrese este limitat la 4 segmente de 64Ko fiecare, unul fiind rezervat pentru cod, unul pentru stiv i dou pentru date. Frecvent se folosete un singur element pentru stiv i date. Din segmentul de program primii 256 octei formeaz zona de comunicaii.
BIOS (ROM)
Memoria video
Interpretor comenzi tranzitoriu
Nefolosit
Program + date aplicaii
Zona de comunicaii
1M
640K
1536
0
Fig. 2.5. Harta memoriei la MS-DOS
Rezident SO
Nefolosit
Stiva aplicaie
Date aplicaie
0
64K
0
Nefolosit
Program aplicaie
64K
Zona de comunicaii 256
Fig. 2.6. Adrese virtuale ntr-un proces
Stiva
Program aplicaie 0
max
Fig. 2.7.UNIX - Adrese virtuale ntr-un proces
Date
0
Sistem de operare rezident
max
Fig. 2.8.UNIX - Adrese virtuale n sistemul de operare
Sisteme de Operare
Harta de memorie la UNIX nu este prezentat deoarece trebuie inut cont de caracteristicile arhitecturale ale calculatorului gazd, astfel nct s se pstreze n memoria fizic n fiecare moment informaia necesar. Tehnicile de swapping i/sau memorie virtual se utilizeaz att pentru sistemul de operare, ct i pentru programele utilizator.
Din spaiul de adrese al unui proces nu este vizibil nici o poriune a sistemului de operare.
n cazul Linux, pentru procesoarele 386, folosind memoria paginat, fiecare
proces poate accesa 4GB de memorie (232).
0x110000 Liber memory_end sau high_ memory mem_map mem_init( ) inode_table inode_init( ) device data device_init( ) 0x100000 pg_tables paging_init( ) 0x0A0000 Rezervat 0x060000 Liber low_memory_start 0x006000 kernel code + data floppy_track_buffer bad_pg_table
bad_page
utilizat de page_fault_handlers pentru orirea proceselor cind nu mai exist memorie liber disponibil
0x002000 pg0 first kernel page table 0x001000 swapper_pg_dir kernel page directory 0x000000 null page
0xc0000000 kernel rezervat stiva iniial spaiu pentru creterea stivei 4 pagini 0x60000000 biblioteci
brk nefolosit malloc memory end_data date neiniializate end_code date iniializate 0x00000000 text
Fig. 2.9. Harta de memorie la Linux
Fig. 2.10. Memoria vazut de un proces
Sisteme de Operare
Sistemul OS/MVT pentru calculatoarele IBM System/360, este
multiprogramat, fr memorie virtual, cu spaiul de adresare de maxim 16 Moctei. Fiecare task are alocat o zon continu de memorie, n care se afl programul, datele i informaiile de comand ale task-ului. ntreg spaiul de adrese este vizibil fiecrui proces, dar exist o schem simpl de protecie (cu suport hardware).
n sistemul OS/MVS pentru calculatoarele IBM System/370 ntregul spaiu de adrese virtuale de 16 Moctei este vizibil oricrui proces. Sistemul de operare este utilizat n comun de toate procesele i ocup poriunile de la extremiti. Restul spaiului este privat fiecrui proces i conine programul, datele i informaiile de comand ale procesului.
2.2. Interaciunea componentelor la execuie
Sistemul de operare poate fi privit ca o colecie de rutine invocate prin apeluri sistem sau ca urmare a unor ntreruperi. Apelurile sistem difer de apelurile normale de rutine, deoarece duc la creterea nivelului de privilegii n timpul execuiei. Rutinele sistemului pot folosi toate instruciunile, au acces la toate registrele i la toate locaiile de memorie.
Apelurile sistem au un mecanism de declanare care este analog producerii unor ntreruperi, dar sursa este n program i nu n afara acestuia. Toate apelurile sistem au acelai punct de intrare n sistemul de operare. Fiecare apel este nsoit de informaii suplimentare (codul apelului) transmise prin registrele calculatorului.
2(16) M Zona tranzitorie
Task aplicaie
Task aplicaie
Task aplicaie
Task sistem
Task sistem
Info control sistem
Zona tranzitorie
Nucleu 0
2(16) M
Info comand sistem
Zona tranzitorie
a) OS/MVT
Fig. 2.11. Hri de memorie la sistemele IBM
Program + date aplicaie
Zona tranzitorie
Nucleu 0
Info comand aplicaie
b) OS/MVS
Sisteme de Operare
Codul apelului este folosit de dispecer pentru a selecta rutina adecvat tratrii apelului.
Sistemul de operare trebuie s gestioneze activiti care trebuie s continue o
perioad mai lung de timp n paralel cu execuia programelor utilizator (tiprirea). Acestea sunt organizate ca procese distincte numite procese de sistem, care au o prioritate de planificare mai mare.
Organizarea unei pri a codului sistemului de operare n procese sistem este i o cale de reducere a erorilor n proiectarea i implementarea sistemului.
2.3. Structura pe nivele a componentelor
Dac am avea o structur fr restricii, orice procedur a unui sistem de operare ar putea apela orice alt procedur sau ar putea face acces la orice structur de date ceea ce ar duce la o mare dificultate n determinarea efectelor schimbrilor n proceduri sau n structurile de date.
Sistemele de operare sunt structurate pe nivele deoarece fiecare nivel poate fi dezvoltat i testat separat.
4. Programe de aplicaie 3. Intrare/ieire 2. Consola utilizator 1. Memoria virtual 0. Planificare procese; ntreruperi
Nu exist reguli generale n repartizarea funciilor pe fiecare nivel, dar
sarcinile critice ca planificarea proceselor, gestiunea memoriei, protecia, trebuie s apar pe un nivel mai jos dect cele ca gestiunea fiierelor i interfaa cu utilizatorul. De asemenea, nici numrul de niveluri nu poate fi prescris prin reguli fixe.
dispecer
apel sistem rutine de serviciu
ntreruperi
Fig. 2.12. Declanarea execuiei rutinelor sistemului de operare
Fig. 2.13. Sistemul de operare THE realizat de E.Dijkstra
Sisteme de Operare
2.4. Adaptabilitatea la configuraia hardware
Deoarece depind n mare masur de suportul hardware pe care ruleaz, este de dorit ca sistemele de operare s fie ct mai portabile. Sistemul de operare trebuie s fie adaptat la orice configuraie, lucru care uneori poate duce la unele modificri n codul surs sau doar la o specificare a unor anumii parametri la iniializarea sistemului. Este de dorit ca sistemele de operare s detecteze automat caracteristicile hardware ale sistemului s se autoconfigureze la ncrcare.
3. Procese
Procesul este un program n execuie. Un program este o secven de instruciuni. Pentru un program dat (fiier executabil) pot exista unul sau mai multe procese asociate numite instane. Procesul reprezint invocarea dinamic a unui program mpreun cu resursele necesare pentru lansarea n execuie. Resursele includ: stiva utilizator, stiva sistem, memorie, identificatori de fiier, etc.
Fiecare proces se execut ntr-un spaiu de adrese propriu. Spaiul de adrese virtual este cuprins ntre 0 i adresa virtual maxim accesibil i este format din urmtoarele zone(segmente):
- Segmentul text codul programului, este protejat la scriere; - Segmentul de date - date predefinite (cunoscute la compilare) sau date
alocate dinamic; - Segmentul de stiv conine argumente, variabile locale i alte date pentru
execuia funciilor n modul utilizator Pe sistemele uniprocesor execuia unui proces este secvenial. Dac sistemul
de operare este multitasking, atunci pe un procesor se pot executa mai multe procese, fiecare proces avnd alocat o cuant de timp pentru execuie dup care urmeaz altul. n acest caz execuia se numete secvenial concurent sau aparent paralel.
Execuia unui proces se poate face n dou moduri: - Modul utilizator: procesele au acces numai la propria zon de cod, date i
stiv urilizator; - Modul nucleu: procesul conine instruciuni privilegiate i poate avea
acces la structurile de date ale nucleului. Procesele sunt create:
- la iniializarea sistemului (reboot); - la execuia unui apel de funcie pentru creare de procese (fork); - la cererea unui utilizator de creare a unui nou proces; - la iniializarea unui job.
Procesele sunt terminate: - normal terminarea programului (voluntar) - eroare terminare cu eroare (voluntar) - fatal error divide by 0, core dump (involuntar) - terminat de un alt proces (involuntar) Se pot stabili i unele ierarhii de procese: cazul n care un proces printe
creeaz un proces fiu; procesul fiu poate crea propriile sale procese Exemplu: n UNIX exist conceptul de grup de procese" (process group).
Sisteme de Operare
3.1.Strile unui proces
Starea unui proces evideniaz activitatea procesului. Un proces care se execut este n starea run. Dac procesul este implicat ntr-o operaie de I/O i dispozitivul periferic nu este liber sau pur i simplu este lent sau nu este pregtit, procesul este trecut n starea bloked (blocat). Dac sistemul este multitasking, atunci un proces folosete procesorul pe durata unor cuante de timp fiind oprit de ctre sistemul de operare care alege alt proces pentru execuie. Starea n care este trecut procesul se numete ready (pregtit sau gata de execuie).
run
bloked
ready
suspendat
planificat Ateptare resurs
Fig. 3.1. Diagrama de stare simplificat pentru un proces
Run (mod utilizator)
Run (mod kernel)
Terminat (zombie)
Ready preemptat
Ready
Ateptare (wait, asleep)
Ateptare (suspendat) -
pe disk
Ready suspendat
Creat
exit
ntrerupere apel funcie sistem ntrerupere
returnreturn
planificare proces
preempie
sleep
trezire (wake up)
trezire (wake up)
swap out swap out swap in
memorie intern suficient
memorie intern insuficient
fork
n memoria intern
n memoria extern
Fig. 3.3. Strile unui proces
New Ready Running Exit
Suspend Bloked
Admit Dispatch
Timeout
Terminare
Activare
suspendare
Apariie eveniment Ateptare eveniment
Fig. 3.2. Strile unui proces cu o singur stare de suspendare
Sisteme de Operare
Un proces va trece din starea ready n run mod nucleu pe baza unei prioriti (se termin activitatea funciei fork). Prioritile sunt dinamice i se calculeaz din secund n secund astfel:
prioritate = baza + utilizare_recent_CPU / constant + valoare_nice
unde baza = 60 (ceasul ntrerupe de 60 ori/sec); valoare_nice se presupune nul; nucleul calculeaz utilizare_recent_CPU prin mprirea numrului de taci la 2 n momentul calculului prioritii; constanta este 2.
La terminarea funciei de apel, procesul va fi trecut n starea run mod utilizator, stare din care poate reveni n run n mod nucleu dac apare o ntrerupere sau procesul apeleaz o funcie sistem.
Dac ceasul sistem genereaz o ntrerupere, procesul care se execut n modul utilizator este trecut n run n mod nucleu. Dup rezolvarea cererii de ntrerupere nucleul poate decide s fie trecut n execuie alt proces, iar procesul analizat va trece n ready preemptat. n aceast stare ajung procesele care sunt executate n mod nucleu i trebuie s revin n mod utilizator, dar este planificat pentru execuie un alt proces mai prioritar.
Imaginea unui proces conine pe lng zonele text, date i stiv i o zon numit Process Control Block al crei rol este de a furniza date cu privire la:
- identificarea procesului: pid, uid, real uid, real gid, effective uid, efective gid
- informaiile de stare: regitrii vizibili utilizatorului, de obicei de la 8 la 32, uneori pe unele maini RISC peste 100
- informaiile de control al procesului:
state
memory
accounting
priority
user
CPU registers storage
text
data
heap
stack
PSW
IR
PC
SP
general purpose registers
PCB CPU kernel user
Sisteme de Operare
3.2. Structuri de date pentru gestiunea proceselor
Pentru gestiunea proceselor, nucleul aloc n memoria intern n mod static, o tabel unic numit tabela proceselor. Dimensiunea tabelei este fixat la generarea sistemului i limiteaz numrul de procese pe care nucleul le poate gestiona pe sistemul respectiv.
Tabela proceselor conine urmtoarele cmpuri: - starea procesului; - localizarea procesului n memoria intern sau n memoria secundar
folosit pentru swapping; - dimensiunea procesului; - identificatorii ataai utilizatorului i grupului su; - identificatorul procesului; - descriptorul evenimentului care a produs trecerea procesului n starea de
ateptare; - parametrii de planificare pentru obinerea procesorului; - semnalele trimise procesului, dar nc netratate; - diferii timpi care indic timpul de execuie n mod utilizator i n mod
nucleu pentru calculul prioritii procesului; un cmp este folosit pentru SIGALARM.
Zona u este generat i ataat unui proces la crearea lui, este accesibil
nucleului numai n timpul execuiei procesului la care este ataat. Variabila u folosit de nucleu conine adresa virtual a zonei u a procesului n curs de execuie. Cmpurile zonei conin:
- un pointer la intrarea n tabela proceselor corespunztoare procesului la care este ataat zona u;
- identificatorul utilizatorului real i efectiv, n funcie de care se stabilesc drepturile de acces la fiiere, cozile de mesaje, memorie comun, semafoare, etc.
Tabela proceselor
Tabela regiunilor per proces (1/proces)
Tabela regiunilor (1/sistem)
zona u
Memoria fizic
Fig. 3.4 Structurile de date pentru procese
Sisteme de Operare
- timpii de execuie ai procesului i descendenilor si n mod utilizator i nucleu;
- modul de reacie a procesului la semnale (ignorate, prelucrate, tratare de nucleu);
- identificatorul terminalului de control (login terminal) asociat cu procesul;
- eroarea aprut n timpul apelului unei funcii de sistem; - valoarea returnat de o funcie de sistem; - parametrii de I/O: tipul transferului, adresa din spaiul procesului unde/de
unde se transfer, deplasamentul n fiier etc; - directorul curent; - tabela descriptorilor de fiiere utilizator (TDFU); - dimensiunea limit a procesului i a fiierelor; - masca pentru drepturile de acces la fiierele create. Tabela regiunilor este gestionat de nucleu. O intrare n tabel conine
informaiile necesare identificrii unei regiuni n memoria fizic intern. O regiune este o zon contigu din spaiul de adrese virtual, care este tratat ca un obiect distinct ce poate fi partajat sau protejat. Cmpurile unei intrri n tabela regiunilor sunt:
- un pointer la i-node-ul fiierului al crui coninut se gsete n regiune; - tipul regiunii: text, date, memorie partajat, stiv; - dimensiunea regiunii; - adresa regiunii n memoria intern; - starea regiunii (poate fi o comninaie de: blocat, n cerere, n curs de
ncrcare, valid coninutul este ncrcat n memorie i accesibil); - numrul de procese care refereniaz regiunea. Operaiile asupra unei regiuni sunt: - alocarea unei regiuni; - blocarea / deblocarea; - ataarea la un proces; - creterea dimensiunii regiunilor care conin date; - ncrcarea coninutului unui fiier n regiune; - eliberarea unei regiunii; - detaarea unei regiuni; - duplicarea unei regiuni; Fiecare proces are o tabel numit tabela regiunilor per proces . Fizic ea poate
intra n tabela proceselor, n zona u, sau ntr-o zon de memorie alocat acestui scop. Cele mai multe implementri plaseaz aceast zon n tabela proceselor.
O intrare n tabela regiunilor per proces conine: - un pointer la intrarea corespunztoare n tabela regiunilor; - adresa virtual de nceput (start) a regiuni; pentru procese diferite, o
regiune partajat poate vedea adrese virtuale de nceput diferite (fig. 3.5); - drepturile de acces la regiune: read-only, read-write, read-execute.
Sisteme de Operare
Conceptul de regiune este independent de tehnica de gestionare a memoriei prin paginare la cerere, prin partiionare dinamic i swapping, prin segmentare etc.
Proces 1
10K
20K
40K Stiva
Date
Text
4K
16K
32K Stiva
Date
Text
Proces 2
Tabela regiunilor per proces
Regiuni
b
a
c
d
e
Fig. 3.5. Partajarea unei regiuni