Sto lavorando su un semplice stack machine scritto in C, principalmente per scopi di apprendimento. Dopo aver usato malloc/free
per le mie operazioni di memoria, ho pensato che sarebbe stata una buona idea leggere un codice specifico per l'allocazione della memoria dalle moderne macchine virtuali.In che modo le moderne macchine virtuali gestiscono l'allocazione della memoria?
Ho scaricato il codice sorgente Lua e ho iniziato a leggerlo. Dopo un po 'mi sono reso conto che ci sono molte cose macro coinvolte e non sono riuscito a trovare il codice in cui è stata eseguita l'allocazione della memoria reale (ad esempio chiamata malloc
).
find . -exec grep -i "malloc" '{}' \; -print
E 'stampata solo alcune macro Lua che hanno malloc
parola nel loro nome. La Lua VM (e il linguaggio di programmazione) non usa affatto malloc
!
Quindi questo mi porta alla domanda: in che modo le moderne macchine virtuali gestiscono l'allocazione della memoria? In che modo Lua alloca la memoria dall'heap? Esistono modi per l'allocazione diversi da malloc
? Quali sono i pro/contro di altri metodi?
Mi sto anche interrogando su best practice, schemi di progettazione, ecc. Per lavorare in modo sicuro sulla memoria allocata. Vedo nella fonte di Lua che c'è molto indiretto prima di allocare memoria. Dove posso conoscere questa roba?
Che tipo di VM è interessato? Ci sono macchine virtuali che virtualizzano interi computer, lo sai. Stai chiedendo anche a quelli? –
@AlexeyFrunze, No, sono solo interessato alle macchine virtuali utilizzate per i linguaggi di programmazione. – sinan
OK, il titolo sembra confuso. –