c.Structura sistemului de buffere

Сделай свою wap-шпаргалку =) попробуй конструктор сайтов http://www.panweb.com/


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.