[so] [Tema 3] Nelamurire enunt

Andrei Bucur andrei.bucur at gmail.com
Tue Apr 21 18:12:58 EEST 2009


Eu ma gandesc ca tema trebuie structurata in modul urmator:
1. virt_pages pagini mapate peste RAM-ul fizic;
2. phys_pages pagini mapate peste fisierul RAM;
3. virt_pages pagini mapate peste fisierul SWAP.
Accesul la memoria simulata se va face strict prin (1). Fiecare pagina va fi
protejata impotriva scrierii / citirii. In momentul in care se semnalizeaza
un acces invalid se efectueaza operatiile necesare (aducere din (3) in (1)
daca exista page fault etc.). Sincronizarea intre (1) si (2) se face prin
apelul ram_sync, as in se copiaza din memoria virtuala paginile marcate ca
fiind in RAM si "dirty".
Tu spui ca ar trebui sa elimin (1) si sa folosesc (2) pe post de memorie
virtuala. Cum simulezi atunci pagefault? Functia vinit intoarce o adresa la
care sunt mapate virt_pages.La (2) sunt mapate doar phys_pages, care e mai
mic decat virt_pages.
Andrei B.

2009/4/21 Catalin <catalin.me at gmail.com>

> Andrei Bucur wrote:
>
>> Salut!
>> "Paginile de memorie virtuala (din spatiul de adresa al procesului) se vor
>> mapa direct peste fișierul de RAM folosind apelurile mmap si MapViewOfFile."
>> Nu inteleg cum as putea sa fac mapare directa a memoriei virtuala care are
>> virt_pages pagini peste fisierul RAM care contine phys_pages pagini.
>> Intuitiv eu as face  o mapare separata a fisierului RAM in spatiul de adrese
>> al procesului. Atunci cand vreau sa aduc o pagina in RAM sa o copiez (cu
>> memcpy de exemplu) din memoria virtuala (de dimensiune virt_pages) in zona
>> de memorie care se mapeaza peste fisierul RAM.
>> Poti sa detaliezi la ce se refera acea mapare directa din enunt?
>> Multumesc
>>
>>
> Cred ca memoria virtuala pe care trebuie sa o simulam este de fapt maparea
> fisierului RAM in spatiul de adrese al procesului.
>
> Pentru a face memcpy ar trebui sa aloci pentru memoria virtuala un spatiu
> de phys_pages cu malloc si in momentul asta se cam pierde toata ideea temei.
> De ce sa te mai zbati cu RAM si swap daca faci direct un malloc de
> phys_pages pentru cat ai tu nevoie ?
>
> Corectati-ma daca gresesc.
>
> Numai bine
> Catalin Moraru
> _______________________________________________
> so mailing list
> so at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20090421/5e0c8c16/attachment-0001.htm>


More information about the so mailing list