GNU/Linux >> Znalost Linux >  >> Linux

Adresový prostor 32bitového procesu v 64bitovém linuxu

S odkazem na zdroj jádra:“Ukazatele jádra mají nadbytečné informace, takže můžeme použít schéma, kde můžeme vrátit buď kód chyby nebo [...] ukazatel se stejnou návratovou hodnotou.

Hodnoty -1..-4095 (mapování na 0xfffff000–0xffffffff v 32bitovém režimu) jsou vyhrazeny pro hodnoty errno na úrovni jádra. Další 4KB z 0xffffe000–0xffffefff jsou drženy zdarma pro magickou stránku vsyscall vdso, ale protože stránka vdso je po mnoha měsících přemístitelná, zůstává tato oblast potenciálně neobsazená, to znamená [stack] záznam v /proc/*/maps končí na 0xffffdfff vždy bez ohledu na to, zda je [vdso] mapováno na 0xffffe000 nebo jinde.


Některá paměť jádra může být uvnitř adresního prostoru uživatelského prostoru aplikace a může být mmapována pomocí PROT_NONE . Pak by byl použit určitý adresní prostor, ale bez přístupu programu (takže není možné žádné poškození).


Linux
  1. Linux – Proč existuje zásada jádra Linuxu, která nikdy nenaruší uživatelský prostor?

  2. Linux – Jsou různá jádra Linux/unix zaměnitelná?

  3. Spusťte 64bitovou aplikaci na 32bitovém systému Ubuntu

  1. Jak mmapovat vyrovnávací paměť linuxového jádra do uživatelského prostoru?

  2. Co je lepší int 0x80 nebo syscall v 32bitovém kódu na Linuxu?

  3. Proč je jádro mapováno do stejného adresního prostoru jako procesy?

  1. Hledání 32bitových knihoven v 64bitovém Linuxu

  2. Jak zjistit, zda je linuxový binární soubor 32bitový nebo 64bitový?

  3. Operační režim 32bitového, 64bitového CPU v systému Linux