2013-03-18 17 views
5

Ho le seguenti domande riguardanti la memoria di Linux:Domande su Tipi di memoria di Linux

  1. So che la memoria attiva è la porzione di memoria che viene più frequentemente accede. Ma qualcuno può spiegarmi come Linux consideri un luogo di memoria da utilizzare per la memoria attiva o la memoria inattiva.

  2. Di quali componenti è composta la memoria attiva? La cache del disco/file è considerata parte della memoria attiva.

  3. Qual è la differenza tra Buffers e Cached memoria?

risposta

3

cerco di rispondere alle vostre domande:

(1) Fondamentalmente parlando, i vostri pensieri siano corretti. Ma l'implementazione della cache di pagina è complicata nel kernel di Linux. Il kernel di Linux utilizza l'algoritmo LRU (utilizzato meno di recente) per gestire gli elenchi della cache di pagine. Potrebbero esserci diverse zone di memoria in un sistema Linux, ciascuna zona mantiene diversi elenchi LRU, come LRU_INACTIVE_ANON, LRU_ACTIVE_ANON (questi due elenchi sono per cache di pagine anonime), LRU_INACTIVE_FILE, LRU_ACTIVE_FILE (questi due elenchi sono per le cache delle pagine di file), LRU_UNEVICTABLE. Questi elenchi vengono mantenuti utilizzando l'algoritmo LRU (aggiunto alla coda, rimuovi dalla testa). E le pagine sono transitate tra la lista attiva e la lista inattiva in base alla frequenza di accesso. Le pagine vengono aggiunte alla coda dell'elenco attivo solo quando si accede alla pagina e risiedono nell'elenco inattivo. E se la lista attiva diventa troppo grande, le pagine che all'inizio dell'elenco attivo verranno spostate nella coda dell'elenco inattivo. La richiesta di recupero della pagina si verifica nell'elenco inattivo, a partire dall'inizio dell'elenco inattivo.

(2) I file regolari di lettura/scrittura, accesso ai file di accesso blocco e file mappati in memoria possono tutti attivare il kernel di Linux per generare le cache delle pagine, attive o inattive. Anche il malloc utilizzato nel processo spazio utente e nello stack spazio utente può attivare Linux Kernel per generare le cache delle pagine.

(3) Forse ho frainteso la tua domanda, suppongo tu intenda la differenza tra la cache del buffer e la cache della pagina: la versione precedente del kernel utilizza sia la cache del buffer che quella della pagina. La cache di pagina serve per accedere ai file (come normali accessi ai file, file della mappa della memoria, accesso ai file di dispositivi bloccati) e la cache del buffer è per gli accessi fisici dei blocchi del disco (normalmente la dimensione del blocco del disco fisico è inferiore a una pagina, quindi diversi i blocchi del disco fisico possono essere compilati in un'unica pagina). Sebbene il nuovo kernel versione usi ancora il concetto di cache buffer, il nuovo kernel implementa la cache buffer basata sulla cache di pagina.

O intendi la differenza tra il buffer di memoria e la cache della cpu, in tal caso, il buffer di memoria serve a velocizzare gli accessi al disco/alle periferiche e la cache della cpu serve ad accelerare gli accessi alla memoria.

+0

Cosa intendi? "Anche il malloc utilizzato nel processo spazio utente e nello stack spazio utente può attivare Linux Kernel per generare le cache delle pagine." –

Problemi correlati