Mi manca qualcosa quando si tratta di comprendere la necessità di highmem per gestire più di 1 GB di RAM. Qualcuno potrebbe indicare dove sbaglio? Grazie!Indirizzo virtuale Linux 3/1 diviso
quello che so:
1 GB di memoria virtuale di un processo (regione di memoria alta) è riservato per le operazioni del kernel. Lo spazio utente può utilizzare i restanti 3 GB. Questa è la divisione 3/1.
Le funzioni di memoria virtuale della VM mappano le pagine di memoria virtuale (continua) a pagine fisiche (RAM).
Quello che non so:
Quali operazioni utilizzano la memoria virtuale del kernel? Suppongo che cose come kmalloc (...) nello spazio del kernel usino la memoria virtuale del kernel.
Penso che 4 GB di RAM potrebbero essere utilizzati con questo schema. Non capisco perché il kernel 1 GB di spazio virtuale è il fattore limitante quando si affronta lo spazio fisico. È qui che la mia comprensione si rompe. Si prega di avvisare.
Ho letto questo (http://kerneltrap.org/node/2450), che è fantastico. Ma non affronta la mia domanda a mio piacimento.
"Con 32 bit, è possibile indirizzare 4 GB di memoria, Linux su sistemi a 32 bit è stato, fino a poco tempo fa, limitato a una quantità di memoria sostanzialmente inferiore a quella, a causa del modo in cui imposta l'indirizzo virtuale spazio." -dal LDD, capitolo 13 Suppongo che la mia domanda sia, perché è limitata a una quantità di memoria notevolmente inferiore. – David