[so] intrebari tema 5
Daniel Ionita
so@cursuri.cs.pub.ro
Wed, 5 Jan 2005 01:28:29 -0800 (PST)
Iti pot raspunde la intrebari din punctul de vedere al
temei facute de mine:
> 1. Ce dimensiune trebuie sa aiba fiecare segment de
> memorie?
In win, cred ca unitatea de lucru (segmentul, sa
zicem), este de 64K, granularitatea sistemului de
operare. Pe linux, ramane de vazut.
> 2. Trebuie implementat un MMU sau pur si simplu
> lucram cu segmentele respective?
? Nu prea inteleg intrebarea. Daca prin MMU te referi
la un mecanism care sa detecteze daca un segment e in
memorie sau in swap si sa faca operatiile necesare da,
trebuie facut un MMU. De fapt, un VMM :D
> 3. Nu imi este f clar cum trebuie sa facem
> simularea(si cam tot
> sistemul de memorie virtuala). Vom avea un vector pe
> care il alocam la
> inceput ca nrpagini*dimensiune si pe care il
> impartim in segmenetele
> respective? Si pe acesta aplicam algoritmii
> respectivi? Sau altfel?
> Daca este primul caz, simularea va decurge pur si
> simplu prin accesul
> la elemente din vectorul respectiv? Sau se doreste
> altceva?
Functia ta trebuie sa intoarca pointerul unui zone de
memorie de marimea ceruta (la mine e nrpagini*gran,
adica nrpagini*64k), si pe asta lucreaza VMM-ul din
DLL. Pentru aplicatie, totul trebuie sa fie
transparent, adica ea face ceva de genul asta:
pointer = vinit(x, y, z);
pointer[0] = 1;
{in DLL - exceptie access violation, aduce in memorie
pagina 0}
pointer[90000] = 1;
{in DLL - exceptie access violation, aduce in memorie
pagina 1}
pointer[90001] = 1;
{nici o exceptie, zona ar trebui sa fie deja in
memorie}
etc.
__________________________________
Do you Yahoo!?
Yahoo! Mail - Find what you need with new enhanced search.
http://info.mail.yahoo.com/mail_250