шпаргалка

b.ALG.getblk sc3,4,5

[ Назад ]
În al treilea scenariu din algoritmul getblk, nucleul trebuie de asemenea să aloce un buffer din FLB. Totuşi, el descoperå că bufferul pe care l-a luat din FLB a fost marcat "delayed write" (scriere întârziată), astfel că trebuie să scrie conţinutul bufferului pe disc înainte de a-l folosi. Nucleul începe o operaţie de scriere asincronă pe disc şi încearcă să aloce un alt buffer din FLB.Când scrierea asincronă se încheie, nucleul eliberează bufferul şi-l plasează la capul FLB (conform politicii ?cel mai puţin recent utilizat?).
În al patrulea scenariu (figura 3.9), nucleul, care acţionează în contul procesului A, nu găseşte blocul disc în lista hq corespunzătoare, astfel că încearcă să aloce un buffer nou din FLB (ca în scenariul al doilea). Totuşi, nu este disponibil nici un buffer în lista bufferelor libere, aşa că procesul A se pune în açteptare până când un alt proces execută algoritmul brelse, eliberând un buffer.Când nucleul planifică pentru execuţie procesul A, trebuie să caute din nou blocul în lista hq. El nu poate aloca imediat un buffer din FLB deoarece este posibil ca unul din procesele care aşteaptau un buffer liber să aloce blocul ales de procesul A.Procesul A eventual va elibera bufferul şi va observa că bufferul este solicitat de alte procese. El trezeçte toate procesele care aşteaptă pe evenimentul "bufferul devine liber", incluzând aici şi procesul B. Când nucleul planifică din nou procesul B, acesta trebuie să verifice dacă bufferul este liber. Un alt proces, C, ce aşteaptă acelaşi buffer, este planificat de nucleu să ruleze înaintea procesului B. Dar procesul C se pune în aşteptare, bufferul rămânând blocat. Din această cauză procesul B trebuie să verifice dacă într-adevăr bufferul este liber.Procesul B trebuie să mai verifice şi dacă bufferul conţine blocul disc pe care l-a cerut iniţial, deoarece procesul C putea să aloce bufferul unui alt bloc, ca în scenariul 2. Când se execută procesul B, acesta verifică dacă bufferul este cel aşteptat, iar în caz negativ este necesar să caute din nou blocul. Dacă ar urma să aloce automat un buffer din FLB, s-ar scăpa din vedere posibilitatea ca un alt proces să fi alocat deja un buffer pentru acel bloc.În final, procesul B va găsi blocul, posibil alocând un nou buffer din FLB conform scenariului al doilea.

КАТЕГОРИИ:

Network | английский | архитектура эвм | астрономия | аудит | биология | вычислительная математика | география | Гражданское право | демография | дискретная математика | законодательство | история | квантовая физика | компиляторы | КСЕ - Концепция современного естествознания | культурология | линейная алгебра | литература | математическая статистика | математический анализ | Международный стандарт финансовой отчетности МСФО | менеджмент | метрология | механика | немецкий | неорганическая химия | ОБЖ | общая физика | операционные системы | оптимизация в сапр | органическая химия | педагогика | политология | правоведение | прочие дисциплины | психология (методы) | радиоэлектроника | религия | русский | сертификация | сопромат | социология | теория вероятностей | управление в технических системах | физкультура | философия | фотография | французский | школьная математика | экология | экономика | экономика (словарь) | язык Assembler | язык Basic, VB | язык Pascal | язык Си, Си++ |