Sunteți pe pagina 1din 59

Cursul 2: Structuri SO

Sisteme de Operare
Cursul 1: Recapitulare
• SO are rol de alocare resurse/arbitru
• Gestioneaza toate resursele (ex. Cicluri de processor,
memoria, etc)
• Decide intre cereri conflictuale asigurand folosirea corecta si
eficienta a resurselor
• SO are rol de control/arbitru
• Controleaza executia programelor pentru a preveni erorile si
utilizarea necorespunzatoare a computerului (ex. Acces la
zone de memorie a altui program)
• SO are rol de facilitator
• Ofera componente ce imbunatatesc performanta HW & SW
(ex. API, sistem fisiere)
• SO are rol de iluzionist
• Ascunde limitarile HW
Cursul 1: Recapitulare
Servicii OS vs HW
Cursul 2: Structuri ale SO
• Structurile ale SO
• Serviciile SO
• Interfata utilizatorului
• Apeluri de sistem
• Proiectarea si implementarea SO
• Masini virtuale
Obiective
• Cunosterea serviciilor pe care un sistem de
operare le ofera userilor, proceselor si altor
sisteme.
• Intelegerea unor modele de structura pentru
SO
Servicii SO
Servicii SO
Servicii pentru utilizatori
Interfata utilizator– Aproape toate SO au o interfata utilizator (UI-User
Interface)
• Poate fi interfata in linie de comanda (CLI), interfata grafica (GUI-
Graphics User Interface) sau Batch (seturi de comenzi prestabilite)
Servicii SO
Servicii pentru utilizatori

Executia 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)
Servicii SO
Executia programelor
0xFFF…
Executable
Program Source OS

compiler
int main()

Execute
editor

Load &
{…; data stack

Memory
}
instructions heap

a.out data
foo.c
• Incarca instructiunile si segmentul de instructions
date in memorie 0x000…
• Creeaza stiva si Heap-ul PC:

• Transfera controlul catre program registers


Processor
• Asigura servicii catre program
(system calls) Sursa: UCB
Servicii SO
Servicii pentru Utilizatori:
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 gestiona permisiunile.
Servicii ale SO (Cont)
• Servicii 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
Servicii ale SO (Cont):

• Exista si 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 multi-user sau conectat
la o retea vor dori sa controleze modul de acces la
acea informatie, procesele simultane nu ar trebui
sa interfereze
Interfete 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
• Se preia o comanda de la
utilizator si apoi se executa.
Interfata grafica - GUI
• Interfata intuitiva, bazata pe patradigma 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

• Majoritatea sistemelor 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 Programming Interface - API) si nu
printr-un apel direct de sistem
• Cele mai comune 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)
Apeluri de sistem (Unix vs Windows)
Exemple de apeluri de sistem
• Secventa de apeluri de sistem pentru a copia continutul unui fisier
in alt fisier.
Exemplu de functie API
• ReadFile() In Win32 API— o functie care citeste 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

• Read() In Posix API— o functie care citeste dintr-un fisier.


ssize_t read(int fd, void *buf, size_t count);
Implementarea apelurilor de
sistem
• De obicei exista un numar asociat cu fiecare apel de sistem
• Interfata pentru apelurile 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
Rularea unui apel de sistem
Exemplu standard din Libraria
C
• Programul scris in C invoca functia printf() din libraria
standard C, functie ce foloseste apelul de sistem write()
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
Apeluri de sistem – Mac Activity Monitor
Apeluri de sistem – Linux commands
Designul si implementarea SO
Designul si implementarea SO

• Nu exista o solutie universala 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
Designul si implementarea SO
Structura basic UNIX
Mac OSX
Windows
Masini virtuale
Masini virtuale - VM

• Emularea software a
unei masini fizice
• Permite ajustarea
configuratiei
hardware
• 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
• Permit ajustarea configuratiei hardware
• 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

• 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 - 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
• 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
Provocari 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
In concluzie
• 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
Anexe
Optional
Designul 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.
Modele de lucru
Modelul traditional
• 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

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