Sunteți pe pagina 1din 12

Un sistem de operare reprezinta un set de programe care asigura gestionarea

resurselor unui sistem de calcul implemenand algoritmi destinati sa maximizeze


performantele si realizeaza o interfata intre utilizator si sistemul de calcul, extinzand dar
si simplificand setul de operatii disponibile.
D.p.d.v al accesului la memorie SO pot fi: UMA,NUMA,NORMA.
Sisteme de operare de timp real- trebuie sa opereze in cadrul unor
constrangeri de timp si au viteze mari de calcul, raspuns rapid.
Task-urile pot fi sporadice (asincron si nepredictibil), aperiodice (ciclu cu
perioade de timp variabile) si periodice (ciclitate regulata).
D.p.d.v al importantei deadline-ului sistemele de timp real sunt:hard-real timetask-urile trebuie terminate intr-un anumiti interval de timp soft-real time sunt mai putin
restrictive si tolereaza neindeplinirea unei constrangeri de timp)
Windows 2000. HAL (Hardware abstraction layer) izoleaza SO de specificul
platformei hardware.
Un SO contine 2 mari parti: Partea de Control (se executa in nucleu si
realizeaza legatura cu sistemul de calcul), si Partea de Servicii (se excuta in mod
utilizator si asigura legatura cu utilizatorul).
Structura unui sistem de calcul: hardware (CPU,memorie,dispositive
I/O),sistem de operare, programe utilitare,aplicatii, utilizatori.
Functiile unui sistem de operare: Interfata cu utillizatorul, gestiunea fisierelor,
gestiunea perifericilor, gestiunea memoriei, gestiunea proceselor, tratarea erorilor,
gestiunea sistemului.
Kernel-ul (nucleul) este inima sistemului de operare si ofera mijloacele primare
necesare ca un sistem de calcul sa functioneze. Functii: planificarea
proceselor,gestionarea memoriei, administrarea sistemului de fisiere, tratarea erorilor,
verificarea securitatii, tratarea initiala a apelurilor sistem, interactiunea dintre aplicatii si
partea hardware.
Tipuri de nucleu: monolit, modular, extensibil, multinivel, micronucleu.
Microkernel-sistemul de operare este alcatuit din mai multe procese, fiecare
asigurand anumite servicii.
Procesul este instant executiei unui program (fisierul executat de proces).
Executia unui process se poate face in 2 moduri:
mod utilizator procesele au acces numai la propria zona de cod, date si
stiva utilizator.
mod nucleu procesul contine instructiuni privilegiate si poate avea
acces la structurile de date ale nucleului.
Un process este creat:
la initializarea sistemului (reboot)

la executia unui apel de functie pentru creare de procese (fork)


la cererea unui utilizator de creare a unui nou proces
la initializarea unui job
Un process este terminat:
normal-terminarea prgramului
eroare-terminare cu eroare
fatal error divide by 0, core dump
terminat de un alt process
Starile unui process :new (creare), run (executare), blocat (implicare in operatie
I/O, prea lent, nepregatit), ready, terminat.
Prioritate=baza(60)+utilizare_recenta_CPU/constanta(2)+valoare_nice (pp nula)
PCB furnizeaza date cu privire la identificarea procesului, informatii de stare,
informatii de control al procesului.
Tabela proceselor contine: starea procesului, localizarea procesului in memorie,
dimensiunea lui, identificatori atasati utilizatorului si grupului sau, identificatorul
procesului, descriptorul evenimentului care a produs trecerea proceslui in starea de
asteptare, parametri de planificare pentru obtinerea procesorului, semnale netratate
transmise procesului, timp de executie, camp pentru SIGALARM.
Zona u contine: pointer la intrarea in tabela proceselor, identificator utilizator real
si efectiv, timpi de executie, mod de reactie la semnale, identificatorul terminalului de
control, valoarea returnata de o functie sistem, eroare aparuta la apel, parametrii I/O,
directorul current, tabela descriptorilor de fisiere utilizator, dim limita a procesului si
fiserelor, masca pentru drepturi de acces la fisiere create.
Tabela regiunilor per process poate intra in tabela proceselor, in zona u, sau
intr-o zona de memorie alocata acestui scop.
Contextul unui process:
contextul nivel utilizator-segmentul de text, date,stiva-utilizator
contextul registrelor-nr de instructiuni,registrul de stare program,de stiva,
modul de executie, registri generali
contextul nivel nucleu- intrarea in tabela proceselor,zona u, tabela
regiunilor per process, stiva nucleu
Pasii pentru o schimbare de context sunt:
decizia schimbarii de context
salvarea contextului vechiului proces
alegerea unui nou process de catre planificatorul de procese
restaurarea contextului noului process
Un thread reprezinta unul sau mai multe subtask-uri in cadrul task-ului executat
de un proces.
Operatii care se pot realiza asupra unui thread: spawn-creare, block-astepare
eveniment, unblock-aparitie eveniment, finish-terminare.
LWP(lightweight proceses)- intermediar intre thread-urile utilizator si cele
kernel (suporta mai multe thread-uri utilizator care vor corespunde unui thread kernel).
Zombie-procesul este terminat dar din anumite motive inca mai are structura sa
in tabela de procese.

In Linux nu exista o distinctive clara intre process si thread, nu este


definite o structura de date separate pentru thread-uri.
Sincronizarea este actiunea ce perimite modificare starii unui proces.
Zona din program prin care se apeleaza o resursa critica se numeste sectiune
critica.
Accesul unor procese la resursele critice se face printr-un protocol de excludere
mutuala ce presupune sincronizarea starii proceselor si eventual comunicatii intre ele.
Un semafor este un mecanism de sincronizare a proceselor. El este caracterizat
de valoare si coada de asteptare de tip FIFO si poate fi binar (lucreaza cu valori de 0 si
1) sau intreg (lucreaza cu valori intre n si n). Un semafor are asociat operatile de
creare, distrugere, intrare in SC (p), iesire din SC (v).
Sectiunile critice trebuie incadrate intre p si v iar un proces nu poate fi
distrus in SC.
In cazul semafoarelor private numai un singur proces poate aplica p si v asupra
lui, celelalte putand aplica doar v. Are starea initiala 0.
Sincronizarea prin asteptare activa se poate face numai daca exista variabile
comune care sunt testate, iar testul si modificarea variabilelor trebuie sa fie operatii
indivizibile. Aceasta are urmatoarele dezavantaje: consuma timp CPU inutil pentru un
proces in asteptare,dificultate mare in elaborarea protocoalelor de intrare/iesire.
Un monitor reprezinta o structura de date formata din variabile de sincronizare
(de conditie), resurse partajate si procedeuri externe sau interne de acces la resurse.
Atunci cand se acceseaza o procedura a monitorului un process trece prin
starile:
asteptare in coada de intrare a monitorului
asteptare intr-o coada pe o variabila de conditie(wait)
suspendarea prin signal, care reactiveaza un proces in asteptare pe o
variabila de conditie
executia normal a instructiunilor unei procedure din monitor
Starile proceselor in cazul sincronizarii folosind bariere:
toate procesele mai putin unul ajung la bariera si sunt blocate;
ultimul process ajunge la bariera
toate procesele isi continua executia mai departe.
Sincronizarea folosind bariere are dezavantajul ca se consuma timp CPU inutil
daca nu este echilibrata incarcarea proceselor.
Se numeste blocaj situatia in care o resursa ceruta de un process este
mentinuta in starea ocupat de catre alt process aflat la randul lui in asteptarea eliberarii
unei resurse.
Etapele parcurse de un process pentru obtinerea unei resurse sunt:
cerere de acces procesul asteapta pana cand cererea este satisfacuta
utilizare
eliberare
Resursele pot fi reutilizabile utilizate de un process si apoi eliberate pentru a
putea fi utilizate si de alte procese (timp CPU, semafoare, memorie virtuala,fisiere), si
consumabile (intreruperi, semnale, mesaje).

Un set de procese se afla in starea de interblocare atunci cand un proces din


set se afla in asteptarea unui eveniment ce poate fi produs numai de catre un alt
process din setul respectiv.
Interblocarea apare in sistem daca sunt indeplinite conditiile: excluderea
mutuala, ocupare si asteptare, imposibilitatea achizitionarii fortate, asteptare circulara.
Graf de alocare a resurselor sistemului-poate descrie starea de interblocare.
Daca graful nu contine bucle atunci in sistem nu exista interblocare.
Daca fiecare tip de resursa este format dintr-un singur element atunci existenta
unei bucle in cadrul grafului arata ca in sistem exista interblocare.
Metode de tratare a blocajelor:
1)Prevenirea blocajelor:
Inlaturearea excluderii mutuala
Inlaturearea starii de tip Hold and Wait (la crearea proceselor sa se
realizeze cereri pentru toate resursele necesare, blocarea proceselor
pana cand se pot satisface simultan cererile, procesele sa poata astepa
mult timp eliberarea resurselor, resursele alocate ce pot ramane un timp
indelungat nefolosite sa poata fi utilizate de alt process)
Inlaturarea planificarii nepreemtive (daca unui proces ii sunt blocate
unele cereri, atunci el trebuie sa elibereze resursele alocate, daca un
process cere o resursa care este alocata altui process, SO poate
preempta al doilea process si sa-I ceara sa elibereze resursa)
Inlaturarea asteptarii circulare (definirea unei ordonari liniare a
resurselor, odata ce o resursa a fost obtinuta, numai resursele care
urmeaza din lista pot fi obtinute)
2)Evitarea blocajelor (nu se permite startarea unui process daca cererile de
resurse pot duce la blocaj, nu se permit cereri successive de resurse ale unui
process daca alocarea lor poate duce la blocaj.
3)Detectarea blocajelor (atunci cand SO detecteaza un blocaj se poate aplica
una din strategiile pentru a reveni din blocaje:
sunt oprite toate procesele blocate
starea proceselor blocate este salvata inainte de aparitia blocajului, apoi
procesele sunt restartate.
Procesele sunt oprite succesiv pana cand se iese din blocaj
Alocarea preemtiva a resurselor pana la disparitia blocajului
Restartarea proceselor de la un puct anterior aparitiei blocajului
Achizitionarea fortata a resurselor de la anumite procese si alocarea lor
altor procese pana la disparitia blocajului)
4)Algoritmul bancherilor (la creare procesul trebuie sa declare nr maxim de
elemente din fiecare tip de resursa care i-ar putea fi necesar, cand procesul
formuleaza o cerere trebuie sa se verifice daca va lasa sistemul intr-o stare
sigura, daca nu trebuie sa astepte pana cand vor fi eliberate resurse de
catre alte procese, sufiecient de multe pentru ca cererea lui sa fie satisfacuta)
Planificarea este functia principala a SO. Avem planificare uniprocesor (taskuri cu resurse independente sau partajate), multiprocessor(procesele din lista de

executie formeaza un graf de precedenta), statica(ordine prestabilota de executare) si


dinamica (pot aparea variatii in caracteristicele proceselor ceea ce conduce la
modificarea prioritatii).
Planificarea nepreemtiva- cand un process trece din starea runnig in starea
waiting sau cand un process este terminat.
Planificarea preemtiva-cand un process trece din starea running in ready sau
din starea waiting in ready.
Niveluri de planificare- pe termen lung (alegerea job-ului, alocarea resurselor si
crearea proceselor), pe termen mediu (evaluari, procese evacuate/readuse in
memorie), pe termen scurt (procese read->run si invers, dispercerul de procesoare).
Timpul de asteptare al unui process este timpul cand un process asteapta in
coada de executie.
Timpul de ciclare-de la crearea procesului pana la terminarea executiei lui.
Functionarea unui planificator:
Modalitatea de interventie stabileste momentele in care planificatorul
intra in actiune.
Functia de prioritate are ca argument procesele si parametrii sistemului
Regula de arbitraj stabileste o ordine in caz de prioritati egale (servirea in
ordine cronlogica, circular sau aleatoare)
Algoritmi de plaificare:
FCFS (first come, first served)-procesele sunt planificare pe masura sosirii lor
in coada de executie
SJF(shortest job first) nepreemtiv - planificarea se face in functie de timpul de
executie cel mai mic.
SJF preemtiv-planificarea se face in functie de timpul de executie ramas cel mai
mic.
PS (priority scheduling)-planificarea se face in functie de prioritate (mica>mare). Se poate introduce un mechanism de prioritati dinamice in care pe masura ce
creste timpul de asteptare creste si prioritatea (linux).
RR(round-robin)-preemtiv, destinat sistemelor de tip time-sharing si se bazeaza
pe distribuirea in mod egal a timpului de procesare intre procese.
HRRN(highest response ratio next)-planificarea se face in functie de rata cea
mai mare de deservire. Sunt favorizate procesele cu durata cea mai mica de executie.
Feedback-sunt penalizate procesele care ruleaza prea mult si se poate ajunge la
fenomenul de infometare a proceselor daca nu variem algoritmii de planificare si
prioritatile in functie de cozile de asteptare.
Liste multinivel: combinative intre algoritmi pe baza de prioritati, round robin si
algoritmi pentru tratarea proceselor de aceeasi prioritate.
Inversarea prioritatii apare atunci cand un process de prioritate scazuta
acceseaza o SC apoi un process de prioritate mare acceseaza si el SC respective si se
blocheaza.
Pentru a preveni inversarea prioritatii se foloseste mostenirea prioritatii de
fiecare data cand un process detine o SC pentru care asteapta si alte procese, I se
acorda respectivului proces maximul prioritatii proceselor aflate in asteptare.

Efectul de convoi-apare cand o multime de procese au nevoie de o resursa


pentru un timp scurt, iar un altul detine resursa pentru un timp mult prea lung blocandule pe primele.
Pentru Unix avem trei algoritmi (clase) de planificare: real time, kernel, timeshared. Pentru Linux avem trei clase de planificare: FIFO-real time, round-robin real
time, non-real-time).
Memoria Cache-contine informatiile cele mai recent utilizate de CPU. Are
capacitate mica dar timp de acces foarte rapid.
Memoria operativa-contine programele si datele pentru toate procesele
existente in sistem. Viteza de acces foarte mare (<cache, >secundara).
Memoria secundara-extenise a memoriei operative, mai lenta, bazata pe
mecanisme de memorie virtuala. (are ca support disk-ul magnetic)
Memoria expandata-mecanism ce permite ca mai multe chip-uri de memorie
operative sa aiba alternativ, acceasi adresa de memorie (memorie expandata ce are ca
support memoria interna).
Memoria interna=memoria cache+memoria operativa.
Memoria de arhivare-este gestionata de utilizator si consta in fisiere, baza de
date, rezidente pe diferite suporturi de stocare a informatiei.
Adresarea memoriei consta in realizarea legaturii intre un obiect al programului
si adresa corespunzatoare din memoria fizica.
Fazele translatarii unui program:compilare (module obiect), editare de legaturi
(fisier executabil), incarcare (program incarcat in memorie), executie.
Functia de translatare a adresei-transformarea adreselor relocabile in adrese
fizice.
Moduri de adresare:
Adresare absoluta
Adresare bazata reg general ca registru de baza
Adresare indexata-specificarea unui reg index
Adresare relative-realizarea de salturi in program
Adresare indirecta-invocarea parametrilor actuali din cadrul unui subprog
Protectia memoriei-fiecare entitate de memorie alocata are o cheie de
protectie (sir de biti-posibilitatile de citire,scriere,executie), iar fiecare entitate de
program incarcabila in memorie la un moment dat are o cheie de acces (sir de bitidrepturi de acces).
Scheme de alocare a memoriei:
1) Alocarea reala
La sistemele monoutlizator gestiunea spatiului cade in sarcina utilizatorului,
existand tehnici de suprapunere pentru rularea programelor mari.
Alocarea cu partiti fixe (Memory Fix Task- MFT) presupune decuparea
memoriei in zone de lungime fixa numite partitii. Alocarea absoluta-pentru programe
pregatite de editorul de legaturi pentru a fi rulate intro zona de memorie si numai acolo.
Alocarea relocabila-adresarea in partitie se face cu baza si deplasament (adresa de
inceput a partitiei se pune in registrul de baza).

Alocarea cu partitii variabile(Memory variable task MVT) permite o


exploatare mai eficienta a memoriei sistemului de calcul, adica numarul si dimensiuena
partitiilor se modifica automat in functie de solicitari, memorie disponibila.
2)Alocarea virtuala
Alocarea paginata a memoriei instructiunile si datele fiecarui program sunt
impartite in zone de lungime fixa numite pagini virtuale care se pastreaza in memoria
secundara. Memoria operativa este impartita in zone de lungime fixa numite pagini
fizice sau cadre. Fiecare process are propria lui tabela de pagini, in care este trecuta
adresa fizica a paginii virtuale, daca ea este prezenta in memoria operative.
Procedura reentranta- folosirea in comun a instructiunilor unei proceduri de
catre mai multe programe.
Implementarea tabelei de pagina- set de registre specializate (dim redusa),
registru specializat-RBTP (dim mare), folosirea unei memorii hardware speciale de dim
mici (TLB-translation look-aside buffer)
Alocarea segmentata a memoriei-textul unui program poate fi plasat in zone de
memorie distincte, fiecare zona continand o bucata din program numita segment.
Adresa virtuala=numarul segmentului si deplasamentul in cadrul segmentului.
Ei ii corespunde o adresa fizica, corespondenta fiind facuta prin tabela de segmente.
Alocarea segmentata si paginate- fiecare process are propria lui tabela de
segmente si fiecare segment are propria lui tabela de pagini. Aceasta rezolva problema
aparitiei fenomenului de fragmentare.
Memorie virtuala-tehnica prin care se poate folosi un disk ca support automat
pentru extinderea memoriei interne, programele avand astfel un spatiu de memorie
virtual mai mare decat cel al memoriei interne. Astfel programele se pot executa chiar
daca acestea nu se afla integral in memorie. Implementare- paginarea la cerere,
segmentarea la cerere.
Paginarea la cerere-nu se introduce in memorie intreg programul, ci numai
cateva pagini, atunci cand sunt necesare. Tabela de pagina a unui process va contine in
plus un bit care semnaleaza prezenta/absenta din memorie a paginii respective. Daca
se incearca o folosirea unei pagini care nu este in memorie se va genera o eroare de
tip pagina lipsa. Incercarea de folosire a unei adrese de memorie nepermise generaza
o eroare care duce la inchiderea fortata a programului
Inlocuirea paginii- se elibereaza un cadru care nu este utilizat in acel moment
pentru a fi folosit pentru aducerea paginii solicitate in momentul aparitiei erorii de tip
pagina lipsa.
Algoritmi de inlocuire a paginii:
1) FIFO-fiecarei pagini i se asociaza momentul de timp la care a fost adusa in
memorie si cand este necesara o inlocuire se alege cea mai veche pagina.
Anomalia lui Belady- rata de apartiei a erorilor creste odata cu numarul de
cadre alocate, in loc sa scada.
2) LRU(last recently used)-asociaza fiecarei pagini momentul de timp al ultimei
utilizatri, pagina cu cea mai lunga durata de neutilizare este aleasa pentru

inlocuire. Este posibil ca o pagina sa fie inlocuita chiar daca ea urmeaza a fi


referita din nou la momentul urmator.
3) A doua sansa (clock algorithm)-daca bitul de referire este 0, pagina va fi
inlocuita, daca este 1 atunci el va primi valoarea 0, timpul de sosire primeste
valoarea momentului current. Paginii care I s-a dat a doua sansa ramane in
memorie pana cand toate celelalte pagini au fost inlocuite sau au primit si ele
o a doua sansa. Daca o pagina este folosita destul de des pentru ca valoarea
bitului sau sa ramana 1, ea nu va fi inlocuita niciodata.
4) LFU(last frequently used)-inregistreaza numarul de referii pentru fiecare
pagina. Este selectata pentru inlocuire pagina care are cel mai mic numar de
referiri. Dezavantaj-daca la inceputul programului o pagina este intens
folosita, si apoi nu mai este utilizata deloc ea va ramane in memorie deoarece
numarul ei de referiri va fi destul de mare.
5) MFU(most frequently used)-considera ca o pagina cu nr mic de referiri este
probabil cea mai recent introdusa si este posbil sa fie folosita in continuare.
Are insa o implementare foarte costisitoare.
Alocarea cadrelor-metode:
1) First-fit(primei potriviri)-memoria solicitata este alocata in prima zona in
care incape.
2) Best-fit(celei mai bune potriviri)-se cauta acea zona libera care dupa
alocare lasa cel mai putin spatiu liber. Dez: Timp suplimentar de
cautare,fragmentare interna excesiva.
3) Worst-fit(celei mai rele potriviri)-se cauta zonele libere care dupa alocare
lasa cel mai mult spatiu liber. Timp de cautare mare.
4) Buddy-system(prin camarazi)-exploateaza reprezentarea binara a
adreselor si faptul ca dimensiunea memoriei interne este multiplu de 2.
Pentru Linux: Adresarea memoriei virtuala-tabela cu trei niveluri, Alocarea
Paginilor Fizice (algoritmul Buddy), inlocuirea paginii (algorimul a doua sansa), alocarea
memorie pentru kernel (Buddy)
SGF- sistemul de gestiune a fisierelor
SGF- operatii la nivel de fisier:denumire si manipulare fisiere, persistenta
datelor, mecanisme de acces concurrent al proceselor la informatiile stocate.
Fisiere- asambluri de informatii grupate de catre SO
Articol/inregistrare-mica entitate din cadrul unui fisier la care utilizatorul are
acces la un moment dat.
Clasificarea fisierelor:
D.p.d.v structural secventa de octeti, secventa de inregistrari, structura
arborescenta.
D.p.d.v. al tipului: normale(ASCII sau binare), directoare, special, legaturi
simbolice
Descriptorul de fisier contine informatii de descriere a unui fisier(identificatorul
fisierului, adresele fizice pe care le ocupa, acces, organizare si calendaristice).

Modul de organizare-aranjarea articolelor sau unele parti din ele astfel incat sa
permita modurile de acees dorite.
1)Fisiere de tip pile(gramada)-datele sunt colectate in ordinea in care apar,
scopul este acumularea si salvarea unei cantitati de date, nu au o structura bine
definite, accesul la un articol poate fi costisitot ca timp.
2)Fisiere cu organizarea secventiala-inregistrarile au format fix, cautarea
implica procesarea tuturor articolelor, inserearea de articole noi se face greu.
3)Fisiere cu acces direct prin pozitie- articole cu fromat fix, plasate in sectoare
vecine.
4)Fisiere inverse-contin pentru fiecare cheie specificata de utilizator adresele
disc la care se afla articolele care contin cheia respectiva.
5)Fisiere multilista-fiecarei chei dintr-un articol ii este atasata un pointer catre
articolul urmator care contine aceeasi cheie.
6)Fisiere secvential-indexate-articolele sunt scrise pe support in acces
secvential si plasate in orindea crescatoare a indexului. Articolele sunt grupate in blocuri
de informatii numite pagini.
7)Fisiere selective-materializarea functiei de regasire printr-un simplu calcul
efectuat de CPU. Acces direct prin continut.
8)Fisiere organizate folosind B-arbori-cheile sunt furnizate in orice ordine,
cautarea se face strict in acces direct.Fiecare nod contine m locuri in care pot fi
memorate m chei. B+arboreal contine chei numai in nodurile terminale ale arborelui. Barborele extins-acces relative, adaugarea unei informatii suplimentare pe langa fiecare
pointer din B-arbore, nr intreg ce contine subarborele indicat de pointer.
SGF- operatii la nivel de disk- implementarea unui sistem de regasire a
fisierelor, evidenta spatiului neutilizat, alocarea spatiului pentru fisiere disc.
Sistemul de directoare(cataloage)-realizeaza legatura intru numele atribuit de
utilizator unui fisier si localizarea fizica pe disc a informatiei associate acestuia: mapare.
Tipuri de structura pentru directoare:
1) Directoare cu un singur nivel-toate fisierele de pe disk sunt in acelasi director
2) Directoare cu doua nivele-la nivel superior MFD (master file director) care
contine pointeri catre UFD (user file directory), de unde se face accesul catre
fisierele utilizatorului respectiv.
3) Directoare cu structura de arbore-extenise a celei cu doua nivele
4) Directoare cu structura de graf aciclic-permit ca anumite fisiere sa fie
accesibile din mai multe directoare parinte.
Alocarea spatiului pentru fisiere pe disc:
Alocarea statica(prealocare)-specificarea dimensiunii spatiului ce va fi
ocupat de fisier.
Alocare dinamica-fisierul va ocupa atat spatiu cat este necesar
FAT-file allocation table-pastreaza informatii legate de spatiul alocat fiecarui
fisier.
Alocarea contigua-un fisier ocupa un set de adrese consecutive pe disc.
Alocarea inlantuita-evitarea fenomenului de fragmentare, fiecare fisier este
inregistrat intr-un sir de blocuri legate intre ele printr-o lista inlantuita.
Alocarea indexata-pe langa blocurile atasate fisierului , se creeaza un bloc
special, numit bloc de index, lucru ce ajuta la accesarea directa.

Evidenta spatiului liber pe disc se face pe baza fisierelor inverse si a listelor


inlantuite.
Planificarea accesului la disc- etape
pozitionarea furcii pe care se afla capetele de citire pe cilindrul care
contine sectorul dorit
asteptarea rotatiei discului pana cand sectorul trece prin fata capului de
citire/scriere
schimbul de informatie propriu-zis
Algoritmi de planificare a accesului la disc(pozitionarea capetelor de
citire/scriere a discului discul are 199 cilindri):
1)FCFS-executa cererile in ordinea in care au venit (neeficient, necesita miscari
de pozitionare)
2)SSTF(shortest seek time first)-executa cererea care solicita cea mai scurta
pozitionare, fata de locul current (poate amana indefinit anumite cereri deoarece coada
de asteptare se modifca permanent)
3)SCAN-miscarea capetelor incepe de la ultimul cilindru, mergand spre primul si
servind toate cererile pe care le intalneste. Cand ajunge la cererea de la cea mai mica
adresa, capetele isi schimba sensul de mers, servind cererile aparute ulterior, s.a.m.d.
Este posibil ca unele cereri sa astepte doua parcurgeri pana sunt servite.
4)C-SCAN (circular SCAN) servirea cererilor se face numai cand capetele se
deplaseaza de la adrese mici spre adrese mari. Cand ajunge la ultimul cilindru, capetele
sunt retrase automat pe cilindrul 0.
5)LOOK-capul de citire/scriere se deplaseaza spre cilindrul cel mai apropiat la
care se gaseste.
6)C-LOOK-capetele se deplaseaza cat de mult posibil in directia in care exista
cereri, dupa care, daca nu mai sunt cereri in directia curenta, este schimbata directia.
La schimbarea directiei nu este servita nicio cerere.
Algoritmii de servire a cererilor la disc sunt implementati in controller-ul de disc.
SO va trimite cererile in ordinea FCFS, iar controller-ul le va prelua si le va servi intr-o
ordine optima.
Managementul swap-ului:
este utilizat in functie de felul in care SO implementeaza algoritmii de
acces la memorie
pot exista mai multe spatii de swap
se poate afla in sistemul normal de fisiere (Windows)
se poate afla pe o partitie create special
Zona swap serveste pentru salvarea temporara a unor segmente de procese,
care asteapta in memoria interna a calculatorului.
Virtual File Systems(VFS)-modalitate de implementare a sistemelor de fisiere in
diverse sisteme de operare, asemanatoare principiilor POO. Permit utilizarea acelorasi
apeluri sistem pentru a accesa diverse sisteme de fisiere.
Journal File System(JFS)-scrierile pe disc sunt realizare asincron datorita
faptului ca, dupa terminarea unei cereri de scriere pe disc, informatiile sunt inregistrate
in log-uri si apoi facute modificarile in tabelele descriptorilor de fisier. Ajantaj-refacerea
rapida a datelor, dezavantaj-scrieri suplimentare pe disc, spatiu ocupat in plus.

High Performance File System(HPFS)-organizeaza discul in volume si rezerva


primele 18 sectoare pentru blocul de boot, superbloc si blocul de rezerva. Aceste
blocuri contin informatiile de control care sunt utilizate pentru initializarea sistemului,
gestiunea sistemului de fisiere si refacerea lui dupa producerea de erori.
Windows-sistem de fisiere:NTFS,FAT16, FAT32. Sistemul de fisiere FAT
foloseste ca mechanism de alocare lista inlantuita de indecsi. Tabela FAT reda modul de
inlantuire a blocurilor ce alcatuiesc un fisier. NTFS foloseste o structura de tip B-arbore
pentru descrierea localizarii pe disc. Fiecare volum NTFS contine o Master File Table ce
cuprinde informatii despre fisierele din volum.
Sisteme de fisiere distribuite-permit distribuirea sistemului de fisiere pe masini
diferite fizic, pastrand totusi datele disponile de pe aceste masini. Avantaje: back-up
usor al datelor si managementul acestora.
Un sistem de fiiere distribuit permite accesul la fiiere care aparin mai multor
sisteme de calcul, printr-o reea de calculatoare. Este deci posibil ca mai multi utilizatori
s mpart fiiere i alte resurse. Sistemele de fiiere distribuite pot include faciliti de
replicare transparent i toleran la erori,
Unix- NFS, RFS; Windows-CODA, Active Directory,AFS.
Sistemul de I/O se ocupa de generarea de comenzi catre dispoztive, tratarea
intreruperilor, tratarea erorilor posibile, interfata utilizator.
Dispozitivele de I/O sunt formate dintr-o componenta mecanica si una
electronica numita controller. Acesta poate gestiona mai multe dispositive identice.
Comunicatia dintre controller si unitatea centrala se face prin intermediul
unor registere care in general fac parte din spatial de adrese de memorie (registre
mapate in memorie). Aceste registre au timp de acces mai redus si sunt utilizare de
SO pentru a inscrie parametri si comenzi si pentru a citi starea dispozitivului respective
si codurile de eroare.
Direct Memory Acces (DMA)- operatia de copiere in memorie este efectuata de
catre controller si nu de catre unitatea central. Astfel se poate transfera ma efficient un
volum mare de date. Continutul blocului de date este stocat in buffer-ul intern si
verificat, controllerul asteapta eliberarea magistralei sistemului si transfera intregul bloc
de memorie.
Buffer-ele sistemului de I/O au aparut din cauza urmatoarelor probleme:
paginile care pastreaza data ce trebuie transferata trebuie sa ramana in
memorie
limitari la adresa actiunilor sistemului de operare
procesele nu pot fi transferate complet in swap sau pot apare blocaje.
Sistemul de I/O are urmatoarea structura hardware: dispositive bloc(discul),
dispositive character(imprimanta, mouse, terminale,adaptoare de retea). Se mai aduga
unitatile de banda si ceasul de timp real.
Sistemul de I/O are urmatoare structura software: rutine de tratare a
intreruperilor, driver, programe sistem independente de dispozitvie, primitive de nivel
utilizator.
Drivere-programe ce transforma apelurile functiilor I/O ale utilizatorului in cereri
specifice componentei hardware.

Primitive de nivel utilizator-au rolul de a transfera parametrii lor apelurilor


sistem pe care le initiaza si pot oferi posibilitatea formatarii datelor de intrare/iesire.
Job spooling-tehnica de inmagazinare pe benzi sau disk-uri.

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