GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:cosa sono la memoria alta e la memoria insufficiente su Linux?

Sono interessato alla differenza tra Highmem e Lowmem:

  1. Perché c'è una tale differenziazione?
  2. Cosa guadagniamo così facendo?
  3. Quali caratteristiche ha ciascuno?

Risposta accettata:

Su un'architettura a 32 bit, l'intervallo di spazio degli indirizzi per l'indirizzamento della RAM è:

0x00000000 - 0xffffffff

o 4'294'967'295 (4 GB).

Il kernel Linux divide questo 3/1 (potrebbe anche essere 2/2 o 1/3 ) rispettivamente nello spazio utente (memoria alta) e nello spazio kernel (memoria insufficiente).

L'intervallo di spazio utente:

0x00000000 - 0xbfffffff

Ogni processo utente appena generato ottiene un indirizzo (intervallo) all'interno di quest'area. I processi utente sono generalmente non attendibili e pertanto è vietato accedere allo spazio del kernel. Inoltre, sono considerati non urgenti, come regola generale, il kernel cerca di rinviare l'allocazione della memoria a quei processi.

L'intervallo di spazio del kernel:

0xc0000000 - 0xffffffff

Un processo del kernel ottiene il suo indirizzo (intervallo) qui. Il kernel può accedere direttamente a questo 1 GB di indirizzi (beh, non a 1 GB completo, ci sono 128 MB riservati per l'accesso alla memoria elevata).

I processi generati nello spazio del kernel sono affidabili, urgenti e considerati privi di errori, la richiesta di memoria viene elaborata istantaneamente.

Ogni processo del kernel può anche accedere all'intervallo dello spazio utente, se lo desidera. E per ottenere ciò, il kernel mappa un indirizzo dallo spazio utente (la memoria alta) al suo spazio del kernel (la memoria bassa), i 128 MB sopra menzionati sono riservati per questo.

Se la divisione è 3/1, 2/2 o 1/3 è controllata da CONFIG_VMSPLIT_... opzione; probabilmente puoi controllare in /boot/config* per vedere quale opzione è stata selezionata per il tuo kernel.


Linux
  1. Linux:differenza tra spazio utente e spazio kernel?

  2. Linux – I diversi kernel Linux/unix sono intercambiabili?

  3. In quali linguaggi sono scritti Windows, Mac OS X e Linux?

  4. Quali caratteri sono vietati nei nomi delle directory di Windows e Linux?

  5. Debug live del kernel Linux, come si fa e quali strumenti vengono utilizzati?

Qual ​​è la differenza tra i kernel macOS e Linux

Linux Kernel 5.9:Novità e come eseguire l'aggiornamento

Cosa sono i log di Linux e dove trovarli

Kernel Linux e le sue funzioni

Cosa fare in caso di panico del kernel Linux

Qual è la differenza tra spazio utente e spazio kernel?