Extras din curs
SUB 1MEMORIA CACHE; STRUCTURI DE DATE
- Structura unui buffer
Un buffer consta in doua parti:
- o zona de date (contine datele de pe disc)
- un antet (identifica bufferul)
Antetul unui buffer contine:
- un camp numar de dispozitiv (reprezinta numarul sistemului de fisiere logic)
- un camp numar de bloc
- un camp de stare
- un pointer la zona de date a bufferului
- doua seturi de pointeri, folositi de algoritmi de alocare a bufferelor
o pointer la bufferul anterior din lista de hash
o pointer la bufferul urmator din lista de hash
o pointer la bufferul anterior din lista bufferelor libere
o pointer la bufferul urmator din lista bufferlor libere
- Starea unui buffer
Este o combinatie intre urmatoarele conditii:
- bufferul este momentan blocat (locked, busy)
- bufferul contine date valide
- kernelul trebuie sa scrie continutul bufferului pe disc inainte de a realoca bufferul (delayed- wait)
- kernelul momentan citeste sau scrie continutul bufferului pe disc
- un proces asteapta ca bufferul sa devina liber
Lista bufferelor libere
Bufferele din listele hash
2
- Scenarii pentru regăsirea unui buffer:
1. Kernel-ul găseşte blocul în lista hash şi buffer-ul său este liber.
2. Kernel-ul nu găseşte blocul în lista hash şi alocă un buffer din lista buffer-elor libere ( free list ).
3. Kernel-ul nu găseşte blocul în lista hash şi, în încercarea de a aloca un buffer din free list( ca în scenariul 2 ), găseşte un buffer marcat ca ―delayed-write‖. Kernel-ul trebuie să scrie acest buffer pe disc şi să aloce alt buffer.
4. Kernel-ul nu găseşte blocul în lista hash şi lista buffer-elor libere este goală.
5. Kernel-ul găseşte blocul în lista hash dar buffer-ul este momentan ocupat ( ―busy‖ ).
Preview document
Conținut arhivă zip
- Proiectarea Sistemelor de Operare.pdf