Domanda

Nota: Sto cercando di studiare una panoramica di alto livello di allocazione della memoria virtuale

è l'indirizzo virtuale spaccatura spazio di un intero processo in pagine, di una dimensione particolare:

  .text
  .bss
  .data

Fa questo includono anche lo spazio di heap e stack -? O si tratta sempre non paginabile

È stato utile?

Soluzione

Per prima cosa nota che "pagine" sono semplicemente le regioni di uno spazio di indirizzi. Una regione che è "non-paginabile" (con il quale suppongo che voi significa che non può essere scambiato su disco) è ancora logicamente diviso in pagine, ma il sistema operativo potrebbe attuare una politica diversa su quelle pagine.

Il formato più comune pagina è di 4096 byte. Molti usano supporto architetture di più dimensioni di pagina allo stesso tempo (ad esempio pagine 4K e pagine 1MB). Tuttavia, i sistemi operativi, spesso bastone con una sola dimensione della pagina, dal momento che nella maggior parte dei casi, i costi di gestione di più formati di pagina sono molto più elevati rispetto ai benefici che questo offre. Le eccezioni esistono, ma non credo che avete bisogno di preoccuparsi di loro.

Ogni pagina virtuale è determinate autorizzazioni collegato ad esso, come se è leggibile, scrivibile, eseguibile (varia a seconda del supporto di hardware). Il sistema operativo può usare questo per aiutare a far rispettare la sicurezza, la coerenza della cache (per la memoria condivisa), e le pagine sostituendo di memoria fisica.

Il regioni .text, .bss e .data non devono essere noti per il sistema operativo (anche se la maggior parte dei sistemi operativi di informazione per sapere, per motivi di sicurezza e di prestazioni).

Il sistema operativo non può effettivamente allocare memoria per una pagina di stack / heap fino alla prima volta che si accede quella pagina. Il sistema operativo può fornire chiamate di sistema per richiedere più pagine di spazio heap / stack. Alcuni sistemi operativi forniscono memoria condivisa o la funzionalità libreria condivisa che porta a più regioni che appaiono nello spazio degli indirizzi. Dipende dal sistema operativo.

Altri suggerimenti

In genere, su un sistema operativo di paging uno processi intero spazio indirizzo è suddiviso in pagine. Ciascun indirizzo lineare contiene due componenti -. Un numero di pagina nei bit più significativi, e un offset all'interno della pagina nei bit meno significativi

Ad esempio, con indirizzi lineari 32 bit e pagine 4KB, superiori 20 bit sono un numero di pagina ed i 12 bit inferiori sono un offset di pagina.

.data è dove le variabili globali inizializzati del programma laici. .bss contiene le variabili globali senza un inizializzatore esplicito (con un valore di default pari a 0). Mucchio e pila sono zone di memoria separate da questi e da ogni altro. Tutta la memoria visto da un processo è tutta la memoria virtuale diviso in pagine. Un processo non vede altro che la memoria virtuale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top