Extras din notiță
1. Fragmentare Externa
-avem fragmentarea spatiului din afara alocarii (intre spatiile allocate). De cele mai multe ori fisa si gestiunea lor se tine la nivel de sectoare.
Fragmentare Interna
-avem fragmentare spatii din interiorul spatiului alocat (apare pt ca se aloca blocuri)
Gestiunea spatiului liber
1. cu vectori de bit (bit vector)
Libere 2 3 4 5 8 9 10 15 |
0-ocupat | => 0011110011100001 se tin si in memorie si pe disk
1-liber |
Corespondenta : 1 bit la un bloc
2. lista inlantuita
3. grouping
4. cometing
2.Alocarea spatiului pe disc
Evidenta inlantuita este de 2 tipuri : simpla si indexata.
Evidenta simpla presupune existenta in catalogul volumului a unui pointer catre primul sector liber. Acest sector contine un pointer la urmatorul sector liber samd. Ultimul sector liber contine pointerul NIL (null). Daca se solicita ocuparea a n blocuri, se vor ocupa primele n pozitii din lista iar al n+1lea bloc liber din lista va deveni primul bloc liber. La stergerea fisierului blocurile vor fi incluse in lista.
Evidenta indexata consta in urmatoarele : presup. ca intr-un bloc pot fi stocate n adrese de blocuri libere. In primul bloc liber indicat de catalog se memoreaza adresele a n blocuri libere. Primele n-1 adrese reprez. sectoarele efectiv libere, iar ultima adresa se refera la un alt bloc liber care contine din nou adresele a n blocuri libere samd.
3.Alocarea continua (inlantuit si indexat)
-presupune ca fiecare fisier ocupa un set de adrese consecutive pe disc. Descriptorul de fisier din catalog contine adresa de inceput si lungimea zonei alocate. Ea conduce la fragmentarea spatiului pe disc. Prin alocare inlantuita un fisier este stocat intr-un sir de blocuri legate intre ele printr-o lista simplu inlantuita.
Alocare indexata presupune crearea unui bloc de indecsi, la crearea fisierului, unde se inregistreaza in ordine adresele tuturor blocurilor ocupate de fisierul respectiv. Descriptorul fisierului contine un pointer catre blocul de indecsi. Pt fis mai mari este posibila crearea mai multor blocuri de indecsi precum si inlantuirea acestora intr-o lista.
4.Blocare. Conditii necesare la blocare. Metode de controlare a blocarii.
Intr-un mediu multiprogramat, unele procese se pot transmite pentru un numar finit de resurse. Un proces necesita resurse. Daca resursele nu sunt disponibile in acel timp procesul va intra intr-o stare de asteptare. Se poate intampla ca acest proces de asteptare sa nu isi schimbe statutul deoarece sursa pe care a cerut-o este tinuta de un alt proces de asteptare. Aceste situatii sunt numite deadlocks (impas).
Conditii necesare la deadlocks
Excluziunea mutuala : cel putin o resursa trebuie sa fie neimpartita si numai un singur proces de la un moment dat poate sa foloseasca resursa. Daca un alt proces necesita resursa el trebuie sa astepte pana cand resursa este eliberata.
Hold and wait : trebuie sa existe un proces care tine cel putin o resursa si este asteptat pentru a dobandi resurse aditionale care sunt tinute de alte procese.
No preemption : resursa poate fi eliberata numai voluntary de procesul care o tine dupa ce procesul si-a completat sarcina lui.
Circular wait : sa existe un set de p0, p1…pn de procese de asteptare ai p0 asteapta pe p1…pn asteapta p0.
Metode de controlare a deadlocks
Sunt 3 metode diferite pt a trata problema deadlock.
-putem sa folosim un protocol pentru a ne asigura ca sistemul nu va intra in stadiul de deadlock.
-putem sa permitem sistemului sa intre in starea de deadlock si dupa aceea sa-si revina
-putem sa ignoram problema all together si sa pretindem ca deadlock nu vor interveni niciodata in system.
Aceasta solutie este folosita de multe sist de operare incluzand si UNIX.
5.Prevenirea deadlocks
Este un set de metode pentru a ne asigura ca macar o singura conditie deadlock sa nu fie adevarata.
*mutual condition : conditia excluziunii mutuale trebuie tinuta pentru resurse nonsharable. (ex. o imprimanta nu poate fi impartita simultan mai multor procese)
*hold and wait : pt a ne asigura ca conditia hold and wait sa nu apara in sistem trebuie sa garantam ca un proces necesita o resursa, nu poate sa tina o alta resursa.
*no preemption : daca un proces care contine unele resurse cerute de alte resurse care nu pot fi imediat alocate atunci toate resursele cerute sunt preemption, ceea ce inseamna ca resursele sunt implicit eliberate.
*circular wait : o cale sa ne asiguram ca asteptarea circulara nu retine niciodata este sa impunem o ordine totala a tuturor tipurilor de resurse si necesita ca fiecare proces sa ceara resurse intr-o ordine crescatoare.
Preview document
Conținut arhivă zip
- Sisteme de Operare.doc