Sunteți pe pagina 1din 27

SISTEME DE OPERARE

Alexandru Averian
http://www.yonan.ro

Bibliografie obligatorie ...................................................................................................................... 1 Definiii. Clasificri. Exemple ............................................................................................................ 2 Clasificare.......................................................................................................................................... 3 Arhitectura hardware a unui sistem de calcul .................................................................................... 4 Sistemul de intreruperi .................................................................................................................. 4 Apeluri sistem................................................................................................................................ 6 Drivere de dispozitiv ...................................................................................................................... 7 Structura unui sistem de operare ...................................................................................................... 9 Componentele unui SO.................................................................................................................... 11 Managementul proceselor .............................................................................................................. 15 Managementul procesorului ( Scheduling )...................................................................................... 17 Criterii de planificare: .................................................................................................................. 17 Algoritmi de planificare ............................................................................................................... 17 Managementul memoriei ................................................................................................................ 19 Metode clasice de alocare a memoriei ......................................................................................... 19 Managementul fiierelor ................................................................................................................. 26 Bibliografie ...................................................................................................................................... 27

Bibliografie obligatorie
Silberschatz A., Galvin P.B. and Gagne G. (2005). Operating Systems Concepts, 7th edn. John Wiley & Sons Tanenbaum A.S. (1987). Operating Systems, Design and Implementation. Englewood Cliffs NJ: Prentice-Hall. Tanenbaum A.S. (1992). Modern Operating Systems. Englewood Cliffs NJ: Prentice-Hall.

Definiii. Clasificri. Exemple


Un sistem de calcul este alctuit dintr-un ansamblu de componente hardware, software i resurse informaionale. Din punct de vedere hardware un sistem de calcul este compus din procesoare, magistrale, memorie intern, discuri, diverse dispozitive de intrare/ieire cum ar fi tastatura, display, imprimata, scaner, adaptoare de retea, etc. Dezvoltarea de programe care s utilizeze direct componentele hardware ale unui sistem este o sarcin extrem de dificil deoarece aceste componente se regsesc ntr-o mare varietate de modele constructive i gestionarea optim a acestora devine practic imposibil. n plus, autorul unui program ce realizeaz calcule tiinifice sau economice nu trebuie s fie preocupat de modul intern de funcionare al discurilor, tastaturii sau imprimantei. Apare astfel nevoia unui sitem de operare (SO) numit i program de baz care s gestioneze corect i eficient componentele hardware ale unui calculator s izoleze utilizatorul de hardware i s ofere programatorilor de aplicaii i utilizatorilor un sistem generic cu funcionalitate extins, uor de programat. Sistemul de operare (numit i software de baz) reprezint o colecie de programe ncrcate n memorie la pornirea unui sistem de calcul, avnd urmtoarele funcii principale: Funcia de administrare a resurselor hardware, software i a informaiilor Funcia de abstractizare i de extindere a funcionalitii sistemului de calcul. D.p.d.v. al mainii sistemul de operare (S.O.) are funcia de administrare a resurselor hardware, funcie exercitat prin controlil alocrii ctre programe a resurselor hardware partajate, cum ar fi procesor, memorie, discuri i dispozitive de Intrare/ Ieire. D.p.d.v. al programatorului de aplicaii i al utilizatorului S.O. are rolul de a reduce complexitatea utilizrii directe a mainii fizice. Funcia de abstractizare i de extindere a funcionalitii se realizeaz prin ascunderea structurii interne a componentelor mainii i prin ncapsularea operaiilor primitive cu acestea n module speciale ale S.O. numite drivere. S.O. creeaz astfel iluzia( imaginea) unei maini virtulale cu o funcionalitate extins, avnd o interfa de lucru simplificat, cu funcii de nivel nalt mai uor de utilizat n programare. S.O. este format dintr-un set de programe. Partea principal a unui S.O. (miezul) se ncarc n memorie la pornirea caculatorului, rmne rezident n memorie i are rol de supervizor. Miezul S.O. se afl ntr-un fiier i se numete kernel. Fiierul se numete imaginea kernelului. Funciile principale ale unui S.O. aflate n kernel sunt legate de: gestiunea proceselor gestiunea procesorului comunicarea ntre procese, sincronizare gestiunea memoriei gestiunea operaiilor legate de ntreruperi gestiunea fiierelor

Clasificare
S.O. au aprut i au evoluat odat cu evoluia sistemelor de calcul. 1. Calculatoare mainframe: calculatorul era programat direct nu existau sisteme de operare in memorie rula cel mult un program odat cu apariia tranzistoarelor: apare primul limbaj de programare i primul S.O. care utiliza conceptul de procesare pe loturi( batch-jobs) i conceptul de job. Procesorul era slab utilizat deoarece perifericele aveau vitez foarte sczut; apare multiprogramarea pentru a ine procesorul ocupat in mod otim. n memorie se ncarc mai multe programe iar planificatorul alege unul din acestea. 2. Sisteme interactive (cu partajarea timpului): permit interaciunea utilizatorului cu programele care ruleaz n memorie apare noiunea de multitasking care reprezint o extensie a multiprogramrii i n care comutarea ntre programe se realizeaz att de rapid nct utilizatorul are senzaia c se execut mai multe programe simultam. 3. Sisteme Desktop 4. Sisteme de tip real 5. Sisteme ncorporate 6. Sisteme cu multiprocesor 7. Sisteme distribuite 8. Clustere 9. Reele peer-to-peer 10. Reele client server Exemple: FreeBSD, Linux, Unix, Solaris, Plan9, Windows, MsDos, Symbian

Arhitectura hardware a unui sistem de calcul


Datorita multitudinii si diversitatii sarcinilor pe care le are de indeplinit, sistemul de operare nu poate fi conceput sub forma unui program unitar. Practic, sistemul de operare consta dintr-o multime de secvente de program, fiecare indeplinind o anumita sarcina. Un argument in favoarea unei asemenea abordari, in afara considerentelor de fiabilitate si usurinta in dezvoltare, il constituie evolutia continua a tehnologiilor utilizate, in special in ceea ce priveste dispozitivele periferice. Daca la un moment dat se pune problema inlocuirii intr-un calculator a unui asemenea periferic (de exemplu mouse) cu unul mai nou, va trebui schimbata secventa de program care se ocupa de gestionarea sa. In cazul in care sistemul de operare ar fi un program unic, acesta ar trebui inlocuit in intregime, ceea ce este inacceptabil in practica. Asupra acestui aspect vom reveni ulterior. Pe de alta parte, exista o serie de operatiuni fundamentale, care trebuie realizate intotdeauna in acelasi mod, independent de particularitatile hardware-ului. Partile de program care indeplinesc aceste sarcini fundamentale formeaza nucleul sistemului de operare, care dirijeaza si controleaza functionarea sistemului de calcul in ansamblul sau. In continuare, notiunile de sistem de operare si de nucleu al sistemului de operare se vor confunda in mare masura, deoarece celelalte componente ale sistemului de operare sunt utilizate de catre nucleu pentru a-si indeplini sarcinile. Nu exista intotdeauna o delimitare clara intre nucleu si celelalte componente. Conceptiile diversilor producatori de sisteme de operare difera in ceea ce priveste locul unora dintre functii - in nucleu sau in afara sa. Totusi, practic toate sistemele de operare existente includ in nucleu urmatoarele componente:

gestiunea proceselor gestiunea memoriei sistemele de fisiere

Majoritatea activitatilor pe care le desfasoara sistemul de operare nu pot fi realizate exclusiv prin software. Este necesar un sprijin, uneori substantial, din partea componentelor hardware si in special din partea procesorului. Natura exacta a acestui sprijin va fi discutata in continuare.

Sistemul de intreruperi
Principala facilitate oferita de catre procesor o constituie sistemul de intreruperi. Necesitatea acestuia devine evidenta in momentul in care studiem modul in care se executa programele. Uzual, procesorul executa instructiunile intr-o ordine data de urmatoarele reguli:

daca instructiunea curenta este una de salt, va fi executata in continuare instructiunea de la adresa la care se face saltul in caz contrar, va fi executata in continuare instructiunea aflata in memorie la adresa imediat urmatoare dupa instructiunea curenta

Ca o concluzie generala, intotdeauna o instructiune care face parte dintr-un program va fi urmata de o alta instructiune din acelasi program. Pana aici nu exista nici o posibilitate de a parasi programul aflat in executie decat daca acesta se termina singur. Acest model corespunde in general cerintelor, deoarece un program aflat in executie ruleaza in majoritatea timpului fara a tine cont de existenta sistemului de operare; totusi, acesta din urma trebuie sa poata interveni in anumite situatii bine definite, cum ar fi:

incercarea unui program de a efectua o actiune nepermisa o cerere explicita adresata de programul de aplicatie, privind efectuarea unui anumit serviciu de catre sistemul de operare alte evenimente aparute in sistem, care pot sa nu aiba legatura cu programul aflat in executie, dar care trebuie tratate imediat

Sistemul de operare va lasa deci orice program sa se execute fara interferente pana la aparitia uneia din situatiile descrise mai sus, dar in acest moment trebuie sa preia imediat controlul. Solutia este, asa cum am precizat deja, de natura hardware si este reprezentata de sistemul de intreruperi. Concret, acesta ofera tocmai posibilitatea intreruperii executiei programului curent in una din urmatoarele situatii:

o cerere de intrerupere venita din partea unui dispozitiv periferic; acest caz poarta denumirea de intrerupere hardware o operatie executata de procesor, care a dat un rezultat anormal (de exemplu o operatie de impartire la 0); asemenea situatii sunt denumite exceptii o cerere explicita venita chiar din partea programului aflat in curs de executie; asemenea cereri, numite intreruperi software, sunt utilizate de obicei pentru a cere sistemului de operare efectuarea unui anumit serviciu pe care programul de aplicatie nu-l poate realiza singur

Indiferent care este cauza care a produs intreruperea, comportarea procesorului este urmatoarea:

executia programului curent este suspendata si se memoreaza informatiile necesare pentru a putea relua in viitor executia respectivului program, fara a-i fi afectata comportarea se identifica sursa cererii de intrerupere in functie de cauza intreruperii, se apeleaza o anumita rutina care este responsabila de tratarea respectivei situatii la terminarea rutinei, folosind informatiile memorate, se revine la executia programului intrerupt, exact in punctul in care se afla acesta in momentul intreruperii

Evident, rutinele care trateaza situatiile generatoare de intreruperi fac parte din sistemul de operare, care poate astfel rezolva problemele aparute. Datorita flexibilitatii sale, mecanismul intreruperilor este folosit astazi de toate procesoarele existente. Asa cum vom vedea in continuare, acest mecanism sta la baza multor facilitati oferite de sistemele de operare.

Apeluri sistem
Una din sursele intreruperilor, prezentate mai sus, o constituie solicitarile formulate in mod explicit de programele de aplicatii catre sistemul de operare, pentru efectuarea anumitor servicii. De ce este insa necesar ca aceste servicii sa fie implementate de catre sistemul de operare si nu pot fi lasate in seama programelor? In primul rand, unele operatii uzuale (afisarea, cautarea pe disc etc.) se desfasoara intotdeauna in acelasi mod; deci, in loc de a scrie practic aceeasi rutina in fiecare program, este mai economic de a o scrie o singura data ca parte a sistemului de operare, astfel ca toate aplicatiile sa o poata utiliza. Pe de alta parte, o serie de actiuni, in special accesele la dispozitivele periferice, prezinta riscuri considerabile pentru intregul sistem de calcul in cazul in care nu sunt realizate corect. Nu este deci convenabil de a permite programelor de aplicatie sa realizeze singure actiunile din aceasta categorie; se prefera ca activitatile de acest tip sa fie indeplinite numai prin intermediul unor rutine incluse in sistemul de operare. Pentru a pune in practica o asemenea abordare, trebuie sa se poata interzice pur si simplu realizarea anumitor operatii de catre programele de aplicatii. Din nou este necesar un suport hardware. Practic toate procesoarele existente astazi pot functiona in doua moduri distincte:

modul utilizator (user mode), in care exista anumite restrictii pentru procesor, in principal nu se pot executa instructiunile de acces la periferice (incercarea de a executa o asemenea instructiune duce la generarea unei exceptii) modul supervizor sau nucleu (kernel mode), in care procesorul nu are nici o limitare

In mod uzual, programele de aplicatii se executa in mod utilizator, iar sistemul de operare ruleaza in mod nucleu. In acest fel se asigura controlul sistemului de operare asupra operatiilor critice. Desi aplicatiile pierd din performanta prin limitarile impuse de modul utilizator, cresterea stabilitatii in functionare justifica din plin aceasta abordare. In acest moment putem studia ce se intampla atunci cand un program cere sistemului de operare furnizarea unui anumit serviciu. O asemenea cerere poarta numele de apel sistem (system call) si consta din urmatorii pasi:

programul, care ruleaza in modul utilizator al procesorului, depune parametrii apelului sistem pe care il solicita intr-o anumita zona de memorie; practic, mecanismul este similar apelurilor de proceduri se executa o instructiune speciala (in general o intrerupere software), care trece procesorul in modul nucleu se salveaza (in general pe stiva) informatiile legate de programul intrerupt care sunt necesare pentru reluarea ulterioara a executiei sale din acelasi punct se identifica serviciul cerut si se apeleaza rutina corespunzatoare

rutina respectiva preia parametrii apelului din zona in care au fost depusi, ii verifica si, daca nu sunt erori, realizeaza actiunea ceruta; rezultatele obtinute sunt la randul lor depuse intr-o zona de memorie cunoscuta programului de aplicatie la terminarea rutinei, procesorul revine in mod utilizator si se reia executia programului din punctul in care a fost intrerupt (utilizand informatiile memorate anterior in acest scop); programul poate prelua rezultatele apelului din zona in care au fost depuse

Se poate observa ca executia unui apel sistem este mare consumatoare de timp. Din fericire, puterea de calcul a procesoarelor moderne este suficient de mare incat sa reduca in limite acceptabile pierderea de performanta datorata apelurilor sistem, iar cresterea fiabilitatii sistemului de calcul in ansamblul sau justifica din plin aceasta abordare. Totusi, pentru aplicatiile in care performanta este critica, se cauta solutii de reducere a ponderii apelurilor sistem, pentru a micsora intarzierile produse de acestea. Unele dintre aceste solutii tin de insasi structura sistemului de operare si vor fi discutate mai tarziu. Exista insa o solutie aflata la indemana programatorilor de aplicatii - lucrul cu buffere. Esenta acestei idei este urmatoarea: pentru majoritatea perifericelor, o mare parte din timpul de comunicare se datoreaza initierii accesului si nu transferului propriu-zis de date. Rezulta de aici ca s-ar putea economisi timp daca ar fi servite mai multe asemenea cereri intr-un singur acces, in loc de a le servi pe fiecare intr-un acces separat. In mod particular accesul la disc are aceasta caracteristica foarte pronuntata. Solutia este deci de a nu incerca servirea imediata a fiecarei cereri de transfer de date cu un periferic, ci de a astepta acumularea mai multor cereri si a le servi pe toate intr-un singur acces. In acest scop, cererile care asteapta sa fie servite trebuie memorate intr-o zona de memorie dedicata, numita buffer. Ca un exemplu, consideram sistemele din familia Unix, in care aplicatiile sunt scrise in mod traditional in limbajul C. Functia de biblioteca printf se bazeaza pe apelul sistem write, care realizeaza afisarea propriu-zisa. La fiecare apel al functiei printf, sirul de caractere care se doreste a fi afisat este depus intr-un buffer; in plus se verifica daca bufferul s-a umplut, caz in care este realizat un apel sistem write, ce afiseaza toate sirurile din buffer. In acest mod se obtine un castig de viteza care in unele cazuri poate fi substantial. In multe situatii sistemul de operare foloseste el insusi buffere. In general insa apelurile sistem lucreaza fara buffere, deoarece in unele cazuri aplicatia poate avea nevoie ca un anumit transfer sa fie efectuat cat mai repede posibil, fara a mai astepta sosirea altor cereri care sa umple bufferul. Modul de lucrul cu buffere poate fi implementat la nivelul functiilor de biblioteca sau chiar direct de catre utilizator.

Drivere de dispozitiv
Asa cum s-a aratat deja, gestionarea dispozitivelor periferice se confrunta cu desele schimbari suferite de acestea, ca urmare a progresului tehnologic rapid. Este practic imposibil ca producatorul unui sistem de operare sa poata scrie secventele de program necesare pentru gestionarea tuturor perifericelor existente pe piata, cu atat mai mult cu cat permanent apar noi modele. Situatia este valabila in principal pentru imprimante, dar si

pentru celelalte tipuri de periferice (placi video, unitati CD, mouse, placi de retea, placi audio, chipset-urile placilor de baza etc.), cu exceptia partiala a tastaturilor si a discurilor hard, unde maturitatea tehnologica a condus la o standardizare puternica. Din acest motiv se prefera ca gestionarea perifericelor sa fie lasata in seama unor module de program, numite drivere, exterioare nucleului, dar care pot coopera cu acesta. Pentru fiecare dispozitiv periferic existent intr-un calculator trebuie sa existe un driver, altfel respectivul periferic nu va putea fi folosit. In general sistemele de operare contin drivere pentru modelele de periferice cele mai utilizate; in cazul celorlalte, driverele trebuie furnizate de producatorii respectivelor dispozitive. Utilitatea mecanismului driverelor este evidenta: permite schimbarea usoara a oricarui periferic, fara a fi necesara reinstalarea intregului sistem de operare. De asemenea, depistarea si corectarea erorilor devine mult mai facila. Cu toate acestea, in mod traditional, sistemele de operare din familia Unix au o abordare mai putin flexibila, incluzand driverele in nucleu. Aceasta atitudine se justifica prin faptul ca, pentru majoritatea sistemelor Unix, producatorul este si singurul ofertant de hardware, deci nu trebuie sa faca fata unui numar mare de dispozitive produse de alte firme. Totusi, sistemul Linux si alte sisteme Unix ofera in ultima vreme suport pentru incarcarea dinamica a unor module.

Structura unui sistem de operare


Monolitic: Modular : kernelul format dintr-un fiier; majoritatea fiierelor se afl n kernel; este o colecie de funcii fr nicio ierarhizare intern; sistemul este stucturat pe module cu functionalitati bine precizate

Stratificat: este compus din straturi suprapuse, fiecare strat oferind servicii stratului superior i abstractiznd structura i operaiile cu operaiile stratului inferior;

Exokernel: majoritatea serviciilor sunt n afara kernelului i ruleaza n user-mode; kernelul pstreaz funciile de comunicare ntre procese i de izolare; se mai numete kernel la purttor;

creeaz mainivirtuale,crora le aloc resurse, fiecare main virtual rulnd propriul S.O. i propriile procese; Maina virtual: similar cu exokernelul, cu deosebirea ca mainile virtulesunt copii ale hardului pe care ruleaz, avnd propria copie a kernelului i ntreruperi proprii: pot rula S.O. diferite; Sisteme client-server: ( microkernel) majoritatea serviciilor ruleaza in user-mode, kernelul asigurd comunicaia i sincronizareantre procesele client i server; exemple server: fiiere, memorie,terminale; Sisteme distribuite: similar cu client-server, cu deosebirea c serverul i clientul pot fi pe maini diferite;

Exemple:
MSDOS monolitic, nestructurat Windows XP arhitectura stratificat BSD Unix , Solaris arhitectura modular True 64 UNIX, QNX - mikrokernel Linux artitectura monolitica Mach microkernel Mac OS X stratificat, modular Minix microkernel

Componentele unui SO
1. Componenta de management a memoriei: Procesul citete instruciuni, citete si scrie date din memorie. Perifericele controlate prin mecanismul DMA citesc si scriu date n memorie. Programele sunt ncrcate de pe disk n memorie. Dac un program se executa, acesta citete instruciunile si datele din memorie, accesd memoria prin adresele de memorie reprezentate pe 16, 32 sau 64 de bii. Odat terminat un program, el este eliberat din memorie si spaiul su este alocat altui program. Pentru a mbuntii utilizarea CPU si pentru a mri viteza de reacie a sistemului fa de utilizatori sistemul de operare trebuie sa in n memorie mai multe programe n acelai timp (multiprogramare). Exist mai multe scheme de management a memoriei, selectarea unei anumite scheme pentru un S.O. depinznd de mai muli factori, n special de platforma hardware a sistemului destinaie. Sistemul de operare asigur urmtoarele operaii n ceea ce privete managementul memoriei: aloc si dezaloc memorie la cerere; menine o situaie a memoriei alocate i a memoriei libere. decide ce proces s fie ncrcat n memorie cnd aceasta devine disponibil 2. Managementul proceselor: Sistemul de operare este responsabil cu gestiunea proceselor. Modulul (componenta) unui Sistem de Operare care gestioneaz procesele trebuie sa asigure urmtoarele funcii: funcii de creare a unui proces (user sau proces de sistem); tergerea sau eliberarea uni proces din memorie; s asigure mecanisme de sincronizare a proceselor; s asigure mecanisme de comunicare ntre procese; s asigure mecanisme de gestionare a interblocrilor. creeaz i elibereaz procese; suspend i reia executarea proceselor; asigur mecanismele de comunicare i sincronizare ntre procese; se ocup de evitarea interblocaiilor; 3. Planificarea procesorului: asigur accesul proceselor la resursa procesor ntr-un mod echitabil; utilizeaz algoritmi de planificare pentru a mpari timpul de lucru al procesorului ntre procesele din memorie; 4. Gestiunea fiierelor 5. Gestiunea componentelor de Intrare/Ieire: gestioneaz perifericele; asigur alocarea corect a acestora ctre procese; controleaz operaiile de Intrare/Ieire. 6. Managementul dispozitivelor de stocare

Asigur: managementul spaiului liber ; alocarea spaiului la cerere; planificarea i controlul accesului la discuri.

7. Componenta de reea 8. Sistemul de protecie 9. Interfaa de programare a aplicaiilor(API): ofer programatorului un set de funcii de nivel nalt prin care acesta poate accesa n programare serviciile oferite de celelalte componente ale S.O. Serviciile sunt oferite ctre utlizatorul programtor: ncrcarea i executarea programelor operaii (servicii) de I/O. manipularea sistemelor de fiiere (creare, tergere, scriere i citire). comunicaii ntre procese (prin memorie partajat sau prin transfer direct de mesaje ntre procese); detectarea erorilor i recuperare dup eroare (eroare de CPU, de memorie, de scriere, citire, de reea, imprimant).

Sistemul de operare permite accesul la serviciile sale prin apelul unor funcii ale sistemului denumite apeluri-sistem. Aceste apeluri alctuiesc interfaa de acces a programatorului ctre serviciile sistemului de operare. Aceste funcii pot fi apelate direct n limbaj de ascultare prin intermediul vectorului de ntreruperi sau n limbaj de nivel nalt prin apelul unor funcii de biblioteca (care la rndul lor invoca serviciile sistemului, genernd ntreruperile necesare). In sistemul MS-DOS apelul la serviciile S.O. se realizau prin intermediul ntreruperii 21H. In Unix i n Linux se acceseaz prin ntreruperea 80H. Printre serviciile sistemului enumerm: write, create, read/delete, fork, exec, wait, load free, create, delete, send, receive

Exemplu

10. Terminalul( interfaa grafic): ofer posibilitatea utilizatorului calculatorului de a interaciona cu sistemul de calcul prin lansarea de procese;

Exemplu de shell
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include <sys/wait.h> #define MAXLINE 256 int main(void) { char buf[MAXLINE]; pid_t pid; int status; printf("%% "); while (fgets(buf, MAXLINE, stdin) != NULL) { if (buf[strlen(buf) - 1] == '\n') buf[strlen(buf) - 1] = 0;

if ((pid = fork()) < 0) { printf("fork error"); } else if (pid == 0) { /* child */ execlp(buf, buf, (char *)0); printf("couldn't execute: %s", buf); exit(127); } /* parent */ if ((pid = waitpid(pid, &status, 0)) < 0) printf("waitpid error"); printf("%% "); } return 0; }

n plus, un sistem multiuser trebuie s asigure urmtoarele servicii: alocarea resurselor; conturi pentru utilizatori; protecia informaiei; securitatea sistemului fa de interior.

Managementul proceselor
Un proces este o unitate de lucru n cadrul unui sistem de calcul care are un program asociat, cruia i se aloc un set de resurse de memorie, de procesor,etc. i care execut n mod secvenial instruciunile programului. Procesul se mai numete i joburi, mai ales n contextul planificrii proceselor. La lansarea unui proces, acestuia i se aloc o zon de memorie pentru stiv, o zon pentr date i o zon de memorie heap care e alocat dinamic la rulare. In plus, procesul mai conine un contor de program numit instruction pointer i coninutul registrelor procesorului. Procesul se poate afla n una din urmtoarele stri: proces nou ruleaz asteapt gata terminat

Informaia legat de stare face parte din datele asociate fiecrui proces. Aceste informaii despre un proces sunt cninute de ctre planificatorul de procese ntr-o structur special numit Process Control Block. O structur PCB conine: Starea procesului I.D. procesului Instruction pointer(IP)

Registele procesorului Memoria alocat Fiiere deschise Informaii de planificare( prioritate) Lista de dispozitive de Intrare/Ieire asociat procesului

Un proces nu este un program. In modelul de proces discutat pn acum, programul asociat era executat secvenial, instruciune dup instruciune. Altfel spus,un singur proces execut o singur operaiune la un moment dat. Sunt cazuri n care se dorete ca un program s execute n paralel dou sau mai multe operaii. Altfel spus, s execute mai multe proceduri din program In acelai timp. Acest lucru se obine prin introducerea n proces a mai multor fire de execuie. Avantaje: Aplicaiile rspund mai ferm la interaciunea cu utilizatorul Permit partajarea resurselor Duc la economia de memorie i de procesor Utilizarea optim a calculatoarelor multiprocesor

Firele pot fi gestionate la nivel de user-mode sau la nivel de kernel. S.O. moderne ofer suport pentru fire la nivel de kernel.Exist mai multe modele de implementare a firelor: Many-to-One Model: mai multe fire dintr-un p[roces sunt gestionate ( reprezentate ) de un singur fir din kernel. Comutarea ntre fire este rapid i este gestionat n spaiul utilizator. Dar toate firele se blocheaz n cazul n care unul din fire este blocat ntr-un apel de sistem. De asemenea, deoarece un singur fir poate accesa kernelul, acest model de fire nu poate permite rularea n paralel a firelor pe mai multe procesoare. One-to-One Model: fiecrui fir din spaiul user-mode i corespunde un fir n kernel. Dezavantajul este c pentru fiecare fir se mai creeaz nc unul n kernel. Linux, Windows, Unix implementeaz acest model. Many-to-Many Model: mai multe fire din kernel folosesc la planificarea mai multor fire din spaiul utilizator. Programatorii pot crea orict de multe fire n programele lor. Model hibrid (many to many plus one to one)

Managementul procesorului ( Scheduling )


In sistemele multiprogramate, n memorie sunt ncrcate mai multe programe la un moment dat. S-a observat c unele procese sunt mai mult procese de calcul, iar altele manipuleaz date prin sistemul Intrare/Ieire, iar n cadrul unui proces s-a observat repetarea ciclic a unei faze de calcul intens urmat de o faz de ateptare la periferice de Intrare/Ieire. Deci procesul execut o rafal de instruciuni pe procesor, dup care ateapt sosirea datelor la dispozitivul de Intrare/Ieire. Intre dou rafale de instruciuni procesorul nu este utilizat. Pentru o utilizare optim a lui, acesta poate fi cedat unui alt proces care i va executa rafala de instruciuni pn la prima faz de ateptare a datelor. Planificarea accesului la procesor de ctre procese folosete algoritmul de planificare. Exista dou tipuri de algoritmi de planificare: Algoritmi preemptivi: procesul curent poate fi ntrerupt oricnd de ctre S.O. ( dac i expir cuanta de timp) Algoritmi nepreemptivi: procesul nu poate fi ntrerupt oricnd de ctre S.O.; acesta cedeaz controlul de bunvoie la terminarea rafalei de instruciuni sau la intrarea n zona de ateptare. In cazul unor erori, un proces poate bloca ntregul S.O.

Criterii de planificare:
Planificarea proceselor pe procesor va urmri urmtoarele criterii: 1. 2. 3. 4. 5. Utilizarea procesorului n mod optim Troughtput ( numrul de procese terminate n unitatea de timp) Timpul total de rulare Timpul total de ateptare ( n coada ready ) Timpul de reacie

Algoritmi de planificare
Algoritmi de planificare: primul venit, primul servit. Procesele sunt executate n ordinea sosirii lor n coada rady. Algoritmul este nepreemptiv. o Avantaje: toate procesele vor ajunge s ruleze odat i odat; o Dezavantaje: efectul de convoi. Shortest-Job-First: cel mai scutr job mai nti. Algoritmul msoar durata rafalei de instruciuni pentru fiecare proces i ncearc s promoveze pe procesor procesele cu cea mai scurt rafal. Poate fi i preemptiv i nepreemptiv.

Algoritm de planificare dup prioriti: fiecrui proces I se asociaz un numr numit prioritate. Algoritmul avanseaz procesele spre procesor n funcie de prioritatea acestora. Este preemptiv sau nepreemptiv. Dezavantaj: blocare indefinit sau nfometare. O soluie la problema nfometrii ar fi mbtrnirea= o metod de a crete prioritatea proceselor care asteapt de mult timp n coad. Roun-Robin este similar cu F.C.F.S. dar este preemptiv; lucreaz cu noiunea de cuant de timp; procesele stau n coad circular i se execut n ordine pe durata cuantei de timp. Dac rafala de procesor e mai scurt dect cuanta, procesul cedeaz procesorul voluntar; altfel procesul e ntrerupt i trecut n coad i pe procesor intr urmtorul proces din coada circular. Planificarea cu cozi pe mai multe nivele: procesele se mpart pe mai multe categorii i fiecare categorie are propriul ei algoritm de planificare i propria coad de procese. Exemplu: procese beckground, procese sistem,procese pe loturi. Planificarea cu cozi pe mai multe nivele cu feedback: similar cu V., cu posibilitatea trecerii unui proces dintr-o coad n alta. In V. i VI. Cozile au o anumit ordine / prioritate: dac avem dou cozi cu ordin 1 i 2, nti se execut procesele din coada 1 i numai cnd aceasta este goal se execut i procese din coada 2.

Managementul memoriei
Cerine ale memoriei interne. Exist trei cerine de baz ale memoriei interne: Timpul de acces la memoria intern trebuie s fie ct mai mic posibil; acest lucru se realizeaz prin proiectarea adecvat att a componentei hardware ct i a celei software implicate n gestiunea memoriei. Calculatoarele moderne folosesc memoria cache, ce reprezint un tip de memorie cu acces foarte rapid i care conine informaiile cele mai recent utilizate de ctre CPU. Dimensiunea memoriei adresabile trebuie s fie ct mai mare posibil, ceea ce se poate realiza prin conceptual de memorie virtual. Memoria intern trebuie s aib un cost relativ sczut.

Funciile administratorului memoriei interne sunt: Alocarea de spaiu de memorie intern proceselor. Realizarea corespondenei dintre spaiul de adrese al procesului i locaii de memorie intern. Minimizarea timpului de acces la locaiile de memorie.

Realizarea acestor funcii este condiionat att de componenta hardware, ct i de cea software, coninut n SO. Odat cu evoluia componentelor hardware ale SC, s-au schimbat i strategiile de administrare a memoriei, pentru a se valorifica aceste mbuntiri. Reciproc, strategiile privind gestiunea memoriei au evoluat n timp, ceea ce a condus la evoluia componentelor hardware ale sistemelor de calcul. Principalele obiective ale gestiunii memoriei sunt: calculul de translatare a adresei(relocare); protecia memoriei; organizarea i alocarea memoriei operative; gestiunea memoriei secundare; politici de schimb ntre procese, memoria operativ i memoria secundar.

Metode clasice de alocare a memoriei


La sistemele monoutilizator este disponibil ntreg spaiul de memorie. Gestiunea acestui spaiu cade exclusiv n sarcina utilizatorului. El are la dispoziie tehnici de suprapunere (overlay) pentru a-i putea rula programele mari. Ideea de baz este de a pstra n memoria intern numai acele instruciuni i date de care este nevoie permanent. Celelalte grupuri de instruciuni sunt ncrcate n memoria intern numai atunci cnd este nevoie de ele, dup care sunt evacuate. n figura 3.1 este ilustrat acest mod de lucru. Poriunea dintre adresele 0 si a-1 este rezervat nucleului SO, care rmne acolo de la ncrcare i pn la oprirea sistemului. ntre adresele c i m-1 (dac memoria are capacitatea de m locaii) este spaiul nefolosit de ctre programul utilizator activ. Evident, adresa c variaz de la un program utilizator la altul.

Alocarea cu partiii fixe (MFT-Memory Fix Tasks sau alocare static). Se presupune c memoria este mprit n N zone de lungime fix numite partiii. Presupunem c o partiie i este de lungime Ni i este alocat unui proces pe toat durata execuiei lui, indiferent dac o ocup complet sau nu. Editorul de legturi pregtete programele pentru a fi rulate ntr-o zon de memorie prestabilit. De obicei, partiiile au lungimi diferite, astefel nct procesele solicit partiii n conformitate cu dimensiunile lor. Dac un proces are nevoie de nk uniti de memorie ele poate fi ncrcat n oricare dintre partiiile i, pentru care N i nk . n timpul execuiei procesului, un spaiu de dimensiune

N i nk rmne neutilizat. Acest fenomen se numete fragmentare intern. Problema care se pune
este s se aleag partiia astfel nct poriunea de memorie nefolosit s aib o dimensiune ct mai mic, adic s se minimizeze diferenele de forma N i nk . Dac un proces nu ncape n nici una dintre partiiile existente, el nu poate fi executat. Una dintre problemele cele mai dificile este fixarea acestor dimensiuni. Alegerea unor dimensiuni mai mari scade probabilitatea ca unele procese s nu poat fi executate, dar scade i numrul proceselor active din sistem. n cazul n care exist job-uri n sistem care ateapt s fie executate, dar toate partiiile libere existente la momentul respectiv sunt prea mici, apare fenomenul de fragmentare extern a memoriei. Selectarea job-urilor care urmeaz s fie executate se face de ctre planificator, n funcie de necesarul de memorie necesitat de acestea(pe baza informaiilor transmise de ctre utilizator sau determinate automat de ctre sistem) i de partiiile disponibile existente la momentul respectiv. n general, exist dou moduri de legare a proceselor la partiii: Fiecare partiie are coad proprie; legarea la o anumit partiie a proceselor se va face pe baza necesitii diferenei minime ntre dimensiunea partiiei i a procesului (best fitcea mai bun potrivire). singur coad pentru toate partiiile; SO va alege pentru procesul care urmeaz s intre n lucru, n ce partiie se va executa.

Selectarea lucrrii se poate face prin: strategie de tip FCFS(First Come First Served), care are dezavantajul c o anumit lucrare trebuie s atepte n coad chiar dac exist o partiie disponibil n care ar ncpea iar n faa lui n coad se afl job-uri care necesit partiii de dimensiuni mai mari; pe baza mpririi job-urilor n clase de prioriti, n funcie de importana lor, care poate avea dezavantajul prezentat mai sus; pe baza celei mai bune potrivirii ntre dimensiunea job-ului cu dimensiunea partiiei.

Evident c metodele prezentate pot fi combinate. De exemplu, dac avem mai multe job-uri n sistem care au aceeai prioritate, va fi ales cel care se potrivete cel mai bine peste partiia care devine disponibil. Legarea prin cozi proprii partiiilor este mai simpl din punctul de vedere al SO; n schimb, legarea cu o singur coad este mai avantajoas din punctul de vedere al fragmentrii mai reduse a memoriei.

Deoarece n memorie exist mai multe job-uri n execuie, trebuie rezolvate dou probleme: relocarea i protecia memoriei. O soluie a rezolvrii ambelor probleme este ca CPU s conin dou registre speciale, registrul de baz i registrul limit. Cnd lucrarea este planificat pentru execuie, n registrul de baz este ncrcat adresa primei instruciuni din fiierul executabil, iar registrul limit va conine lungimea partiiei. Protecia memoriei se poate realiza i prin aa zis cheie de protecie. Fiecare entitate de memorie alocat (partiie, pagin etc) conine o astfel de cheie, iar fiecare entitate de program ncarcabil la un moment dat(segment, pagin etc) dispune de o cheie de acces. Fiecrei chei de protecie i se asociaz un ir de bii prin care se specific posibilitile zonei respective. Principalele 3 posibiliti sunt R,W,E: R: din zon se poate numai citi (read only). n astfel de zone se trec de obicei elementele constante ale proceselor. W: n zon se poate scrie, eventual zona se poate terge sau se poate extinde. E: continutul zonei poate fi executat. n astfel de zone, coninutul rmne neschimbat, adic este un cod reentrant. Fiecare proces(sau segment de proces) primete la ncrcare un ir de bii reprezentnd drepturi de acces. Acestea sunt n coresponden cu biii reprezentnd posibilitile zonei de memorie. n principiu protecia memoriei, se asigur executnd doi pai: La fiecare invocare a unei locaii de memorie se compar cheia de protecie cu cheia de acces. n caz de neconcordan, accesul este interzis i procesul se termin cu un mesaj de eroare. Dac cheile coincid, atunci se compar posibilitile zonei solicitate cu drepturile de acces ale procesului i cu aciunea cerut de proces. Accesul este permis numai n cazul rspunsului afirmativ la toate aceste comparaii. Alocarea cu partiii fixe a fost folosit la sistemele generaiei a III-a de calculatoare(IBM 360, Felix C256/512/1024), dar ea nu este recomandat pentru utilizarea n cadrul sistemelor unde nu se cunoate dinainte de ce spaiu de memorie are nevoie procesul pentru a fi executat, aspect ntlnit adesea n cadrul sistemelor de operare moderne. Interschimbarea job-urilor(job-swapping) apare n cazul sistemelor cu organizarea memoriei n partiii fixe, din necesitatea ca la anumite momente unele dintre ele s fie evacuate din memorie iar altele s fie introduse n memorie. De exemplu, dac se execut un job i apare un alt job de prioritate mai nalt, jobul de prioritate mai slab va fi evacuat pe disc. n mod normal, un job care a fost evacuat va fi readus n aceeai partiie, restricie impus att strategia de alocare, ct i de metoda de relocare. Dac relocarea se face n momentul asamblrii sau n momentul ncrcrii(relocare static), job-ul nu poate fi transferat ntr-o alt partiie; dac se folosete relocarea dinamic(cu registru de baz i registru limit, de exemplu) acest lucru este posibil.

Interschimbarea joburilor necesit o memorie extern cu acces direct i rapid, care s poat ngloba copii ale tuturor imaginilor de memorie utilizator. Toate procesele ale cror imagini de memorie se afl pe disc i care sunt gata s intre n execuie se grupeaz ntr-o coad, n timp ce procesele existente n memorie la momentul respectiv formeaz alt coad. Atunci cnd planificatorul dorete s lanseze n execuie un proces, el apeleaz dispecerul care verific dac procesul se afl n memorie. Dac nu i dac nu exist nici o partiie liber, dispecerul evacueaz din memorie unul dintre procese, introduce n locul su procesul dorit, rencarc registrele i transfer controlul procesului selectat. Bineneles c o aciune de acest fel presupune i cea de salvare a contextului procesului n execuie(a coninuturilor regitrilor utilizai de ctre acesta), aciune care este destul de complex. Alocarea cu partiii variabile (alocare dinamic sau alocare MVT Memory Variable Task), reprezint o extensie a alocrii cu partiii fixe, care permite o exploatare mai eficient a memoriei SC. n cazul multiprogramrii cu partiii fixe, problema cea mai dificil este optimizarea dimensiunii partiiilor, astfel nct s se minimizeze fragmentarea memoriei. De asemenea, se presupune c joburile au o dimensiune cunoscut, ipotez care nu este n general adevrat. Aceste inconveniente pot fi rezolvate dac se admite modificarea dinamic a dimensiunii partiiilor, n funcie de solicitrile adresate sistemului i de capacitatea de memorie nc disponibil la un moment dat. Prin folosirea acestei metode, numrul i dimensiunea partiiilor se modific n timp. n momentul n care procesul intr n sistem, el este plasat n memorie ntr-un spaiu n care ncape cea mai lung ramur a sa. Spaiul liber n care a intrat procesul, este acum descompus n dou partiii: una n care se afl procesul, iar cealalt ntr-un spaiu liber care poate fi alocat altui proces. De asemenea, cnd un proces i termin execuia spaiul din memorie ocupat de el este eliberat, urmnd a fi utilizat de ctre un alt proces. Apare, deci o alternan a spaiilor libere cu cele ocupate. Pentru a se obine spaii libere de dimensiune ct mai mare, SO va declana operaia de alipire a unor spaii libere vecine sau de compactare a memoriei (relocare a adreselor), adic de deplasare a partiiilor active ctre partiia ocupat de ctre nucleul SO, pentru a se concatena toate fragmentele de memorie neutilizate. De regul, operaia de compactare este complex, presupunnd efectuarea de operaii de modificare a adreselor; n practic se aleg soluii de compromis, cum ar fi: Se lanseaz periodic compactarea, la un interval de timp fixat, indiferent de starea sistemului. Procesele care nu au loc n memorie ateapt compactarea sau terminarea altui proces. Se realizeaz o compactare parial pentru a asigura loc numai procesului care asteapt. Se ncearc numai mutarea unuia dintre procese, cu concatenarea spaiilor rmase libere. Strategii de administrare a spaiului din memoria intern. Aa cu am menionat anterior, la un moment dat memoria se prezint ca o alternan a spaiilor libere cu cele ocupate. Cele libere vor fi alocate proceselor care cer memorie, iar cele ocupate, cnd sunt eliberate trebuie, eventual s fie concatenate cu alte spaii libere, pentru a obine zone contigue de dimensiune ct mai mare. Deci, sunt necesare metode prin care s se in evidena spaiilor libere i a celor ocupate i s se aloce spaiile de memorie solicitate.

Administrarea memoriei folosind liste nlnuite. Vom presupune c ntreaga cantitate de memorie solicitat la un moment dat este format dintr-un ir de octei consecutivi, care se aloc proceselor dintr-un rezervor de memorie (numit heap), de unde se ia acest memorie. De asemenea, presupunem c exist dou rutine, una pentru a aloca o zon de memorie i de a ntoarce adresa ei de nceput i o a doua rutin pentru a elibera spaiul alocat anterior, n vederea refolosirii lui. Fiecare zon liber ncepe un cuvnt de control, care conine un pointer ctre urmtoarea poriune liber i un camp care conine lungimea zonei respective. La fel se ntmpl n cazul unei zone ocupate. O zon ocupat(respectiv liber) este reperat dup cuvntul ei de control. n timp, eate posibil ca dou zone libere s devin adiacente. Sistemul conine o procedur de comasare a dou zone libere adiacenter. n momentul n care un proces cere o anumit cantitate de memorie, sistemul caut o zon liber de unde s se ocupe o anumit poriune. Pentru aceasta se folosesc urmtoarele strategii: Metoda primei potriviri (First-Fit). Esena metodei const n aceea c partiia solicitat este alocat n prima zon liber n care ncape.Principalul avantaj al metodei este simplitatea cutrii de spaiu liber. Metoda celei mai bune potriviri (Best-Fit). Esena metodei const n cutarea acelei zone libere care las dup alocare cel mai puin spaiu liber. Avantajul metodei const n economisirea zonelor de memorie mai mari. Dezavantajul este legat de timpul suplimentar de cutare i generarea blocurilor de lungime mic, adic fragmentarea intern excesiv. Primul neajuns este eliminat parial dac lista de spaii libere se pstreaz nu n ordinea cresctoare a adreselor, ci n ordinea cresctoare a lungimilor spaiilor libere; n acest caz algoritmul s-ar complica foarte mult. Metoda celei mai rele potriviri (Worst-fit) este dual metodei Best-Fit. Esena ei const n cutarea acelei zone libere care las dup alocare cel mai mult spaiu liber. Dei numele metodei sugereaz c este vorba despre o metod mai slab, n realitate nu este chiar aa. Faptul c dup alocare rmne un spaiu liber mare, este benefic, deoarece n spaiul rmas poate fi plasat n viitor o alt partiie. Metoda alocrii prin camarazi (Buddy-system) se bazeaz pe reprezentarea binar a adreselor i faptul c dimensiunea memoriei interne este un multiplu al unei puteri a lui 2. Presupunem c se dimensiunea memoriei interne este de forma cx2n, iar unitatea de alocare a memoriei este de forma 2m. Exemplul 1. Dac sistemul are o memorie intern de 32 Mo, atunci c=1 i n=25. Dac dimensiunea memoriei interne este de 192 Mo, c=3 i n=26. De asemenea, se poate considera c unitatea de alocare este de 256 Ko, adic 28. innd cont de proprietile operaiilor cu puteri ale lui 2, att dimensiunile spaiilor alocate, ct i ale celor libere sunt de forma 2k, cu kmn. n concluzie, sistemul va pstra liste separate ale adreselor spaiilor disponibile, n funcie de dimensiunea lor exprimat ca putere a lui 2. Vom numi lista de ordin k, lista tuturor adreselor unde ncep spaii libere de dimensiune 2k. Vor exista astfel nm+1 liste de spaii disponibile.

Exemplul 2. Dac considerm c dimensiunea memoriei interne este de 192 Mo, vom avea 17 liste: lista de ordin 8, avnd dimensiunea unui spaiu de 256 octei; lista de ordin 9, cu spaii de dimensiune 512 .a.m.d. Presupunem c, fiecare spaiu liber(ocupat) de dimensiune 2k, are adresa de nceput un multiplu de 2k. Dou spaii libere se numesc camarazi de ordinul k, dac adresele lor A1 i A2 verific una dintre proprietile urmtoare: A1<A2 , A2=A1+2k i A1 mod 2k+1=0 A2<A1, A1=A2+2k i A2 mod 2k*1=0 Aceast definiie, exprim o proprietate fundamental: Atunci cnd ntr-o list de ordinul k apar doi camarazi, sistemul i concateneaz ntr-un spaiu de dimensiune 2k+1 i reciproc, un spaiu de dimensiune 2k+1 se poate mpri n dou spaii de dimensiune 2k. Algoritmul de alocare de memorie. Pas 1. Fie o numrul de octei solicitai. Se determin min{p/ mpn, o2p}. Pas 2. Se determin k=min{i/pin i lista de ordin i este nevid}. Pas 3. Dac k=p, atunci aceasta este alocat i se terge din lista de ordinul p altfel se aloc primii 2p octei, se terge zona din lista de ordinul k i se creeaz n schimb alte k-p zone libere, avnd dimensiunile 2p, 2p+1,...,2k-1. Observaie. Pasul 3 ai algoritmului se bazeaz pe egalitatea 2k-2p=2p+2p+1+...+2k-1.

Exemplul 3. Se dorete alocarea a 1000 octei, deci p=10. Nu s-au gsit zone libere nici de dimensiunea 210, nici 211 i nici 212. Prima zon liber de dimensiune 213 are adresa de nceput 5x213 i o notm cu I. Ca rezultat al alocrii a fost ocupat zona A de dimensiune 210 i au fost create nc trei zone libere: B de dimensiune 210, C de dimensiune 211 i D de dimensioune 212. Zonele B, C i D se trec respectiv n listele de ordine 10, 11 i 12, iar zona I se terge din lista de ordin 13. Algoritmul de eliberare. Pas 1. Fie 2p dimensiunea zonei eliberate. Se introduce zona respectiv n lista de ordinul p. Pas 2. k=p Pas 3. Verific dac exist camarazi de ordin k: Dac da, efectueaz comasarea lor; terge cei doi camarazi; Introdu noua zon liber de dimensiune 2k+1 n lista de ordin k+1. Pas 4. k=k+1; goto Pas 1. Exemplul 4. S presupunem, de exemplu c la un moment dat zonele A, C i D de dimensiuni 5x213, respectiv 21x211 i 11x212 sunt libere, iar zona B de dimensiune 41x211 este ocupat, zonele fiind adiacente, n ordinea A, B, C, D. n conformitate cu paii descrii mai sus, se execut urmtoarele aciuni:

Se trece zona B n lista de ordin 10. Se observ c zonele A i B sunt camarazi. Drept urmare, cele dou zone sunt comasate i formeaz o nou zon X. Zona X se trece n lista de ordin 11, iar zonele A i B se terg din lista de ordin 10. Se observ c zonele X i C sunt camarazi; ele sunt comasate i formeaz o zon Z care se trece n lista de ordin 12, nlocuind zonele X i C din lista de ordin 11. Se observ c Z i D sunt camarazi; ele sunt terse din lista de ordin 12, iar n lista de ordin 13 se introduce rezultatul comasrii lor.

Managementul fiierelor
Este cea mai vizibil component a sistemului, gestioneaz spaiul de stocare a datelor pe memoria extins (discuri magnetice, benzi magnetice, discuri optice, stick-uri de memorie). Fiecare dispozitiv din cele enumerate are propriile caracteristici legate de modul de acces (secvenial sau aleator), viteza de acces, rata de transfer a datelor Sistemul de operare asigur o vedere uniform a dispozitivelor de stocare care reprezint memoria extins a sistemelor de calcul. Sistemul de operare abstractizeaz modul de funcionare a diferitelor dispozitive de stocare i definete o singur unitate de lucru numit fiier. Un fiier este o colecie de informaii create de utilizator, stocate sub un nume unic. Sistemul de operare asigur urmtoarele funcii n ceea ce privete managementul fiierelor: creeaz i terge fiiere; creeaz i terge directoare; asigur funcii de manipulare a fiierelor i directoarelor; asigur mecanisme de backup.

Bibliografie
http://www.freebsd.org Silberschatz A., Galvin P.B. and Gagne G. (2005). Operating Systems Concepts, 7th edn. John Wiley & Sons Tanenbaum A.S. (1992). Modern Operating Systems. Englewood Cliffs NJ: PrenticeHall. An Introduction to Programming with Threads, Andrew D. Birrell

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