GNU/Linux >> Linux Esercitazione >  >> Linux

Spazio degli indirizzi del processo a 32 bit su Linux a 64 bit

Citando la fonte del kernel:"I puntatori del kernel hanno informazioni ridondanti, quindi possiamo utilizzare uno schema in cui possiamo restituire un codice di errore o un [...] puntatore con lo stesso valore restituito.

I valori -1..-4095 (mappatura a 0xfffff000–0xffffffff in modalità a 32 bit) sono riservati per i valori errno a livello di kernel. Gli altri 4KB da 0xffffe000–0xffffeffff sono tenuti liberi per la vsyscall vdso magic page, ma poiché la pagina vdso è rilocabile da molte lune, quest'area rimane potenzialmente disabitata, vale a dire la [stack] voce in /proc/*/maps termina sempre a 0xffffdfff indipendentemente dal fatto che [vdso] sia mappato a 0xffffe000 o altrove.


Parte della memoria del kernel può trovarsi all'interno dello spazio degli indirizzi dello spazio utente dell'applicazione ed essere in qualche modo mappata con PROT_NONE . Verrebbe quindi utilizzato uno spazio di indirizzi, ma senza essere accessibile dal programma (quindi non è possibile danneggiarli).


Linux
  1. Cos'è meglio int 0x80 o syscall nel codice a 32 bit su Linux?

  2. Perché il kernel è mappato allo stesso spazio di indirizzi dei processi?

  3. Trovare librerie a 32 bit su Linux a 64 bit

  4. Come determinare se un file binario Linux è a 32 o 64 bit?

  5. Esegui l'app a 64 bit sul sistema Ubuntu a 32 bit

Linux è un sistema operativo o un kernel?

Kernel Linux vs. Kernel Mac

Come trovare l'indirizzo IP in Linux

Linux:come viene suddiviso uno spazio di indirizzi virtuali di processo a 64 bit in Linux?

Come sapere se la versione a 32 bit o 64 bit di Linux

Come verificare il sistema Linux è a 32 o 64 bit?