[so] [SO] Nelamurire swap

Razvan Deaconescu razvan.deaconescu at cs.pub.ro
Mon Apr 26 11:41:20 EEST 2010


On Sun, 2010-04-25 at 13:23 +0300, Mircea Urse wrote:
> Ce nu imi este clar: care este de fapt legatura dintre swap si disc si
> ce pagini contine swap-ul?

Salut!

Scriu un mesaj mai lung in care incerc sa acopar cat mai bine notiunile
legate de swap. Daca sunt neclaritati, raspundeti la acest mesaj.

Spatiul de swap reprezinta o sectiune dedicata de pe disc (fie partitie
dedicata - Linux, fie parte din partitia de sistem - Windows) care
mentine paginile care nu au avut loc in memoria fizica.

Procesul de copiere a paginilor din memoria fizica in swap se numeste
evacuare (sau swap-out); paginile virtuale vor avea corespondent pagina
existenta in swap. Procesul invers este o forma de paginare (swap-in) in
care o pagina virtuala obtine un corespondent direct in memoria fizica,
prin copiere din swap in RAM.

O intrare in tabela de pagini (pagina virtuala, pagina fizica), poate
avea, in campul pagina fizica urmatoarele valori:
1. o pagina fizica valida (paginare)
2. pagina fizica absenta (o valoare speciala)

O pagina fizica absenta poate insemna urmatoarele:
2.1. pagina virtuala este nevalida - accesarea ei nu este permisa, nu
are nici un corespondent
2.2. pagina virtuala este valida, dar nu are asociata o pagina fizica

O pagina virtuala valida, dar care nu are corespondent o pagina fizica,
poate sa se gaseasca intr-una dintre urmatoarele stari:
2.2.1. pagina a fost alocata folosind demand paging; s-a alocat memorie
pur virtuala fara a se aloca un corespondent fizic; este o actiune de
tip lazy care amana alocarea paginii fizice pana la primul acces (care
va genera page fault)
2.2.2. pagina este evacuata pe disc/swap; in momentul accesului se va
genera un page fault iar pagina va fi readusa in memoria fizica
(swap-in)

Se pot genera (la nivel simplist) urmatoarele tipuri de page fault-uri
si efectele lor:
* adresa/pagina virtuala este nevalida; procesul a executat o actiune
invalida si va fi transmisa o exceptie procesului (in forma SIGSEGV pe
Unix)
* adresa/pagina virtuala este valida, dar nu sunt suficiente drepturi
(se incearca acces de citire la o zona read-only); depinzand de caz, se
va efectua copy-on-write (fork) (procesul poate sa scrie) sau se va
transmite exceptie (ca mai sus) (procesul nu poate sa scrie)
* pagina virtuala este alocata prin demand paging; in urma page
fault-ului se aloca o pagina fizica (demand paging - paginare la cerere)
si este completata corespunzator tabela de pagini
* pagina virtuala are corespondent pe disc; pagina aferenta trebuie
adusa de pe disc in RAM (swap-in); in cazul in care nu este loc, se
aplica un algoritm de inlocuire si evacuare (swap-out) a unor pagini din
RAM

Suplimentar, paginile dispun, in general, de un bit Modified. Daca o
pagina s-a gasit pe swap si nu a fost modificata (bitul Modified este 0)
atunci nu se mai efectueaza evacuarea (swap-out), pentru ca pagina este
deja acolo, in aceeasi forma ca in RAM.

HTH,
Razvan



More information about the so mailing list