Principio di gestione della memoria utilizzato da Linux


Risposte:


7

Linux usa entrambi. Utilizza la segmentazione per mappare tutto lo spazio degli indirizzi disponibile, offrendo al contempo diversi diritti di accesso: sostanzialmente un kernel e una vista dello spazio utente. È possibile grep il codice sorgente di Linux per KERNEL_DS (segmento di dati del kernel) per alcuni esempi.

Il paging viene quindi utilizzato per l'implementazione della memoria virtuale (Grep per "struct gdt_page" nel kernel, per un punto di partenza)


6

La gestione della memoria in Linux funziona esclusivamente tramite paging.

Linux supporta pagine "piccole" (di solito 4kB) e "grandi" (2M). Il primo "funziona" senza che tu sappia o faccia qualcosa di speciale e il secondo necessita di un trattamento speciale (deve essere prenotato al momento dell'avvio e mappato tramite un dispositivo speciale).

L'unico contesto in cui appare "segmento" sotto Linux è la syscall brk () che viene utilizzata per aumentare il segmento di dati di un processo (normalmente non ti servirà, malloc lo fa senza che te ne occupi). Ma in entrambi i casi, la memoria arriva in pagine ed è gestita in pagine e non ha nulla a che fare con la segmentazione x86.


La segmentazione X86 era obsoleta quando uscì l'i386. Linux non ha mai usato la segmentazione per la gestione della memoria. Alcuni derivati ​​come ELKS e (possibilmente) uClinux potrebbero.
LawrenceC,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.