Documente Academic
Documente Profesional
Documente Cultură
Note de curs
(prima pagina)
PREFATA
Utilizarea eficienta a calculatorului in ziua de astazi este imposibila fara intelegerea modului de
functionare a sistemului de operare in sine si a modului in care aplicatiile interactioneaza cu sistemul
de operare. Consideram ca, un curs de sisteme de operare este o parte esentiala a educatiei unui student
in inginerie electronica. Cursul este destinat intelegerii conceptelor fundamentale despre sistemele de
operare moderne din punctul de vedere al utilizatorilor avansati de tehnica de calcul si in mai mica
masura din punctul de vedere al unor dezvoltatori de software de sistem.
Continutul cursului
Ne bazam pe cunostintele generale acumulate de student in cursurile anterioare referitoare la
structura calculatorului si arhitectura sistemelor cu microprocesor si notiunile de programare (algoritmi
si limbaj C/C++). Intreg cursul este organizat in mai multe parti:
o scurta terecere in revista despre ceea ce sunt sistemele de operare, ce fac ele, cum au
evoluat, despre modul in care interactiunea intre utilizator si sistem sau intre operator si
sistem a evoluat in decursul timpului, despre modul cum sunt proiectate si
implementate. Pentru intelegerea modului de evolutie si a modului de evaluare a
performatelor unui sistem se face o scurta trecere in revista a unor concepte de inginerie
software.
Managementul proceselor. Se explica notiunile de proces, procese concurente,
managementul proceselor si a timpului de executie, planificarea CPU si comunicatie
intre procese.
Managementul memoriei.
Gestionarea spatiului de stocare. Fisiere. Protectie.
Studii de caz.
- III -
CUPRINS
-V-
Cuprins
- VI -
Partea I.
O PRIVIRE DE ANSAMBLU
1. Ce este un Sistem de
Operare?
Obiective:
Continut:
thcbwkljnc
-2-
Ce este un Sistem de Operare?
software-ul reprezinta programele care fac posibila functionarea sistemului si care asigura
sarcina de prelucrare a datelor. Software-ul unui sistem de calcul este format din
programe ce pot fi grupate in functie de sarcina pe care o realizeaza:
a. Software de baza, alcatuit din programe ce asigura serviciile de uz general si face
posibila functionarea si utilizarea sistemului de calcul fiind la rindul sau format din:
1. sistemul de operare (SO) care asigura interfatarea intre sistemul de calcul si
utilizator prin activitatea de planificator/alocator de resurselor si prin cea de
coordonator in functionarea sistemului;
2. sistemul de programare cuprinde componente ce permit dezvoltarea de programe
utilizator si rularea lor;
b. Software utilitar, alcatuit din programe cu un grad mai mare de generalitate ce
realizeaza prelucrari specifice si care nu intervin in mod decisiv in functionarea
sistemului de calcul. In aceasta clasa de programe includem programele de gestiune a
informatiei, programe editoare de text si de prelucrare de text, iamgine sau sunet,
medii de dezvoltare de uz general;
c. Software de aplicatie, alcatuit din programe cu un grad redus de generalitate ce
rezolva prelucrari specifice;
-3-
2. Software Engineering
Obiective:
Intelegerea conceptelor si a metodelor de lucru din Ingineria Sistemelor Software
ne asigura o intelegere mai ampla a mecanismelor din interiorul unui sistem de
operare. Definirea corecta a sistemului si a principalelor criterii de analiza care
decid calitatea sa sunt utile pentru fundamentarea analizei. Intelegerea etapelor
unor metodologii de dezvoltare si a costurilor implicate este utila pentru
intelegerea unor decizii din trecut si a stadiului actual al sistemelor.
Continut:
-5-
Software Engineering
Ce este Ingineria Soft? Este termenul adaptat in limba româna pentru ceea ce in literatura de
specialitate este numit Software Engineering, tradus si Ingineria Programarii sau Ingineria Sistemelor
Software(ISS) reprezinta acea parte a ingineriei cu care se incearca stapinirea complexitatii si
conducerea proiectelor de realizare a unor sisteme software complexe. ISS este o ramura a stiintei
relativ tinara. Aparitia ei este legata de ceea ce s-a considerat la un moment dat in anii ’60 (1968) a fi o
criza a productiei de software concomitent cu puternica dezvoltare a componentei hardware a
calculatoarelor. Experienta redusa in dezvoltarea de sisteme software complexe care sa satisfaca
cerintele beneficiarilor si ale utilizatorilor, incadrarea in timp si in buget a condus la dezvoltarea unor
noi abordari si tehnici de lucru.
-6-
Software Engineering
2. Produse dedicate – sunt produse dezvoltate special pentru un beneficiar la cerere. Exemple de
astfel de produse sunt sistemele de control al actionarilor, cele ce implementeaza un anumit
protocol intern de lucru sau sistemele de navigatie.
Diferneta majora intre cele doua clase de produse software este data de provenienta
specificatiilor software. In cel de al doilea caz, specificatiile sunt dezvoltate si controlate de catre
organizatia beneficiara a sistemului. In primul caz, specificatiile sunt controlate de cei ce dezvolta
produsul incercind sa acopere in cit mai mare masura asteptarile utilizatorilor.
Ingineria softului este o ramura a stiintei care fundamenteaza teoretic o parte dintre
activitatile specifice realizarii sistemelor soft.
Din acest punct de vedere avem de a face cu doua parti ale problemei:
1. o disciplina inginereasca – cuprinde aspectele teoretice, metode si a instrumente care utilizate
in mod adaptat specificului problemei conduc la gasirea solutiei problemei. Solutia trebuie
aflata in conditiile unor constringeri de ordin organizational si;
2. suport pentru dezvoltarea software – nu trebuie confundata cu procesul tehnic al dezvoltarii
soft-ului ci mai degraba vine in sprijinul acestuia prin instrumentele de management de proiect,
prin instrumente si metode aplicabile in sprijinul dezvoltarii softului.
Inainte de a explica o parte din notiunile specifice ingineriei software trebuie spus ca aceasta nu
inlocuieste ramuri precum algoritmica, bazele matematice ale sistemelor de calcul, teoria limbajelor
de programare si a compilatoarelor, inteligenta artificiala, etc.
-7-
Software Engineering
! Sistematizarea si automatizarea realizarii unui sistem software de calitate, ieftin si in timp util. !
Atingerea acestui scop este asigurat de organizarea activitatii de realizare a sistemului soft in:
1. Abstractizarea solutiei - intelegem aici trecerea de la enuntul problemei la solutia acesteia.
2. Organizarea procesului de abstractizare (de modelare) a solutiei unui sistem soft. Este
posibil ca solutia sa fie rezultatul multor interactiuni. Controlul (organizarea) acestui proces
este importanta.
3. Reprezentarea solutiei sistemului soft. Realizarea de reprezentari grafice (inclusiv
documentatie) pe parcursul procesului de modelare a solutiei sistemului soft permite
cunoasterea stadiului in care este proiectul – informare, comunicare si intelegere a solutiei
problemei – pentru dezvoltatori si beneficiar.
4. Managementul procesului de realizare a sistemului soft. Este vorba de controlul dezvoltarii
sub aspectele de management a resurselor, termene de executie, controlul calitatii, sa.
Tabel 2.2: Continutul unei metodologii de dezvoltare
Componenta Descriere
Descrierea modelului Descrierea modelului sistemului care va fi dezvoltat si a notatiilor folosite. Exemple:
sistemului model obiectual, model cu masina cu stari finite.
Reguli Constringeri ce se aplica modelului sistemului.
Recomandari Recomandari de tip „good practice” pentru buna organizare a modelului.
Ghid de procedura Activitati ce trebuiesc urmate in dezvoltarea modelului si in organizarea acestei
activitati.
-8-
Software Engineering
Primele metode au aparut in anii ’70 se bazau pe identificarea functionalitatilor de baza ale
componentelor (metode orientate functional). In anii ’80 si ’90 aceste metode au fost completate si s-a
obtinut metode orientate obiect. Diferitele abordari au fost integrate intr-o singura abordare unificata -
Unified Modeling Language (UML).
Toate metodele au in comun idea de a dezvolta modele reprezentabile grafic si de a utiliza
aceste modele in faza de specificare a sistemului si in cea de proiectare.
Obtinerea unui sistem ieftin este relativa; in realitate este o evaluare performanta/cost. Mai
important este obtinerea sistemului cu un cost estimabil si intr-un timp previzibil.
Flux de
control
Mediu inconjurator
-9-
Software Engineering
Sistemul are intrari si iesiri organizate sub forma de interfete. Intrarile sunt actiuni ale
mediului asupra sistemului. Iesirile sunt actiuni ale sistemului asupra mediului. Aceste
interactiuni se realizeaza la nivelul interfetei. Pentru ca doua sisteme sa poata interactiona
este necesar ca interfetele lor sa fie compatibile. In industria soft s-au standardizat interfete
(COM, DCOM, CORBA).
Sistemul poate avea subsisteme. Organizarea sistemului in subsisteme depinde de modul de
organizare (strategia de organizare). Comportarea sistemului nu este simpla suma a
comportarilor subsistemelor deoarece trebuie luata in considerare si interactiunea
subsistemelor. Descompunerea unui sistem in subsisteme se face pina cind fiecare
subsistem este indivizibil (din punct de vedere functional sau al modelarii).
Unele sisteme au un mecanism de control. Controlul se face pe baza informatiilor de la
intrare si de la iesire.
proiectare
Figura 2.2:Procesul de modelare
Unei aceeasi realitati ii pot corespunde mai multe modele functie de scopul modelarii. Un
acelasi model poate corespunde mai multor realitati fizice. Spunem ca fiecare model are un anumit
grad de valabilitate si o anumita precizie in raport cu realitatea fizica pe care o modeleaza.
Obtinerea modelului se poate face pornind de la legi fizice si relatii ce pot fi scrise despre
comportarea sistemului – caz in care obtinem un model natural primar sau derivat – sau putem
considera comportarea sistemului real la frontiera – caz in care modelarea este de tip „black box”.
Realizarea unui sistem soft este o problema de proiectare. Se defineste un comportament dorit
si trecind prin fazele de model matematic se ajunge la realizarea sistemului.
Sistematizarea procesului de realizare a sistemelor soft urmareste gestionarea in mod eficient a
complexitatii problemelor intimpinate in solutionarea proiectului. Aceasta sistematizare realizata prin
metodologia de dezvoltare conduce solutionarea problemei prin realizarea a mai multe nivele de
- 10 -
Software Engineering
Solutie conceptuala
Nivel logic
(Cine, când şi unde execută prelucrările)
Solutie logica
Nivel operational
(Cum se efectuează prelucrarile)
2.4.1. Corectitudinea
Definitie: Este abilitatea unui sistem soft de a executa sarcinile convenite in faza de
specificare.
Corectitudinea este o proprietate de maxima importanta. Corectitudinea se intelege in raport cu
specificatiile care au condus la realizarea sistemului. Din acest punct de vedere specificarea corecta si
completa a sistemului este esentiala. Trebuie facuta observatia ca, corectitudinea nu reflecta modul in
care utilizatorul percepe raspunsul sistemului in raport cu asteptarile proprii decit in masura in care
acestea corspund cu specificatiile sistemului. Specificarea corecta a sistemului soft ramine problema
- 11 -
Software Engineering
de baza in aceasta situatie. Problemele de corectitudine pot fi privite in mod diferit si cu diferite grade
de intelegere la nivelul beneficiarului si la nivelul utilizatorului final.
2.4.2. Robustetea
Definitie: Este abilitatea sistemului soft de a reactiona adecvat in conditii anormale de
utilizare.
Raspunsul sistemului in conditii normale de functionare este dat de specificatii si este verificat
de corectitudinea sistemului. In cazul unor conditii anormale de functionare (exceptii), sistemul va
trebui sa se mentina in buna functionare. Exceptiile de functionare trebuiesc identificate in faza de
specificare si tratate corespunzator. Exceptiile externe datorate utilizatorului (mai ales in cazul
interfetei utilizator) pot fi identificate si limitate intr-o masura relativ mare in detrimentul comoditatii
de utilizare si al flexibilitatii.
2.4.3. Extensibilitatea
Definitie: Este abilitatea unui sistem soft de a se adapta usor la modificari in faza de
specificare.
Problema extensibilitatii este rezolvata structural prin arhitectura interna a sistemului in faza de
proiectare. Un sistem corect modularizat, lizibil si eficient in timpul executiei are toate sansele a fi si
extensibil. Un alt mod de a granta o usoara extensie a sistemului este proiectarea unor module cu un
grad mare de autonomie (descentralizate). Succesul unui sistem modular este dat de capacitatea
modulelor de a functiona impreuna (de a interactiona si a „respecta regula jocului”).
2.4.4. Reutilizabilitatea
Definitie: Este abilitatea componentelor unui sistem soft de a putea fi utilizate la dezvoltarea
mai multor aplicatii diferite.
Reutilizarea este parte din strategia de a obtine sisteme corecte, eficiente, ieftine si la timp. S-a
constat ca intr-o masura suficient de mare realizarea aplicatiilor urmeaza de multe ori solutii sablon
ceea ce permite reutilizarea unor componente soft (module). Reutilizarea are efect asupra cresterii
calitatii si a fiabilitatii sistemului. Tehnic, principiu se poate implementa in forme diferite, la nivelul
metodelor de lucru (exemplu model orientat obiect), al conectarii componentelor sau al tehnologiilor.
In cazul sistemelor modulare, reutilizabilitatea se poate discuta la nivel de modul. Refolosirea
modulelor are efect din punct de vedere al reducerii costurilor, din punct de vedere al reducerii
timpilor de dezvoltare si de testare.
2.4.5. Compatibilitatea
Definitie: Este o masura a usurintei cu care componentele unui sistem soft se combina cu alte
componente pentru a forma aplicatii noi.
Compatibilitatea este baza interactiunii dintre sistemele soft. Acceptarea unor standarde de
comunicare intre programe inclusiv reutilizabilitatea la nivel de componente sau tehnologii a dus in
- 12 -
Software Engineering
2.4.8. Portabilitatea
Definitie: Este o masura a usurintei cu care un sistem soft poate fi transerat pe diferite platforme hard
si medii de operare.
Problema este cu atit mai reala si mai dificil de realizat cu cit dispunem in momentul de fata de o mare
diversitate de platforme hard si medii de operare. Portarea unui sistem pe pe o platforma pe alta se
poate realiza in mai multe moduri:
prin modificari in codul sursa. Volumul acestor modificari si afectarea structurii interne a
sistemului este o masura a portabilitatii.
prin generarea unui sistem pentru platforma tinta. Acest lucru este posibil prin utilizarea in
faza de dezvoltare a unor limbaje de programare de nivel inalt si prin utilizarea unor
compilatoare trans-platforma sau translatoare care sa genereze cod executabil specific pentru
platforma hard si pentru mediul de operare dorit.
prin utilizarea unei masini virtuale. Consideram exemplul Java unde avem:
- 13 -
Software Engineering
cod
compilato byte-code
surs
r Java Java
a
masina Java sau
Java
interpretor Java
platforma hardware si
mediu de operare nativ
- 14 -
Software Engineering
etapa de „Utilizare”. In urma utilizarii se pot genera o serie de „Modificari / Imbunatatiri” ale
sistemului.
Problema Specificarea
cerintelor
Implementare
Dezvoltare
Utilizare
Modificare
Abandonare
2.5.1. Analiza
Definitie: Este etapa in care se constata ca este necesar un sistem software si se identifica trasaturi
ale acestuia.
Necesitatea dezvoltarii unui produs soft poate fi rezultatul unor decizii de management si
marketing, bazate pe identificarea unei piete pentru un produs de uz general sau identificarea unei
organizatii care are nevoie de un produs specializat. Pentru un produs de uz general intr-o piata
concurentiala este necesar a se defini unui public tinta pentru care trebuiesc identificate necesitatile si
asteptarile la care trebuie sa raspunda produsul. Pentru un produs dedicat suplimentar este necesara
cunoasterea fluxului existent de date si informatii ale beneficiarului.
Rezultatul etapei de analiza este un set de cerinte (din punct de vedere al utilizatorului direct
cit si al celui indirect) pe care sistemul soft va trebui sa le satisfaca. Pe baza acestor cerinte se vor
descrie specificatiile tehnice ale sistemului. Identificarea cerintelor si producerea specificatiilor
- 15 -
Software Engineering
2.5.2. Proiectarea
Definitie: Este etapa in care solutia sistemului soft este specificata in detaliu.
Pornind de la specificatiile tehnice, sistemul este descompus/compus din module. Proiectarea
modulara asigura o specificarea a unor module simple, usor de testat, de intretinut si dupa caz de
modificat. Un avantaj al dezvoltarii modulare este descentralizarea precum si posibilitatea lucrului in
echipa. In aceasta etapa de proiectare ia nastere ceea ce se cheama arhitectura sistemului. Ca o regula
generala, cu o arhitectura simpla se pot asigura mai usor proprietati precum corectitudinea si
extensibilitatea.
2.5.3. Implementarea
Definitie: Este etapa in care are loc scrierea efectiva a programelor si crearea fisierelor de
configurare. Pentru implementarea specificatiilor rezultate in faza de proiectare supot sunt limbaje de
programare, medii de dezvoltare precum si intreaga teorie dezvoltata de stiinta calculatoarelor.
Alegerea acelor solutii tehnice adecvate specificatiilor poate asigura corectitudinea si eficienta
sistemului.
2.5.4. Testarea
Definitie: Este etapa in care se verifica daca rezultatul implementarii este in concordanta cu
specificatiile.
Daca arhitectura sistemului este una de tip modular specificata in etapa de proiectare atunci partea de
implementare si de testare poate fi realizata intr-o prima faza la nivel de modul. Pentru a simula
intreagul comportament al sistemului, la testarea unui modul se pot utiliza versiuni simplificate ale
celorlalte module.
Metodologiile de dezvoltare a softului controleaza prin descrierea ciclului de viata a produsului soft
activitatile de Abstractizarea solutiei si Organizarea procesului de abstractizare. Celelalte doua
componente ale metodologiei de dezvoltare sunt suportul pentru Reprezentarea solutiei sistemului soft
si Managementul procesului de realizare a sistemului soft.
O cerinta obligatorie impusa de metodologiile de dezvoltare a softului este documentarea si
reprezentarea solutiei in fiecare etapa de realizare a unui proiect. Pentru documentare se folosesc
sisteme automate de generare a documentatiei si se acorda mare atentie limbajului folosit (rigoare,
claritate) si usurintei de utilizare. Pentru reprezentarea solutiei este necesar a avea un sistem unitar
(grafica si text) intuitiv si in acelasi timp sa impuna un formalism strict necesar.
Asigurarea suportului de management a resurselor, de asigurare a calitatii precum si de
gestiune a riscurilor asigura cadrul organzatoric si logistic de desfasurare a proiectului.
- 16 -
Software Engineering
Analiza
Proiectarea
Implementarea
Testarea
Utilizarea si
instruirea
Un dezavantaj major al modelului este aplicarea sa la nivel de sistem ceea ce reduce suportul
pentru controlul proiectelor de dimensiuni mari.
2.5.6. Modelul V
Modelul propus de Ould in 1990 pastreaza ideile de baza ale modelului cascada, le
reorganizeaza ierarhic indicind posibilitatilor de revenire.
In acest model se acorda o mai mare atentie interfetelor sistemului cu utilizatorul. Utilizarea
modelului este dictata de posibilitatea abordarii relatiei sistem-componente. S-au introdus activitati
specifice de verificare(testare) si validare. Verificarea sistemului se face atit pe componete cit si
integral din punct de vedere logic. Validarea permite verificarea corectitudinii specificarii cerintelor
initiale.
- 17 -
Software Engineering
Definirea Validare
cerintelor functionare
Proiectare Testare
sistem sistem
Proiectare Testare
subsisteme subsisteme
- 18 -
Software Engineering
Bibliografie de referinta:
I. Sommerville, Software Engineering, Addison-Wesley, NJ, 6 ed., 2001;
J. Rumbaught, I. Jacobson, G. Booch, The Unified Modeling Language Reference Manual,
Addison-Wesley, 1999
Exercitii / Intrebari:
1. Care sunt proprietatile unui sistem soft? Incercati sa descoperiti si alte atribute.
2. Care sunt diferentele principiale intre un model si sistemul real pe care il modeleaza?
3. In ce mod sunt reduse cheltuielile de testare si specificare in cazul sistemelor comerciale de larg
consum?
4. Cum se realizeaza dezvoltarea sistemelor software deschise (Open Software)? Realizati o
analiza comparativa.
Evaluati aspectele comune ale dezvoltarii sistemelor in inginerie.
- 19 -
Software Engineering
- 20 -
BIBLIOGRAFIE
- 21 -