[so] ram_sync
Alexandru Marinescu
alexandru.marinescu at yahoo.com
Sun May 11 02:59:08 EEST 2008
In implementarea temei am ales sa mapez fisierele peste memoria din program. In consecinta creez fisierele cu drepturi de citire/scriere si o mapare cu protectie PROT_READ | PROT_WRITE. Memoria virtuala este creata initial cu PROT_NONE.
In functia de swapout am urmatoarea logica:
1. demapeaza pagina care mi-a dat sigsegv din mem virt
2. mapeaza pagina care este pe poz 1 in ram, in swap la pagina corespunzatoare
3. modifica proprietatile paginii de la pct 2. pentru a reflecta schimbarile
4. verific daca pagina de la pct 1. este dirty -> scrie in swap
5. mapeaza pagina in ram la prima pozitie(asta este algoritmul pe care doresc sa il folosesc la alegera paginii)
6. modifica proprietatile paginii de la pct 1 pentru a reflecta schimbarile
7. scrie informatiile din swap in ram
Deoarece am folosit mapare pe fisiere ar trebui sa folosesc memcpy pentru a transfera informatiile dintr-un fisier intr-altul la punctele 4, 7.
Problema mea este urmatoarea:
In momentul in care se apeleaza ram_sync (care nu este nimic altceva decat un msync(ram, ram_size, MS_SYNC)) primesc urmatorul output de la perror: "Cannot allocate memory". obs: ram = adresa la care a fost mapat fisierul ram.
Daca comentez msync-ul voi trece majoritatea testelor cu urmatoarele exceptii:
T2: check_ram, swap_ram_precheck, swap_count
T4: check_ram, swap_ram_precheck, swap_count.
Care ar putea fi cauza?
Multumesc!
---------------------------------
Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/so/attachments/20080510/7776ffd1/attachment.htm
More information about the so
mailing list