Sunteți pe pagina 1din 16

Utilizarea Sistemelor de Operare

Concepte de baz n Sisteme de Operare


- Curs 3 20.10.2005

Universitatea POLITEHNICA Bucureti

2. Concepte n sistemelor de operare

Exist un numr de concepte comune sistemelor de operare


procese modul de gestionare a memoriei fiiere

Utilizarea Sistemelor de Operare

Procese Un proces este un program n execuie, cruia i se asociaz un spaiu de adrese Pentru a putea rula mai multe procese, acestea sunt partajate n timp
La reluarea procesului acesta trebuie repornit din starea pe care o avea n momentul suspendrii n multe SO, informaiile despre fiecare proces, altele dect coninutul propriului spaiu de adrese, sunt reinute ntr-un tabel de procese

Un rol cheie n gestiunea sistemului l au apelurile de sistem pentru iniierea i terminarea proceselor
Utilizarea Sistemelor de Operare 3

Comunicaia ntre procese


Un proces poate crea mai multe procese (numite copii) care la rndul lor pot crea alte procese. Astfel se ajunge la o structura de tip arbore Procesele pot comunica ntre ele. n cazul n care procesul corespondent nu rspunde dup un anumit timp, SO trimite un semnal de alarm care trebuie tratat (de ex. prin retrimiterea mesajului) Fiecare utilizator de sistem are asociat un UID (User Identification). Fiecare proces conine UID-ul utilizatorului care l-a declanat. Un proces copil are acelai UID ca i printele su. Exist un UID (superuser n UNIX) care are puteri depline asupra sistemului
Utilizarea Sistemelor de Operare 4

2.2 Interblocrile Cnd mai multe procese interacioneaz, pot ajunge la o situaie conflictual din care nu mai pot iei. O astfel de situaie se numete interblocare (deadlock) Exemplu:
Procesele 1 i 2 trebuie s copieze date de pe disc pe CD-ROM Procesul 1 solicit i primete acces la disc Procesul 2 solicit i primete acces la CD-ROM Procesul 1 nu primete acces la CD-ROM pn cnd procesul 2 nu cedeaz accesul Procesul 2 nu primete acces la disc pn cnd procesul 1 nu cedeaz accesul
Utilizarea Sistemelor de Operare 5

2.3 Gestionarea memoriei Fiecare program executat este reinut n memoria principal. Pentru a evita interferenele ntre ele este necesar un mecanism de protecie Fiecare proces are un set de adrese pe care le poate folosi: de la 0 la limita superioar. Limita superioar trebuie s fie mai mic dect dimensiunea memoriei principale pentru a rmne suficient spaiu pentru SO Prin memoria virtual SO pstreaz o parte din spaiul de adrese n memoria principal i o parte o transfer pe disc, putnd realiz transferuri ntre cele dou blocuri de memorie
Utilizarea Sistemelor de Operare 6

2.4 Intrare / Ieire Fiecare SO are un subsistem de I/E pentru administrarea dispozitivelor de I/E Unele programe sunt independente de dispozitiv, putnd lucra cu mai multe dispozitive de I/E Exist i drivere specifice unor dispozitive de I/E

Utilizarea Sistemelor de Operare

2.5 Fiiere
Sistemul de fiiere ascunde particularitile discurilor i ale altor dispozitive de I/E Deschiderea, citirea, scrierea i nchiderea unui fiier sunt generate de apeluri de sistem Majoritatea SO folosesc conceptul de director (directory) pentru gruparea fiierelor.
Intrrile dintr-un director pot fi fiiere sau alte directoare. Acest model d natere unei ierarhii: sistemul de fiiere

Ierarhiile de procese nu sunt foarte adnci (n general mai puin de 3 niveluri). Spre deosebire de acestea, ierarhiile de fiiere sunt mult mai adnci

Utilizarea Sistemelor de Operare

Identificarea fiierelor
Fiecare fiier dintr-o ierarhie poate fi identificat prin atribuirea unui nume de cale (path name)

Calea absolut ctre un fiier const dintr-o lista de cataloage care trebuie parcurse pornind de la catalogul rdcin, care este precedat de separatorul /. Componentele cii sunt separate de / n UNIX i \ n MS-DOS i Windows n fiecare moment un proces are un director de lucru curent n care caut numele de cale care un ncep cu / (ci relative) Pentru a trata dispozitivele de memorie extern care pot fi mutate, n UNIX sistemul de fiiere de pe acestea poate fi adugat la arborele principal ntr-un director. Pentru aceasta se folosete apelul de sistem mount
Utilizarea Sistemelor de Operare 9

Drepturi la nivel de fiier

naintea citirii sau scrierii unui fiier, acesta trebuie deschis, moment n care sunt verificate drepturile de acces.
Dac accesul este permis, SO ntoarce un numr ntreg mic, numit descriptor de fiier. Dac accesul este interzis, SO ntoarce un cod de eroare.

Utilizarea Sistemelor de Operare

10

Fiiere speciale n UNIX, un concept legat de fiiere este cel de fiier special. Un fiier special face ca dispozitivele de I/E s fie prezentate utilizatorului sub form de fiiere. Astfel, pentru lucrul cu un dispozitiv de I/E se folosesc acelai apeluri de sistem ca i pentru lucrul cu fiiere. Fiierele speciale sunt pstrate n directorul /dev Fiierele speciale se mpart n dou categorii
Fiiere orientate pe bloc (pentru discuri) Fiiere orientate pe caracter (pentru imprimant, modem, etc)

Utilizarea Sistemelor de Operare

11

Fiiere legtur (pipe)

O conduct (pipe) este un pseudo-fiier care poate fi folosit pentru conectarea a dou procese.
Pipe Proces A Proces B

Procesul A, pentru a trimite date procesului B, scrie n pipe ca ntr-un fiier de ieire. Procesul B, pentru a primi datele, citete din pipe ca dintr-un fiier de intrare.
Utilizarea Sistemelor de Operare 12

2.6 Securitatea SO trebuie s asigure confidenialitatea datelor stocate Fiierele din UNIX sunt protejate prin coduri de protecie de 9 bii
Un cmp de 3 bii pentru proprietarul fiierului Un cmp de 3 bii pentru ceilali membri ai grupului proprietarului Un cmp de 3 bii pentru oricine altcineva Fiecare cmp are un bit pentru accesul la citire (read), unul pentru accesul la scriere (write) i unul pentru a permite executarea fiierului (execute). Ex: rwxr-x--x

Utilizarea Sistemelor de Operare

13

2.7 Interpretorul de comenzi Interpretorul de comenzi nu face parte din SO Interpretorul de comenzi UNIX se numete shell Exist mai multe module de interpretare (sh, csh, ksh, bash), toate derivnd din sh Interpretorul
Vede terminalul ca intrare i ieire standard Afieaz un prompt atunci cnd este pregtit s accepte o comand (de ex. $) Atunci cnd utilizatorul tasteaz o comand (de ex. date), este lansat un proces-copil care trateaz aceast comand

Utilizarea Sistemelor de Operare

14

2.7 Interpretorul de comenzi (2) Ieirea standard poate fi redirecionat ctre un fiier prin plasarea separatorului >:
date > fiier

Intrarea standard poate fi redirecionat, prin plasarea delimitatorului <:


date < fiier

Datele de ieire ale unui program pot constitui date de intrare pentru alt program daca se utilizeaz o conduct (pipe):
comand1 | comand2

Utilizarea Sistemelor de Operare

15

3. Apeluri de sistem Interfaa dintre SO i programele utilizatorilor este definit de mulimea apelurilor de sistem. Invocarea unui apel de sistem se aseamn cu invocarea unei proceduri. De exemplu, dac un proces dorete s citeasc date dintr-un fiier:
Execut un apel de sistem i transfer controlul ctre SO SO deduce ce dorete sa fac procesul din parametrii apelului de sistem SO execut apelul la nivelul kernelului i red controlul procesului, n instruciunea care urmeaz apelului de sistem

Punerea n coresponden a apelurilor de proceduri POSIX cu apelurile de sistem este aproape unu la unu
16

Utilizarea Sistemelor de Operare

Exemplu: apelul sistem de citire Apelul sistem read poate fi iniiat dintr-un program C prin intermediul procedurii de bibliotec cu acelai nume Apelul de sistem read are 3 parametri
Primul specific fiierul Al doilea desemneaz memoria tampon Al treilea specific numrul de octei ce trebuie citii

read ntoarce numrul de octei citii efectiv:


cout = read(fd, buffer, nbytes); Dac
cout == nbytes, apelul s-a ncheiat cu succes cout < nbytes i cout != -1, atunci s-a ajuns la sfritul fiierului cout == -1, apelul de sistem nu a putut fi executat

Utilizarea Sistemelor de Operare

17

read
Atunci cnd este apelat funcia de bibliotec read sunt parcuri urmtorii pai:
1, 2 i 3: programul apelant pune parametrii fd, buffer i nbytes pe stiv 4: apelul efectiv al procedurii de bibliotec

5: procedura de bibliotec pune numrul apelului de sistem ntrun registru 6: procedura de bibliotec execut o instruciune TRAP pentru a trece n modul kernel i a ncepe execuia de la o adres fix din spaiul kernel-ului 7: codul din kernel care ncepe s se execute citete numrul apelului de sistem i d controlul rutinei de tratare a apelului de sistem respectiv 8: ruleaz rutina de tratare a apelului de sistem 9: dup ce rutin i-a terminat treaba, controlul poate fi redat procedurii de bibliotec la instruciunea urmtoare instruciunii TRAP 10: aceast procedur red controlul programului apelant 11: programul apelant cura stiva

Utilizarea Sistemelor de Operare

18

Apeluri de sistem pentru gestiunea proceselor

Pentru administrarea proceselor:


pid = fork() pid = waitpid(pid, &statloc, options) s = execve(name, argv, environp) exit(stare)

Utilizarea Sistemelor de Operare

19

Apeluri de sistem pentru gestiunea fiierelor

Pentru administrarea fiierelor


fd = open(file, how, ) s = close(fd) n = read(fd, buffer, nbytes) n = write(fd, buffer, nbytes) position = lseek(fd, offset, whence) s = stat(name, &buf)

Utilizarea Sistemelor de Operare

20

10

Alte apeluri de sistem

Pentru administrarea directoarelor i a sistemelor de fiiere


s = mkdir(name, mode) s = rmdir(name) s = link(name1, name2) s = unlink(name1, name2) s = mount(special, name, flag) s = umount(special)

Diverse
s = chdir(dirname) s = chmod(name, mode) seconds = time (&seconds)
Utilizarea Sistemelor de Operare 21

Apeluri de sistem pentru gestiunea proceselor


Stiv Spaiu liber

Date Text

Procesele n UNIX au spaiul de memorie mprit n trei segmente: segmentul de text (codul surs), segmentul de date (variabilele) i segmentul stiv. Segmentul de date crete de jos n sus, iar cel de stiva de sus n jos.
Utilizarea Sistemelor de Operare 22

11

Apeluri de sistem n sisteme Windows n Windows apelurile de bibliotec i apelurile de sistem sunt decuplate Apelurile de bibliotec sunt reunite ntr-un set de proceduri denumit Win32API Numrul de apeluri Win32API este de ordinul miilor. Multe dintre ele invoc apeluri de sistem, rulnd n mod kernel, dar o mare parte se execut exclusiv n mod utilizator n UNIX interfaa grafic ruleaz n ntregime n mod utilizator. n WIN32API ns, pentru administrarea acesteia exist un numr mare de apeluri de sistem

Utilizarea Sistemelor de Operare

23

4. Structura SO Cea mai ntlnit form de organizare Nu exist o structur clar SO este scris ca o colecie de proceduri, fiecare putnd s le apeleze pe oricare alt procedur de oricte ori este nevoie Serviciile oferite de SO (apeluri de sistem) sunt cerute punnd parametrii ntr-un loc bine definit i executnd apoi o instruciune TRAP.
Sistemul trece n mod kernel i transfer controlul SO. SO preia parametrii i determin apelul de sistem care trebuie executat.

Utilizarea Sistemelor de Operare

24

12

4.1 Sisteme monolitice (2)


Apoi caut ntr-un tabel o referin la procedura care se ocup de tratarea apelul de sistem cerut

Structura de baz a SO este:


Un program care invoc procedura de serviciu cerut Un set de proceduri i servicii care trateaz apelurilor de sistem Un set de proceduri utilitare care ajut procedurile de servicii

Utilizarea Sistemelor de Operare

25

4.2 Sisteme structurate pe nivele SO poate fi construit ca o ierarhie de nivele, fiecare construit deasupra celui de sub el Structura SO THE:
5. Operatorul 4. Programe utilizator 3. Managementul I/E 2. Comunicare operator-proces 1. Gestiunea memoriei i a rolei magnetice 0. Alocarea procesorului i multiprogramare

O generalizare i mai extins a conceptului de organizare pe niveluri era prezent n sistemul MULTICS
Utilizarea Sistemelor de Operare 26

13

4.3 Maini virtuale (1) Primele versiuni de OS/360 erau sisteme de prelucrare pe loturi. Pentru acestea a aprut un sistem care s permit rularea cu divizarea timpului. Acest sistem se numete VM/360 i funcioneaz pe principiul:
Un sistem cu divizarea timpului ofer: multiprogramare i o maina extins cu o interfa mai comod dect hardware-un simplu

Partea principal a sistemului, monitorul mainii virtuale, ruleaz direct pe hardware i realizeaz multiprogramarea, oferind mai multe maini virtuale nivelului superior
Utilizarea Sistemelor de Operare 27

4.3 Maini virtuale (2) Mainile virtuale sunt copii exacte ale hardwareului, incluznd modurile kernel i utilizator, I/E, ntreruperi, etc. Prin urmare ele pot rula orice SO care ar rula direct pe hard Unele maini virtuale ruleaz un SO monoutilizator, interactiv (CMS: Conventional Monitor System). CMS trimite apelul de sistem ctre SO virtual, genernd apoi instruciuni de I/E normale pentru citirea discului su virtual Mainile virtuale sunt folosite azi pentru a rula programe MS-DOS pe 16 bii pe un Pentium
Instruciunile normale ruleaz direct pe hard
Utilizarea Sistemelor de Operare 28

14

4.3 Maini virtuale (3)


Atunci cnd se execut o instruciune TRAP ctre SO pentru a face un apel de sistem, aceast instruciune ajunge la monitorul mainii virtuale

Alt domeniu n care sunt folosite mainile virtuale este rularea programelor Java
Sun Microsystems a introdus JVM (Java Virtual Machine) Compilatorul de Java produce cod pentru JVM, care este executat de un interpretor virtual JVM Avantajul este dat de faptul c programele ruleaz pe calculatorul client i nu pe server

Utilizarea Sistemelor de Operare

29

4.4 Exokernel-uri SO ofer fiecrui utilizator ntr-o main virtual o clon a sistemului respectiv, dar avnd doar un subset de resurse (de ex., doar adresele de memorie ntre 0 i 1023) La nivelul cel mai de jos se afla un program numit exokernel, care ruleaz n mod kernel. El ofer resurse mainilor virtuale i verific respectarea acestora n acest fel dispare nivelul de punere n coresponden

Utilizarea Sistemelor de Operare

30

15

4.5 Modelul client-server (1) n SO moderne exist tendina de a muta codul la nivelele superioare li de a scoate ct mai mult posibil din modul kernel, rmnnd un microkernel minimal n general pentru aceasta se implementeaz cea mai mare parte a SO n procese utilizator Pentru a cere un serviciu, un proces utilizator (proces client) trimite o cerere unui proces server, care o proceseaz i trimite napoi rspunsul Este de dorit ca procesul server s ruleze n mod utilizator Kernel-ul doar gestioneaz comunicaia ntre clieni i servere
Utilizarea Sistemelor de Operare 31

4.5 Modelul client-server (2) Avantaje:


Prin divizarea SO, acesta devine mai uor de administrat Dac un serviciu se blocheaz, ntreg SO nu va face acest lucru Modelul client-server poate fi adaptat pentru a putea fi folosit n sisteme distribuite

Utilizarea Sistemelor de Operare

32

16