[so] Intrebare Tema 5

Maximilian Machedon maximilian.machedon at gmail.com
Thu Feb 2 07:42:08 EET 2006


        (Raspuns "neautoritar" dar, sper, corect).

    In primul rand: algoritmul din carte este pentru cazul cand ai scrieri
asincrone, lucru pe care nu suntem obligati sa-l facem (s-a scris pe lista
in anii trecuti). Apar niste diferente (simplificari) daca nu faci scrieri
asincrone.

    In al doilea rand: algoritmul WSClock incearca sa parcurga cat mai putin
din tabela de pagini, sacrificand cea mai buna alegere daca e necesar. 2GB
de memorie fizica ocupata, cu pagini de 4Kb ~= 524.000 de pagini. Scopul e
de fapt sa rezolve cat mai repede fault-ul.

    In cazul din carte (scrieri asincrone), eu am interpretat ce scrie in
carte asa:

    1. Pagina curata o cauti la prima parcurgere printre cele cu R=0, care 
nu sunt in WS; daca nu gasesti nimic parcurgi in continuare. Scrierile se 
fac pentru paginile cu R=0 care nu sunt in working set. In carte spune sa te 
plimbi in continuare daca la prima parcurgere nu gasesti nimic, dar ai 
programat scrieri; in mod evident, daca poti nu are sens sa te plimbi inca o 
data (a treia oara); daca e posibil e mai bine sa astepti terminarea unei 
scrieri.

    2. Da, exista alegeri mai bune si alegerea celei mai vechi pagini pare
OK.
        Ca optimizare (discutabila) poti tine minte pagina cea mai veche la
prima parcurgere. De ce discutabil? Pentru ca ciclul pentru prima parcurgere
se va executa mai incet, deci in cazul mai frecvent o sa mearga mai lent
pentru ca in cazul mai rar sa mearga mai repede... :-) Ai putea face o noua
parcurgere sa afli minimul sau sa alegi pagina curenta.

    In cazul in care faci scrierile sincron: daca scrierea unei pagini e
comparabila cu parcurgerea intregii liste (ca timp consumat) ai putea alege
prima pagina care nu e in WS, indiferent daca e curata sau nu; altfel ai
putea face doua parcurgeri si daca la prima nu gasesti o pagina curata la a
doua scrii una care nu e curata.

        Sper ca te-am ajutat cu ceva.


----- Original Message ----- 
From: "Andrei Serea" <andrei.serea at gmail.com>
To: <so at cursuri.cs.pub.ro>
Sent: Wednesday, February 01, 2006 11:23 PM
Subject: [so] Intrebare Tema 5


Dupa cum spune si subiectul, am o nelamurire legata de algoritmul
WSClock din tema 5.
Sa presupunem urmatorul caz:
Apare un page fault, se parseaza o data toata lista si se observa ca
toate paginile curent in memorie sunt in "working set". In Tanenbaum
scrie ca in acest caz ar trebui sa evacuam o pagina curata, daca ea
exista, altfel pagina "curenta"<-- am citat din tanenbaum.
Aici am 2 intrebari:
1. Pagina curata o cautam atat printre cele cu R=0 cat si printre cele cu
R=1?.
Intreb asta pentru ca mi s-ar parea foarte ineficient sa evacuam o
pagina care este curata si are R=1 (a fost referita in tick-ul curent)
doar pt ca (sa presupunem) e singura pagina curata din lista. In acest
caz nu ar fi mai bine sa o evacuam pe cea mai veche?
2. Presupunem ca nu exista nici o pagina curata in lista. Mi se pare
total absurd sa evacuam "pagina curenta", asa cum scrie in Tanenbaum.
Sunt o multime de solutii mult mai bune decat asta..una la care ma
gandesc acum ar fi sa evacuam pagina referita cel mai demult. E usor
sa obtinem informatia asta pe masura ce trecem prima oara prin lista.

Cam atat...multumesc si astept un raspuns :)
Andrei Serea



More information about the so mailing list