[OSy] Problem so zapisovanim do do virtualnej pamete

Rastislav Wartiak rastik at tereus.eu
Wed Dec 5 14:51:46 CET 2007


Děkuji za nápad. V mém případě byl problém docela jednoduchý -  
vma_free nesmazalo příslušný záznam v TLB a tedy pokud jsem později  
přidelil stejnou stránku na jiný rámec, tak až do přemazání záznamu v  
TLB to zapisovalo úplně jinam. Vaše testy mě ale nepustily :-)

Hezký den,
Rastislav Wartiak

> Dobry den,
>
> podobny, ne-li stejny problem se tu kdysi resil, zapatral jsem v
> archivech a nasel zde
> https://dsrg.mff.cuni.cz/pipermail/osy/2004-December/thread.html
> thready "TLB" a "TLB - vyreseno". Tak se zkuste podivat zda vas to
> nenakopne spravnym smerem :)
>
> Vlastimil Babka
>
> Rastislav Wartiak wrote:
>> Ano, bojuji s podobným problémem.
>>
>> Rastislav Wartiak
>>
>>
>>> jj, tak ten podivny vypis bol sposobeny tym cim popisujes. Stale, ale mame
>>> problem so zapisom do virtualnej pamate.
>>>
>>> To co sa nam deje je detailne popisane tu ..
>>>
>>> 0.
>>> TLB je prazdne
>>>
>>> 1.
>>> Test si naalokuje pamat 0xc0000000 a zapise do nej;
>>> <0,0> .. cycle 0 (actionno: 0) -- vma_alloc (size=0x1000) = EOK,
>>> ptr=0xc0000000
>>>
>>> TLB vyhlada mapovanie a zapise do tabulky zaznam;
>>> [30] : Virtual Address=0xc0000000 ;Even=0x40a800 [D=1,V=1,G=0]; ODD=0x0
>>> [D=1,V=0,G=0] ; ASID=1
>>>
>>> (Uz v tomto momente pri vypise virtualnej pamate 0xc0000000 vypise 255, co
>>> je obsah FYZICKEJ pamate aj na 0xc0000000
>>> stranka 0x40a800 obsahuje same 00.)
>>>
>>> 2.
>>> Test sa poskusi pristupit k naalokovanej pamati a nenajde tam ocakavanu
>>> hodnotu;
>>> <0,0> .. cycle 0 (actionno: 1) -- access (ptr=0xc0000492) = 255,   
>>> expected 18
>>>
>>> Ziadna tlb exception sa nevyhodi a v tabulke je stale ten jediny zaznam;
>>> [30] : Virtual Address=0xc0000000 ;Even=0x40a800 [D=1,V=1,G=0]; ODD=0x0
>>> [D=1,V=0,G=0] ; ASID=1
>>>
>>> Mame pocit, ze bezime v nejakom divnom rezime. Ako keby pri nacitani pamate
>>> pouzival virtualnou adresou namiesot namapovanej fyzickej,
>>> pripadne sa dival niekam este uplne ako ma. Zapisuje tiez ktoviekam. Nemali
>>> ste niekto z Vas podobny problem? Dakujem za odpoved.
>>>
>>>
>>> On 12/5/07, Andrej Krutak <andree182 at gmail.com> wrote:
>>>
>>>> Aha,
>>>>
>>>> teraz ma napadla este jedna vec - co sa stala aj mne pri testovani.. :-)
>>>>
>>>> Mozno mate "blbo" napisany ten testovaci kod - v tom zmysle, ze je
>>>> prekladac
>>>> hyperinteligentny a zoptimalizuje ten kod tak, ze ked si date vypisat
>>>> obsah
>>>> pamati, kam ste predtym zapisali, tak to vlastne vypise iba nieco, co si
>>>> ten
>>>> program "pamata" este v registroch (napr.), miesto toho aby sa naozaj
>>>> pozrel
>>>> cez TLB a do RAM.... (cache to urcite nebude, pretoze msim ziadnu
>>>> nesimuluje,
>>>> afaik :-D)
>>>>
>>>> Mohlo by pomoct nastavit ten pointer do pamati ako volatile, alebo medzi
>>>> zapis
>>>> a citanie pridat nejaku pointerovu aritmetiku (ptr+=1, -=1) - cim by sa
>>>> mohla "vypnut" optimalizacia...
>>>>
>>>> (Ta optimalizacia ma prave take zaujimave efekty, ze aj ked zapises cislo
>>>> na
>>>> uplne nahodnu adresu (napr. neexistujucu pamat v KSEG0), tak ked precitas
>>>> spat, tak tam ta hodnota bude - aj ked sa nikde do ram nezapisala...)
>>>>
>>>> Andrej
>>>>
>>>>
>>>> On Wednesday 05 December 2007 01:40:08 Martin Choma wrote:
>>>>
>>>>> 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
>>>>>
>>>>> _______________________________________________
>>>>> OSy mailing list
>>>>> OSy at dsrg.mff.cuni.cz
>>>>> https://dsrg.mff.cuni.cz/mailman/listinfo/osy
>>>>>
>>>>
>>>> _______________________________________________
>>>> OSy mailing list
>>>> OSy at dsrg.mff.cuni.cz
>>>> https://dsrg.mff.cuni.cz/mailman/listinfo/osy
>>>>
>>>>
>>
>>
>>
>> _______________________________________________
>> OSy mailing list
>> OSy at dsrg.mff.cuni.cz
>> https://dsrg.mff.cuni.cz/mailman/listinfo/osy
>>
>
>
> _______________________________________________
> OSy mailing list
> OSy at dsrg.mff.cuni.cz
> https://dsrg.mff.cuni.cz/mailman/listinfo/osy
>






More information about the NSWI004 mailing list