Alexandru Dinca <[email protected]> writes: > Salut, > > Ne-a explicat Răzvan mai demult la curs ca *a=5; poate produce TLB flush. > Poate sa explice cineva din nou de ce se poate intampla acest lucru?
Accesul la adresa indicată de a (a este un pointer) poate produce page fault. Un page fault se poate întâmpla din cauza prezenței paginii în cauză în swap. În acel moment pagina trebuie adusă din swap (swap in), operație de durată care operează cu discul și care blochează procesul curent. Blocarea procesului curent înseamnă trecerea sa în starea/coada WAITING până când este adusă pagina de pe disc. Trecerea procesului în starea/coada WAITING înseamnă schimbare de context: înlocuirea procesului curent cu alt proces. Înlocuirea unui proces cu un alt proces înseamnă înlocuirea spațiului de adresă al procesului, adică al tabelei de pagini. Schimbarea tabelei de pagini înseamnă TLB flush – intrările în TLB sunt invalidate (erau valabile doar în fostul spațiul de adresă, pentru fosta tabelă de pagini). Răzvan _______________________________________________ http://elf.cs.pub.ro/so/wiki/resurse/lista-discutii
