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 puin recent folosit" : dup ce aloc un buffer unui bloc disc, nucleul nu poate utiliza bufferul pentru alt bloc pn cnd toate cellalte buffere nu vor fi utilizate. Nucleul menine free list (lista bufferelor libere, prescurtat FLB) care pstreaz bufferele cel mai puin recent folosite n ordinea invers a eliberrii lor. FLB este o list circular dublu nlnuit de buffere care are un antet de buffer special pentru a marca nceputul ?i sfr?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.