Sunteți pe pagina 1din 69

Cursul 2:

Structuri SO
Sisteme de Operare
Cursul 1: Recapitulare
Ipostaze SO
•SO ca si “magician”:
• Face ca aparent limitarile hardware sa dispara
• Creaza iluzia de masina dedicata cu memorie infinita si procesoare
infinite
•SO ca si “guvernator”:
• Protejeaza utilizatorii unul de celalalt
• Aloca resursele eficient si corect
•SO ca si “sistem complex”:
• Exista o tensiune permanenta intre simplitate pe de o parte si
functionalitate si performanta pe de alta parte
•SO ca si “profesor de istorie”
• Invata din trecut
• Se adapteaza in functie de noile specificatii hardware
Cursul 1: Recapitulare
Servicii OS vs HW
Cursul 2: Structurile
sistemelor de operare
• Structurile ale Sistemelor de Operare
• Serviciile SO
• Interfata utilizatorului
• Apeluri de sistem
• Proiectarea si implementarea SO
• Modele de lucru
• Masini virtuale
Obiective
• Descrierea serviciilor pe care un sistem de
operare le ofera userilor, proceselor si altor
sisteme.
• Prezentarea multitudinii de metode de
structurare al unui sistem de operare
Serviciile SO
Serviciile SO
• Servicii care ofera functii pentru Utilizatori:
• Interfata utilizator– Aproape toate Sistemele de Operare
au o interfata utilizator (UI-User Interface)
• Variaza intre interfata in linie de comanda (CLI),
interfata grafica (GUI- Graphics User Interface) sau
Batch (seturi de comenzi prestabilite)
• Executarea programelor – Sistemul trebuie sa fie capabil
sa incarce un program in memorie, sa il ruleze si sa incheie
executia, fie normal sau cu exceptii (indicand astfel eroare)
• Operatii de I/E - Un program care ruleaza poate sa
necesite operatii de I/E care pot sa implice un fisier sau un
dispozitive de I/E
• Gestiune sistemului de fisiere – Programele au nevoie
sa citeasca si sa scrie fisiere si directoare, sa le creeze si
sa le stearga, sa le caute, sa listeze informatii in legatura
cu acele fisiere, sa poate efectua managementul
permisiunilor.
Serviciile sistemelor de operare(Cont)
• Servicii care ofera functii pentru Utilizatori:
• Comunicarea – Procesele pot schimba informatii, pe
acelasi computer sau intre mai multe computere
conectate la o retea
• Detectia erorilor – SO trebuie sa fie atent tot timpul la
eventualele erori.
• Pot sa apara la nivelul CPU sau memoriei, la
dispozitivele de I/E, in programele utilizatorului.
• Pentru fiecare tip de eroare, SO ar trebui sa aplice
actiunile corespunzatoare pentru a asigura o
functionalitate continua si corecta
• Facilitățile de depanare pot spori foarte mult
abilitățile utilizatorului și programatorului de a
utiliza în mod eficient sistemul
Serviciile sistemelor de operare(Cont):

• Exista si un alt set de functii SO care au rolul de a


asigura operarea eficienta a sistemului:
• Alocarea resurselor – Cand mai multi utilizatori
sau mai multe procese ruleaza simultan, resursele
trebuie sa fie alocate pentru fiecare proces sau
utilizator
• Auditare – Contabilizarea tuturor utilizatorilor si a
resurselor folosite de acestia
• Protectie si securitate – Cei care detin informatii
stocate intr-un computer multiuser sau conectat la
o retea vor dori sa controleze modul de acces la
acea informatie, procesele simultane nu ar trebui
sa interfereze
Interfate utilizator in SO
Interfata in linie de comanda - CLI
CLI permite introducerea
directa a comenzilor
• Facilitate implementata fie
direct in kernel, fie in
programele de sistem.
• Pot exista multiple
implementari pe un sistem:
shells
• In primul rand se preia o
comanda de la utilizator si
apoi se executa.
• Cateodata se iau
comenzi integrate,
cateodata doar nume
ale unor programe
Interfata grafica - GUI
• Interfata intuitiva, bazata pe metafora desktop-ului
• Mouse, tastatura, monitor
• Pictograme reprezentand fisiere, programe, actiuni, etc.
• O multitudine de operatii asupra obiectelor interfetei, ce dau nastere
la diverse actiuni (ofera informatii, optiuni, executa functii, deschid
directoare)
• Inventat de catre Xerox PARC in anii 70
• Multe sisteme includ acum interfete atat CLI cat si
GUI
• Microsoft Windows are o interfata de tip GUI impreuna cu CLI
“command” shell
• Apple Mac OS X foloseste interfata GUI “Aqua” peste un kernel
UNIX cu mai multe shell-uri.
• Solaris este CLI cu interfata GUI optionala (Java Desktop, KDE)
Apeluri de sistem
Apeluri de sistem
• Interfata programabila pentru accesarea
serviciilor oferite de SO
• De obicei scrisa intr-un limbaj evoluat de
programare (C sau C++)
• De obicei accesata de programe printr-o Interfata
de Programare a Aplicatiilor (Application
Program Interface -API) si nu printr-un apel direct
de sistem
• Cele mai comune 3 API-uri sunt:
• Win32 API pentru Windows,
• POSIX API pentru sisteme de tip POSIX (incluzand
toate versiunile de UNIX, Linux, and Mac OS X),
• Java API pentru masinile virtuale Java (JVM)
Exemple de apeluri de sistem
• Secventa de apel de sistem pentru a copia continutul unui fisier in
alt fisier.
Exemple de API-uri standard
• Sa consideram functia ReadFile() In Win32 API— o functie pentru a citi
dintr-un fisier.

• O descriere a parametrilor din ReadFile()


• Fisierul HANDLE l—fisierul ce urmeaza sa fie citit
• Bufferul LPVOID—un buffer din care datele vor fi citite sau scrise
• DWORD bytesToRead—numarul de biti ce vor fi cititi in buffer
• LPDWORD bytesRead—numarul de biti ce au fost cititi la ultima citire
• LPOVERLAPPED ovl—indica daca exista o suprapunere a operatiilor
de I/O
Implementarea apelurilor de
sistem
• De obicei exista un numar asociat cu fiecare apel de
sistem
• Interfata pentru apelulurile de sistem mentine un tabel indexat
unde se regasesc aceste numere si functiile asociate.
• Interfata pentru apelurile de sistem invoca apelul de
sistem in nucleul sistemului de operare si intoarce
rezultatul acestuia – inclusiv eventualele valori
• Cel care initiaza apelul nu are nevoie sa stie cum este
implementat apelul de sistem
• Trebuie doar sa respecte conventiile din API si sa inteleaga ce
va face SO ca rezultat la apelul primit
• Foarte multe detalii ale interfetei SO sunt ascunse de
programator prin API
API – relatia dintre Apel de sistem si
SO
Exemplu standard din Libraria
C
• Programul C invoca functia printf() din libraria
standard C, functie ce foloseste apelul de sistem
write()
Transmiterea parametrilor
apelurilor de sistem
• De obicei este necesara mai multa informatie decat
simpla indentificare a apelului de sistem dorit.
• Tipul si cantitatea de informatie variaza in functie de SO si de
apel
• Exista 3 metode de a trimite parametrii catre SO
• Cea mai simpla: trecerea parametrilor in registrii
• In unele cazuri pot fi mai multi parametri decat registrii
• Parametrii stocati intr-un bloc, sau tabel, in memorie, si
adresa blocului trecuta ca un parametru intr-un registru
• Aceasta modalitate este preferata in special de Linux si Solaris
• Parametrii plasati sau impinsi in stiva de catre program si
preluati din stiva de catre sistemul de operare.
• Modalitatile de tip stiva si bloc nu limiteaza numarul sau
lungimea parametrilor ce trebuie sa fie transmisi.
Transmiterea parametrilor prin
tabele
Tipuri de apeluri de sistem
• Controlul proceselor • Managementul
• Incarcarea, executia dispozitivelor
proceselor • Cerere, eliberare
• Crearea, terminarea • Atasare, detasare logica
proceselor • Citire, scriere, repozitionare
• Preluarea atributelor
proceselor, setarea • Mentenanta informatiilor
atributelor proceselor • Obtinerea/setarea
• Asteapta evenimentelor, timpului/a datei
semnalizarea • Obtinerea/setarea
evenimentelor atributelor
• Inchidere, intrerupere proceselor/fisierelor/
proceselor dispozitivelor
• Managementul fisierelor • Comunicatiile
• Creare, stergere • Crearea, stergerea
• Deschidere,inchidere conexiunii
• Citire, scriere, repozitionare • Trimitere, primire mesaje
Tipuri de apeluri de sistem (Unix vs
Windows)
Programe de sistem
Programe de sistem
• Programele de sistem ofera un mediu facil
pentru dezvoltarea si executarea programelor:
• Manipularea fisierelor
• Informatii de status
• Modificarea fisierelor
• Suport tehnic pentru limbaje de programare
• Incarcarea si executia programelor
• Comunicatiile
• Modul in care majoritatea utilizatorilor vad
sistemele de operare este definit prin
programe de sistem si nu prin apelurile de
sistem.
Programe de sistem
• Ofera un mediu optim pentru executarea si scrierea programelor
• Unele sunt pur si simplu interfete pentru apelurile de sistem altele sunt mult
mai complexe
• Managementul fisierelor – creare, stergere, copiere, redenumire, printare, listare,
si in general manipularea fisierelor si directoarelor
• Informatii de status
• Unele cer informatii de la sistem - data, ora, cantitatea disponibila de
memorie, spatiul pe disk, numarul de useri
• Altele ofera informatii detaliate despre performanta debug si logging
• In mod normal aceste programe formateaza si redau outputul prin terminale
sau alte dispozitive de output
• Unele sisteme implementeaza un registru pentru a salva si gestiona
informatiile de configurare
Programe de sistem
• Modificarea fisierelor
• editoare de text care pot sa creeze si sa modifice fisiere
• comenzi speciale care pot cauta continutul unor fisiere sau pot sa
produca transformari in text
• Suport pentru programare - compilatoare, asambloare,
depanatoare si interpretare
• Incarcarea si executarea programelor - incarcatoare, link-
editoare, sisteme de depanare
• Comunicatie – ofera mecanismul pentru crearea
conexiunilor virtuale printre procese, utilizatori si
calculatoare
• Permit utilizatorului sa trimita mesaje de la un ecran la altul,
navigare pe internet, trimiterea de scrisori electronice(e-mail),
conectarea de la distanta, transferul fisierelor de la o masina la
alta
Designul si implementarea SO
Designul si implementarea SO

• Nu exista o solutie finala insa unele modalitati de


abordare s-au dovedit a fi de succes.
• Structura interna a diferitelor SO poate sa difere foarte
mult
• Se incepe prin definirea obiectivelor si specificatiilor
(ex: OS pentru dispozitive embeded, mobile, servere
etc)
• Este influentat de hardware
• Scopul utilizatorilor si scopul sistemului in sine
• Obiectivele utilizatorilor – SO ar trebui sa fie usor de utilizat,
usor de invatat, de incredere, sigur si rapid
• Obiectivele sistemului – SO ar trebui sa fie usor de
proiectat, implementat si mentinut, in acelasi timp sa fie
flexibil, de incredere, fara erori si eficient
Deisgnul si implementarea SO (Cont.)

Politica: Ce se va face ?
Mecanisme: Cum se va face?
• Cu ajutorul mecanismelor se determina cum
se va face, iar cu ajutorul politicilor se
determina ce se va face.
• Separarea principiului politicilor de cel al
macanismelor este un principiu foarte important
care permite un maxim de flexibilitate daca deciziile
legate de politici se schimba pe parcurs.
Designul si implementarea SO
Modele de implementare
- Structura monolitica
- Structura stratificata
- Microkernel
- Structura modulara
- Structura hibrid
Structura basic
Mac OSX
Windows
Modele de design
Structura monolitica
• MS-DOS – creat
pentru a permite un
maxim de
functionalitate intr-un
spatiu relativ
constrans (memorie)
• Nu este divizat in
module
• Desi MS-DOS are o
structura pe 4 straturi,
interfetele cat si
nivelele de
functionalitate nu sunt
delimitate foarte bine
Structura stratificata
• Sistemul de operare
este divizat in mai
multe straturi
(niveluri/layers),
fiecare construit peste
un strat inferior. Stratul
de baza(stratul 0) este
hardware-ul. Stratul
superior(stratul N)
este interfata utilizator.
• Straturile sunt
construite de asa
natura incat fiecare
strat in parte
foloseste functiile si
serviciile stratelor
imediat inferioare.
Structura stratificata - UNIX
UNIX – initial limitat de functionalitatea hardware, este
alcatuit din 2 parti separabile.
• Programe de Sistem
– shells, compilatoare,
interpretoare etc
• Kernelul
• Contine tot ce se afla
sub interfata pentru
apelurile de sistem si
peste hardware-ul
propriu-zis
• Ofera sistemul de
fisiere, planificarea
CPU, managementul
memoriei si alte
functii ale sistemului
de operare:
• Are foarte multe
functii pentru un
singur nivel
Structura Microkernel

• Muta cat mai mult posibil din kernel in spatiul “utilizatorului”


• Nucleu mic al SO ruleaza la nivel kernel
• Serviciile SO sunt construite din mai multe procese de nivel independente de user
• Cumunicatia intre module se face cu ajutorul mesajelor
• Beneficii:
• lightweight
• Un microkernel este mai usor de extins
• SO se pot porta mai usor pe arhitecturi noi
• Mai de incredere (mai putin cod ce ruleaza in modul kernel)
• Mai sigur
• Dezavantaje:
• overhead de comunicare intre spatiul utilizator si spatiul kernel
Structura hibrid
• Mac OS X
• Microkernel cu Module
Structura modulara
• SO moderne
implementeaza
module kernel
• Se folosestea
abordarea orientata
obiect
• Fiecare modul este
separat
• Toate comunica
folosind interfete
deja cunoscute
• Toate au capacitatea
de a fi incarcate la
nevoie de catre
Kernel
• In ansamblu, sunt Solaris Modular Approach
similare straturilor
dar mult mai flexibile
Provocari de design
• A.Compromis intre eficienta, siguranta,
extensibilitate
• B. Compromis intre simplitate si performanta
Modele de lucru
Modelul traditional
• Diferentele intre mediile de lucru traditionale se estompeaza in
timp.
• Mediu de la birou
• Initial: PC-uri conectate la o retea, terminalele sunt atasate
la un mainframe sau un mini-computer ce confera multi-
tasking si batch(seturi de comenzi pre-stabilite)
• Acum: exista portaluri care ofera acces la sistem prin retea
sau la distanta(remote) pentru aceleasi resurse
• Retele private (de acasa)
• Initial: Obisnuiau sa fie un singur sistem, apoi au aparut
modem-urile iar calculatoarele au inceput sa acceseze
resurse externe
• Acum: sunt conectate la retea si acceseaza resurse si
servicii din exterior
Model Client-Server
● Terminale neperformante inlocuite ulterior de PC-uri inteligente care
folosesc serviciile unui Server din retea
● Tipuri de servere:
4 Compute-server (server de calcul) ofera o interfata clientului prin
care acesta poate lansa o cerere de servicii( ex: server baze de
date)
4 File-server (server de fisiere) ofera o interfata clientilor prin care
acestia pot sa stocheze si sa recupereze fisiere
Modelul Peer-to-Peer
• Este un alt model de sistem
distribuit
• P2P nu face deosebirea intre
clienti si servere
• In schimb toate nodurile sunt
considerate peers (computere
ce se conecteaza la aceasta
retea)
• Fiecare peer poate fi client sau
server, sau ambele
• Un nod trebuie sa se alature
retelei P2P:
• Isi inregistreaza serviciile la un
serviciu central de căutare (lookup
service) din retea, sau,
• Transmite cereri de serviciu si
raspunde la cererile pentru
servicii printr-un protocolul de
lucru (discovery service)
• Exemple: BitTorrent, Bitcoin
De la Web la Cloud Computing
• Web-ul a
devenit
omniprezent
• PC-urile si
telefoanele
mobile sunt cele
mai raspandite
device-uri
• Din ce in ce mai
multe dispozitive
sunt legate la
retea pentru a
avea access de
tip web/cloud
Masini virtuale
Masini virtuale - VM

• Emularea
software a unei
masini abstracte
• Face sa para ca
hardware-ul are
caracteristicile pe
care le doresti
• Permite portarea
programelor de
pe un hardware &
SO pe alt
hardware &SO
• Trateaza
hardware-ul si
kernelul SO-ului
ca si cum ar fi o
entitate hardware
unitara
Masini virtuale
• Emularea software a unei masini abstracte
• Face sa para ca hardware-ul are caracteristicile pe care le doresti
• Portarea programelor de pe un hardware & SO pe alt hardware/SO

• Programare simplificata
• Fiecare proces considera ca are la dispozitie toate resursele de
memorie si procesare, precum si toate dispozitivele
• Ofera o interfata unitara catre o multitudine de dispozitive diferite
• Interfetele de device ofera mult mai multa putere fata de hardware-
ul in sine
• De la display Bitmapped Þ la sistemul de ferestre - windowing system
• De la Ethernet card Þ la protocoale de retea (TCP/IP)
• Izolarea erorilor
• Procesele nu vor afecta direct alte procese
• Bug-urile nu vor destabiliza intreaga masina

• Protectie si portabilitate
• Ex: interfata Java este sigura si stabila pe diferite platforme (UNIX<
Windows, etc)
Masini Virtuale (Cont.)

• Resursele fizice ale computerului sunt partajate pentru a


crea masini virtuale
• Planificatorul CPU poate crea aparenta ca utilizatorii au propriul
lor procesor
Masini virtuale (Cont.)
• Modelul VM ofera protectie totala a resurselor
sistemului, din moment ce toate VM sunt
izolate intre ele.
• VM este un vehicul ideal pentru cercetarea si
dezvoltarea SO. Dezvoltarea sistemelor este
realizata pe VM, nu pe masina fizica propriu-
zisa, astfel ca nu se va intrerupe/afecta
functionarea normala a SO.
Masini virtuale - VMware
Arhitectura VMware
Arhitectura VMware
• Layerul de virtualizare este inima sistemului:
• Abstractizeaza hardware-ul fizic in masini virtuale izolate ce ruleaza ca
sisteme de operare gazduite
• Fiecare masina virtuala are propriul hardware virtual: procesor, memorie,
disc, interfete de retea, etc
Masini virtuale – software de emulare
Emulatoare
• Rularea unui SO in alt SO printr-o aplicatie
• Folosite de obicei pentru a putea executa
programe cu probleme de compatibilitate (ex:
jocuri din anii 90: HMM, Doom, x86 Assembly
programs: TASM etc)
• Desktop apps
• Web apps
• Nu reprezinta o solutie scalabila ci una
punctuala
• Ex:
• DOSBOX – DOS emulator
• CygWin – Linux on Win
• web-based Win 95 – VirtualDesktop.org
Masini virtuale – JVM
Masina virtuala Java - JVM
Masina virtuala Java - JVM
• class loader incarca fisierele Java .class compilate
(atat codul scris de dezvoltator cat si codul Java API)
• verifier verifica daca fisierele .class contin bytecode
Java valid si ca nu determina overflow la nivelul
stivei si ca nu executa operatii ilegale – acces
neautorizat la anumite zone de memorie
• Daca verificarea este ok, codul este rulat de catre
Java interpreter. JVM se ocupa de asemenea de
“garbage collection” — eliberarea memoriei de
obiectele care nu mai sunt folosite.
Masina virtuala Java - JVM
• implementata in software peste sisteme de operare
gazda, cum ar fi Windows, Linux, or Mac OS X, sau ca
parte a browserelor Web
• (JIT) compiler – la prima invocare a unei metode,
bytecode-ul metodei este transformat in codul masina
nativ al sistemului gazda. Aceste operatii sunt cached
astfel incat invocarile ulterioare sa foloseasca codul
nativ deja generat, fara a face o noua interpretare.
• O tehnica si mai rapida este rularea JVM direct in
hardware printr-un cip care executa bytecode Java ca si
cod nativ.
Masini virtuale – para-
virtualizare/containerizare
Modelul de dezvoltare software – anii
2000
Modelul actual de dezvoltare software
• Multitudine de componente ready-made ce usureaza construirea
aplicatiilor
Dificultati ale modelelor de dezvoltare
software actuale
Solutii – containerizare cu
Docker, Salt
Para-virtualizare/ Containerizare
• Pe modelul containerelor in transportul
produselor diverse
• Containere de aplicatii ce pot fi livrate si
instalate fara un efort de
configurare/adaptare aferent variantelor de
deploy clasice
• Toate containerele ce ruleaza pe o masina
folosesc aceleasi sistem de operare gazda
• Containerele pot fi deployate pe orice tip de
SO
Concluzii
• SO asigura o abstractizare de tip masina
virtuala care poate gestiona hardware divers
• SO coordoneaza resursele si protejeaza
utilizatorii unul de altul
• SO simplifica dezvoltarea aplicatiilor oferind
servicii standard
• SO poate asigura izolarea, tolerarea si
recuperarea dupa erori.
Sfârşitul cursului 2

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