L'hardware di allocazione della memoria è gestito o il sistema operativo?

0

Attualmente sto lavorando su un progetto bare metal con un processore di braccio usando il compilatore di bracci GCC. Se chiamo malloc, la memoria allocata è tracciata nella MMU? Per qualche ragione avevo immaginato che un sistema operativo in genere gestisse questo, ma dal momento che la chiamata a compila malloc e vedo che è definita in libc / usr / include ora sto pensando che l'OS implementa un altro livello di gestione della memoria in cima alla gestione dell'hardware .
Credo di avere due domande: Con il pieno os (posix o windows) c'è l'hardware che tiene traccia della memoria allocata o è l'os? Con il compilatore di arm è l'hardware che tiene traccia della memoria allocata o è l'os?

    
posta Matthew Huber 24.11.2018 - 05:05
fonte

1 risposta

3

L'allocazione della memoria di malloc è principalmente una funzione software. In genere i blocchi allocati dal software sono troppo piccoli da gestire per la MMU. Ad esempio, un MMU gestisce in genere pagine di dimensioni 4k o superiori. Infatti, più grandi sono le pagine, più efficiente può essere l'hardware. L'hardware gestisce anche le pagine sui bordi allineati alle pagine (spesso come 4k), quindi le dimensioni e gli allineamenti delle pagine non sempre corrispondono alle dimensioni di allocazione del software e ai requisiti di allineamento.

TL; DR, l'allocazione della memoria del software è in qualche modo indipendente dalla gestione della pagina hardware, poiché il software scolpisce (e rilascia) sia gli oggetti piccoli che gli array più grandi fuori dallo spazio di indirizzi disponibile, mentre l'hardware gestisce set di lavoro in termini di pagine residenti.

    
risposta data 24.11.2018 - 05:42
fonte

Leggi altre domande sui tag