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

Octavian Purdila tavi.purdila at gmail.com
Tue May 5 21:16:35 EEST 2015


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 :)


More information about the so2 mailing list