Sunteți pe pagina 1din 8

Sisteme de operare

1. Sisteme de operare
- Functiile sistemului de operare
1. Convenienta
• Componentele unui sistem de calcul pot fi privite intr-o maniera stratificata,
bazata pe relatiile existente intre acestea.
• Sistemul de operare va oferi cateva servicii legate de convenienta:
 Servicii pentru dezvoltarea si executia programelor;
 Acces catre dispozitivele I/O si Acces controlat catre fisiere;
 Accesul la sistem;
 Detectarea erorilor;
 “Contabilitate” si management (al resurselor).
2. Eficienta

• Sistemul de operare este responsabil cu managementul eficient al


resurselor existente.

• Acest management este realizat intr-o maniera deosebita, deoarece chiar


functionarea SO se bazeaza pe aceasta.

• Memoria principala este principala resursa gestionata: aceasta


suporta nucleul sistemului de operare si alte componente
importante;

• Procesorul are nevoie de asemenea de o atentie speciala, avand in


vedere ca acesta este controlat de un singur proces la un moment
dat!

• Dispozitivele I/O au nevoie, din nou, de o atentie speciala, pentru a


evita dificultati inutile in timpul executiei.

3. Evolutie

• Sistemul de operare trebuie sa fie capabil sa ofere solutii noilor cerinte care
apar in timpul existentei sale. Acestea pot sa apara datorita:

• Modificarilor hardware;

• Serviciilor nou identificate.


2. Dispozitive de intrare/iesire
- Generalitati
o Sunt angrenate in operatii de intrare-iesire:
 Destinate utilizatorului - Asigură comunicarea cu utilizatorul prin
mijloace de intrare (tastatură, mouse) sau ieșire (ecran, imprimantă
etc.)
 Destinate masinii - Asigură comunicarea internă. Dispozitivele tipice
de memorare, precum și senzori, controllere.
 Destinate comunicatiei - Asigură mecanismele de comunicare cu
dispozitive aflate la distanță.
o Ofera un numar mare de caracteristici:
 Rata de transfer
 Unitatea de transfer
 Conditiii de eroare

o Diferite dispozitive de intrare-iesire ofera diferite mecanisme de control;


o Modul de utilizare implica mecanisme software si politici specifice.

Functionare
1. Control direct CPU – dispozitiv
2. Funcția controllerului este adăugată: operații I/O programate
3. Este adăugat suportul întreruperilor: operații I/O asincrone (CPU nu mai
așteaptă finalizarea operațiilor)
4. Control direct la memorie (DMA): devine posibil transferul unui bloc de date
fără intervenția CPU
5. Module I/O specializate: CPU este capabil să comande o secvență de operații
6. Capacitate de memorare pentru modulele I/O specializate: minimizează
intervenția CPU.

Planificare si control
 Oferă suportul pentru gestiunea cozilor și planificarea operațiilor de
intrare/ieșire
 Oferă suportul pentru controlul operațiilor I/O.
 Oferă interacțiunea efectivă cu dispozitivul (driverul de dispozitiv), dpdv.
software.

Planificarea discurilor se bazeză pe o serie de caracteristici:


 Timpul de căutare
 Întârzierea de rotație
 Timpul efectiv de acces și timpul de transfer
 Politici de planificare:
 Planificare aleatoare
 Planificare FIFO
 Planificare bazată pe priorități
 Planificare LIFO
 Planificarea SSTF
 Planificare SCAN
 Planificare C-SCAN
 Planificare FSCAN

3. Procese
Generalitati
o Un proces este un program în execuţie, căruia i se
asociază un spaţiu de adrese
o Pentru a putea rula mai multe procese, acestea
sunt partajate în timp
 La reluarea procesului acesta trebuie repornit din starea
pe care o avea în momentul suspendării
 În multe SO, informaţiile despre fiecare proces, altele
decât conţinutul propriului spaţiu de adrese,sunt reţinute într- un
tabel de procese.
o Un proces poate crea mai multe procese (numite copii) care la rândul lor
pot crea alte procese. Astfel se ajunge la o structura de tip arbore
o Procesele pot comunica între ele. În cazul în care procesul corespondent nu
răspunde după un anumit timp, SO trimite un semnal de alarmă care
trebuie tratat (de ex. prin retrimiterea mesajului)
o Fiecare utilizator de sistem are asociat un UID (User Identification). Fiecare
proces conţine UID-ul utilizatorului care l-a declanşat. Un proces copil are
acelaşi UID ca şi părintele său.

Starile proceselor

La orice moment de timp un proces se poate afla intr-una din urmatoarele


stari:
 blocat (waiting) - se zice ca procesul doarme (sleeps); in aceasta stare
un proces este blocat in asteptarea unui eveniment (o operatie I/O,
primirea unui semnal, etc.);
 gata de executie (ready) - un proces este pregatit pentru a fi rulat;
trebuie doar sa i se acorde accesul la procesor;
 in executie (running) - procesul ruleaza si are acces complet la
procesor;
4. Fire de executie
Generalitati
o Multitasking
Se refera la capacitatea unui sistem de calcul de a rula mai multe aplicatii
in acelasi timp
o Multithreading
 Un fir de executie (thread) reprezinta o succesiune de operatii din
cadrul unei aplicatii
 Multithreading – capacitatea de a executa mai multe operatii in
acelasi timp in cadrul aceleiasi aplicatii
o Utilitatea firelor de executie
 Pentru a realiza aplicatii care sa fie capabile sa interactioneze cu
utilizatorii in timp ce efectueaza operatii de durata
 Pentru a permite oprirea unor operatii
 Pentru probleme ce implica o rezolvare “paralela”
 Pentru a monitoriza starea unor resurse (de exemplu o baza de date)
 Pentru implementarea API-urilor
o Application Thread
 Cand se executa o aplicatie Java:
 JVM creaza un fir de executie (principal) pentru a rula
instructiunile din metoda main()
 JVM porneste firul de executie
 Firul de executie ruleaza intructiunile din program una cate una
 Dupa ce se ruleaza toate instructiunile firul de executie
“moare”
 Pe langa firul principal de executie se pot crea si altele;
 Fiecare fir de executie are propria sa zona de memorie;
 Daca doua fire de executie ruleaza aceeasi metoda, fiecare va avea
propria copie a variabilelor locale pe care le foloseste metoda;
 Doua fire de executie pot actiona asupra aceluiasi obiect sau asupra
campurilor statice in mod concurent ;
o Implementarea firelor de executie
 Exista doua modalitati de a crea fire de executie (obiect de tip
Thread):
 Prin mostenirea clasei Thread si instantierea unui obiect din
subclasa
 Prin implementarea interfetei Runnable
 In ambele cazuri trebuie implementata metoda run()

Starilor firelor de executie


o Implementarea firelor de executie pornind de la clasa Thread
o Metodele clasei Thread:
 void start() – creaza un nou fir de executie si il pregateste pentru
rulare; poate fi apelata doar o singura data pentru un fir de executie
 void run() – lanseaza firul de executie
 void stop() – firul de executie este oprit
 void yield() - provoaca oprirea temporara a firului de executie curent
pentru a permite executarea altor fire de executie cu prioritate mai
mare
 void sleep(int m) – permite oprirea firului de executie pentru m
milisecunde
o Implementarea firelor de executie folosind interfata Runnable
 Cand folosim interfata Runnable se creaza un obiect de tip Thread din
obiectul Runnable
 Metoda run() din obiectul Thread apeleaza metoda run() din obiectul
Runnable
5. Impas
Generalitati
o O situatie de impas apare de regula datorita accesului la resurse.
o Exista doua categorii majore de resurse:
 Resurse preemptive: resurse care pot fi “obtinute” de la
procesul care le detine;
 Resurse non-preemptive: resurse care nu pot fi “obtinute”
de la procesul care le detine, nici macar fortat.
 Doar resursele non-preemptive pot conduce catre situatii de
impas;
o O multime de procesese afla intr-o situatie de impas daca fiecare
proces din multime asteapta aparitia unui eveniment care poate fi
declansat doar de un alt proces din multime.
o Sunt necesare patru conditii pentru o situatie de impas:
 Excluderea mutuala: fiecare resursa este fie asignata exact
unui proces, fie este disponibila;
 ‘Hold and wait’: daca un proces detine resurse, acesta este
capabil sa ceara si alte resurse;
 Non-preemptiunea: nicio resursa nu poate fi obtinuta fortat
de la niciun proces;
 Asteptarea circulara: se poate identifica un lant de procese,
unde fiecare proces asteapta o resursa care apartine unui
proces precedent in acest lant.
o Strategii pentru rezolvarea situatiilor de impas:
 Ignorarea problemei.
 Detectie si recuperare. Situatia de impas poate sa apara, este
detectata si apoi remediata.
 Evitare dinamica printr-o alocare atenta a resurselor.
 Preventie, printr-o negare structurala a uneia dintre cele
patru conditii necesare.
Algoritmul strutului
o Algoritmul strutului este bazat pe urmatoarea abordare a problemei
impasului:
 Ignorarea completa a situatiei, in speranta ca lucrurile nu se vor
inrautati (sau chiar sperand ca situatie se va rezolva de la sine)
 Aceasta “tehnica” este utilizata atunci cand frecventa de aparitie a
situatiilor de impas este incomparabil mai mica decat frecventa de
aparitie a altor probleme majore.
Evitare
Detectie si recuperare
o Aceasta tehnica poate fi utilizata cand, in locul prevenirii situatiilor de
impas, sistemul prefera sa detecteze aparitia unei situatii de impas si sa
reactioneze doar in acest moment.

6. Sisteme de fisiere
Generalitati
o Răspund cerințelor de depozitare pe termen lung (permanentă) a
informației
o Răspund celor trei cerințe esențiale:
 Posibilitatea de a depozita cantități mari sau foarte mari de
informație
 Posibilitatea de a depozita informații cu o durată de viață mai mare
decât a proceselor care le utilizează
 Posibilitatea de a oferi acces concurent la informațiile depozitate.
o Pentru a suporta cele trei cerințe
 Este utilizat suportul oferit de unitățile de disc și unități de depozitare
externă a informației
 Fișierele sunt folosite ca “unități de depozitare” a informației.
 Procesele folosesc o interfață relativ simplă pentru operațiile tipice de
scriere, citire, creare
 Folosind acest suport, este obținută persistența informațiilor
depozitate în fișiere - Astfel, acestea nu mai depind de ciclul de viață
al proceselor
 Gestiunea fișierelor cade în sarcina sistemului de operare - Sarcini
tipice: structură, acces, numire, utilizare, protecție, implementare 
sistem de fișiere.
Operatii specifice
o Creare – crearea unui fișier gol, în vederea adăugării ulterioare de conținut
o Ștergere -- ștergerea unui fișier. Anumite sisteme de operare
implementează operația prin simpla marcare a fișierului pentru ștergere sau
decrementarea unui contor de legături.
o Deschidere – operația de deschidere, presupune obținerea atributelor în
vederea utilizării corecte a fișierelor.
o Închidere – operație “complexă”, care presupune golirea bufferelor interne.
Diferite sisteme de operare ar putea “încuraja” această operație prin
limitarea numărului de fișiere deschise accesibile.
o Citire – citește date (de regulă octeți) de la poziția curentă.
o Scriere – scrie date (de regulă o secvență de octeți) la poziția curentă.
o Adăugare – o formă particulară de scriere, cu adăugare la sfârșitul unui
fișier. Poate fi realizabilă prin alte operații.
o Căutare – specific pentru fișiere cu acces aleator, presupune modificarea
poziției curente a pointerului de citire/scriere
o Obținere/setare atribute – diferite aplicații se bazează pe atributele
fișierelor pentru buna funcționare a acestora. Ex. make folosește marca de
timp
o Redenumire – poate fi suplinită printr-o operație de copiere urmată,
eventual, de o ștergere a fișierului original.
o Blocare - blocarea unui fisier. Diferite sisteme de operare oferă suport
pentru operația de blocare a fișierelor
7. Directoare(foldere)
Generalitati
o Directoarele (folderele) oferă mijloace de grupare a fișierelor;

Operatii specifice
o Creare – un nou director. Acesta este un director gol (conținând însă
intrările ‘.’ și ‘.. ’)
o Ștergere – de regulă posibilă doar pentru directoare goale.
o Deschidere (opendir) – operație similară cu cea pentru fișiere, utilizabilă
pentru scanarea intrărilor unui director
o Închidere (closedir) – operație similară cu cea pentru fișiere, necesară
pentru eliberarea structurilor interne.
o Citire intrare director (readdir) – operație care returnează informații legate
de următoarea intrare de director. Tehnic vorbind, anumite sisteme de
operare permit utilizarea apelurilor simple read() pentru această operație.
o Redenumire
o Legături – operația de legare oferă posibilitatea de creare a unei intrări de
director asociată unui conținut (fișier). Prin această operație este posibil ca
mai multe intrări de director să se refere la același conținut. Operația
inversă permite ștergerea unei intrări de director și decrementarea
contorului de legături, fără ca datele să fie șterse fizic. Tipic pentru sisteme
UNIX sau similare.
8. Implementare
Implementarea fisierelor
o Diferite sisteme de operare și sisteme de fișiere oferă abordări diferite
pentru implementarea fișierelor. Sunt posibile scheme de
 Alocare contiguă
 Liste înlănțuite
 i-noduri
Implementarea directoarelor(folderelor)
o Sistemul de operare oferă puncte de vedere diferite asupra fișierelor;
o
9. Gestiunea memoriei unui sistem de calcul
o Orice sistem de calcul ofera diferite categorii de dispozitive de memorare:
 O cantitate relativ mica de memorie cache;
 O cantitate rezonabila de memorie (RAM), numita memoria
principala;
 O cantitate semnificativa de memorie non-volatila, utilizata pentru
depozitarea informatiei pe termen lung.
o Categorii de sisteme de gestiune a memorie:
 Monoprgramarea (fara swapping sau paginare)– presupune existenta
unui program in memorie la un moment dat, impreuna cu sistemul de
operare;
 Multiprogramarea (cu partitii fixe) – o metoda consta in divizarea
memoriei intr-un numar de partitii, posibil egale;
 Swapping – procesele sunt depozitate sau aduse in memorie in
intregime;
 Memorie virtuala – procesele pot fi executate chair daca nu se gasesc
integral in memorie.
 Segmentare – dotarea masinii cu un numar mare de spatii de adreses
distincte numite segmente(un spatiu liber liniar de adreses).

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