[OSy] Problem so zapisovanim do do virtualnej pamete

Martin Choma martin.choma at gmail.com
Wed Dec 5 01:40:08 CET 2007


Caute,

riesime jeden zahadny problem. Mame alokovany blok pamete vo virt.
priestore a k nemu alok. blok fyzickej.
Pri pokuse o zapis na virtualnu adresu sa nam vyhlada tlb zaznam so
spravnym mapovanim a zapiseme.
Este vypis premennej hned po tomto zapise vypise spravne priradenu
hodnotu (co moze byt sposobene cache).
Ale ak si vypiseme predchadzajucu premennu, do ktorej sme priradovali,
tak ta obsahuje hodnotu 255
(co je hodnota pri pohlade na fyz. adresu 0xCxxxxxxxx v memory dumpe
msimu). Ked sa pozrieme na danu
fyzicku pamat memory dumpom, tak je skutocne nevyplnena. Ako keby sa
to nezapisovalo alebo zapisovalo
niekam inam. Nenapada niekoho, cim by to mohlo byt? Diky.

priznaky ksu exl a erl mame nastavene takto;
ksu = 0, exl=0, erl=0

nase zaznamy v TLB vyzeraju asi takto:

[0] : Virtual Address=0xc00ec000  ;Even=0x4fd800 [D=1,V=1,G=0];
ODD=0x4fe800 [D=1,V=1,G=0] ; ASID=1
[1] : Virtual Address=0xc00ee000  ;Even=0x4ff800 [D=1,V=1,G=0];
ODD=0x500800 [D=1,V=1,G=0] ; ASID=1
[2] : Virtual Address=0xc00d4000  ;Even=0x4e5800 [D=1,V=1,G=0];
ODD=0x4e6800 [D=1,V=1,G=0] ; ASID=1
[3] : Virtual Address=0xc00e4000  ;Even=0x4f5800 [D=1,V=1,G=0];
ODD=0x4f6800 [D=1,V=1,G=0] ; ASID=1
[4] : Virtual Address=0xc00ea000  ;Even=0x4fb800 [D=1,V=1,G=0];
ODD=0x4fc800 [D=1,V=1,G=0] ; ASID=1
.
.
.

Martin Choma




More information about the NSWI004 mailing list