[so] [Tema3] sincronizare swap, ram

Lucian Mogoşanu lucian.mogosanu at gmail.com
Thu Apr 29 00:49:19 EEST 2010


Salut,

Am câteva nelămuriri în legătură cu implementarea temei:

1.Există restricții cu privire la sincronizarea swap-ului (dacă acesta este
mapat în memorie)? Se poate face sincronizarea în ram_sync() (am observat că
în teste este apelată înainte de verificarea swap-ului), sau trebuie făcută
la înlocuirea paginilor (adică la scrierea în swap)?

2.Din enunțul temei, înțeleg că flag-ul „dirty” va fi persistent pe tot
parcursul existenței unei pagini în RAM (la swapping, nu se copiază
conținutul propriu-zis al paginii decât dacă flag-ul este activ; la scriere
se contorizează doar prima modificare conținutului). Astfel, în momentul
apelului ram_sync(), flag-ul nu va fi resetat. E ok raționamentul?

3.În teste, la verificarea inițializării memoriei RAM și a swap-ului, se
folosește rand() % 100, de exemplu:

test ("extra_virt",vinit (rand () % 100 + MAX_VIRTUAL_PAGES, rand () % 100)
== NULL);

Totuși, în cazul în care rand % 100 va întoarce 0, se rezervă numărul maxim
de pagini permis (nu mai mult), dar testul va eșua. Comportamentul mi se
pare un pic contraintuitiv, ținând cont că și din enunțul temei am înțeles
că numărul maxim de pagini rezervabile este
MAX_VIRTUAL_PAGES/MAX_PHYSICAL_PAGES și nu
MAX_VIRTUAL_PAGES-1/MAX_PHYSICAL_PAGES-1. De asemenea, presupun că nici
rezervarea a 0 pagini fizice nu e de dorit, deși nu știu dacă are vreun
impact în testul respectiv. Știu că probabilitatea ambelor cazuri e destul
de mică, dar presupun că o dezambiguizare pe tema asta e binevenită. :)

Lucian Mogoșanu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/lurker/list/so.html/attachments/20100429/926f75f7/attachment.htm>


More information about the so mailing list