[so2] Mapare low-mem in spatiul kernel (bonus: the cake is a lie)

Octavian Purdila tavi.purdila at gmail.com
Wed May 6 00:01:58 EEST 2015


2015-05-05 23:11 GMT+03:00 Razvan Deaconescu via so2 <so2 at cursuri.cs.pub.ro>:
> Octavian Purdila <tavi.purdila at gmail.com> writes:
>> 2015-05-03 12:57 GMT+03:00 Razvan Deaconescu via so2 <so2 at cursuri.cs.pub.ro>:
>>> Salutare.
>>>
>>> Întrucât am văzut că nu am explicat cum trebuie partea de low-mem și
>>> maparea acesteia, am făcut un modul de kernel de test[1]. Modulul
>>> parcurge spațiul virtual al nucleului în care este mapată zona low-mem
>>> (adică zona din spațiul virtual cuprinsă între PAGE_OFFSET și
>>> high_memory).
>>>
>>> Acolo puteți vedea că zona este mapată, deci tabelele de pagini sunt
>>> completate. Motivul mapării directe a low-mem este pentru cazul în care
>>> nucleul solicită explicit translatări virtual-fizic sau viceversa. Orice
>>> acces implicit al nucleului la spațiul său de adresă va trece prin TLB,
>>> MMU, tabele de pagini; acele accese nu sunt influențate de maparea
>>> directă a low-mem. Maparea directă este utilă pentru translatarea
>>> explicită solicitată în anumite ocazii de kernel; pentru acea
>>> translatare se fac operații aritmetice, nemaifiind nevoie de parcurgerea
>>> tabelei de pagini.
>>>
>>> Partea interesantă (de unde și "the cake is a lie") este că, din test,
>>> rezultă că partea de low-mem nu ocupă 896MB ci, de fapt, 128MB. Avem:
>>> * PAGE_OFFSET: 0xc0000000
>>> * high_memory: 0xc7fe0000
>>>
>>> Output-ul unei rulări este aici[2].
>>>
>>> Diferența: 0x07fe0000, adică puțin sub 128MB. Asta se întâmplă pe
>>> nucleul din mașina virtuală, kernel 3.13. Nu știam că s-a schimbat
>>> această valoare, dar aparent așa este.
>>>
>>> Dacă fac ceva greșit sau dacă am zis ceva greșit, săriți.
>>>
>>> Tavi, tu ce știi de asta?
>>
>> Cred ca masina virtuala este configurata cu 128MB, de unde si
>> rezultatul obinut :)
>
> Da, are sens să fie așa. O să mă mai uit prin codul sursă să văd ce
> config determină asta.
>

Incearca kvm -m 1024 pentru a porni masina virtuala cu 1G.


More information about the so2 mailing list