Sunteți pe pagina 1din 17

SISTEME DE OPERARE

Lector univ. Alexandru Averian http://yonan.ro/?q=node/37

1. Bibliografie obligatorie 2. Definiii. Clasificri. Exemple 3. Structura unui sistem de operare 4. Managementul proceselor i firelor 5. Comunicarea intre procese 6. Managementul procesorului, algoritmi de planificare 7. Gestiunea memoriei 8. Gestiunea fiierelor 9. Gestiunea dispozitivelor de intrare iesire 10. Securitate n sisteme de operare 11. Laborator, Unix

Bibliografie obligatorie
Silberschatz A., Galvin P.B. and Gagne G. (2005). Operating Systems Concepts, 7th edn. John Wiley & Sons (o gasiti pe http://yonan.ro/?q=node/37 ) 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

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 pid_t int buf[MAXLINE]; pid; 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

I.

Algoritmi de planificare: primul venit, primul servit. Procesele sunt executate n ordinea sosirii lor n coada rady. Algoritmul este nepreemptiv. Avantaje: toate procesele vor ajunge s ruleze odat i odat; 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.

II.

III.

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.

IV.

V.

VI.

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://yonan.ro/?q=node/37 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

Test
1) Ce este un sistem de operare? a. ansamblul elementelor hardware incorporate n calculator b. ansamblul elementelor software incorporate n calculator c. un program sau un grup de programe care asigura exploatarea eficienta a resurselor hardware si software ale unui sistem de calcul d. kernelul 2) Un sistem de operare se mai numeste a. software de baza b. compilator c. editor de text d. kernel 3) Cea mai important tehnica de exploatare optima a procesorului introdus in sistemele cu procesare pe loturi: a. partajare a timpului b. multiprogramare c. programare paralela d. executare inlantuita 4) Un sistem de operare care permite comunicarea permanent ntre utilizator si sistemul de calcul este un sistem cu a. multiprogramare b. programare paralela c. pelucrare pe loturi d. partajare a timpului 5) Un sistem de operare care permite comunicarea permanent ntre utilizator si sistemul de calcul este un sistem cu a. multiprogramare b. pelucrare pe loturi c. time-sharing d. interfata grafica 6) Comanda df h din sistemul de operare UNIX a. Afiseaza continutul unui fisier b. Afiseaza lista de partitii i spatiul liber c. Afiseaza lista de procese active d. Afiseaza continutul unui director 7) Comanda top din sistemul de operare UNIX a. Afiseaza topul userilor logati n sistem b. Afiseaza lista de programe i memoria alocata acestora c. Afiseaza interactiv procesele active n sistem d. Afiseaza interactiv primele linii ale unui fisier 8) Comanda head din sistemul de operare UNIX a. Afiseaza continutul unui fisier b. Afiseaza primele linii ale unui fisier c. Afiseaza ultimele linii ale unui fisier d. Afiseaza lista de partitii i spatiul liber i cel ocupat

9) Un sistem de operare cu prelucrare pe loturi poate fi: a. cu interfata grafica b. interactiv c. cu multiprogramare d. cu planificare de timp real 10) Un sistem de operare interactiv nu poate fi: a. cu interfata n linie de comanda b. cu multiprogramare c. cu partajare a timpului d. cu prelucrare pe loturi

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