SHPORA.net :: PDA

Login:
ðåãèñòðàöèÿ

Main
FAQ

ãóìàíèòàðíûå íàóêè
åñòåñòâåííûå íàóêè
ìàòåìàòè÷åñêèå íàóêè
òåõíè÷åñêèå íàóêè
Search:
Title: | Body:

c.Structura sistemului de buffere

Nucleul stocheazã datele într-un pool de buffere conform politicii "cel mai puþin recent folosit" : dupã ce alocã un buffer unui bloc disc, nucleul nu poate utiliza bufferul pentru alt bloc pânã când toate celãlalte buffere nu vor fi utilizate. Nucleul menþine free list (lista bufferelor libere, prescurtatã FLB) care pãstreazã bufferele cel mai puþin recent folosite în ordinea inversã a eliberãrii lor. FLB este o listã circularã dublu înlãnþuitã de buffere care are un antet de buffer special pentru a marca începutul ?i sfâr?itul listei ,Fiecare buffer este pus în FLB la iniţializarea sistemului. Nucleul ia un buffer din capătul listei când doreşte un buffer liber (când nu doreşte unul anume), dar poate lua un buffer din interiorul listei când caută un anumit bloc şi îl identifică în pool-ul de buffere. În ambele cazuri, bufferul este şters din listă. Când nucleul introduce un buffer în pool-ul de buffere, îl ataşează, de obicei, la coada listei, şi rareori în capul listei (pentru cazurile în care apar erori), dar niciodată nu-l ataşează în mijlocul listei. Pe măsură ce nucleul şterge buffere din FLB, un buffer cu date valide avansează către capul listei (vezi figura 3.2). Din această cauză, bufferele care se află cel mai aproape de capul listei nu au fost folosite atât de recent ca cele de la sfârşitul listei.
Când nucleul accesează un bloc disc, el caută un buffer care are numărul dispozitivului şi cel de bloc corespunzătoare blocului disc. În loc să caute întregul pool de buffere, nucleul organizează bufferele în liste circulare separate, ce sunt identificate folosind o funcţie de hash (de dispersie) ce are ca parametri numărul blocului şi numărul dispozitivului. O astfel de listă este numită hashqueue (listă hq) şi este similară structurii FLB. Numărul de buffere dintr-o listă hq variază pe durata de viaţă a unui sistem aşa cum vom vedea. Nucleul trebuie să utilizeze o funcţie de dispersie care distribuie bufferele uniform în setul de liste hq, dar care trebuie să fie simplă pentru a nu fi afectate performanţele sistemului. Numărul de liste hq din sistem este configurat de administratorul de sistem la instalarea sistemului.