Virtuální adresní prostor - Virtual address space
Při práci na počítači je virtuální adresní prostor ( VAS ) nebo adresní prostor množinou rozsahů virtuálních adres, které operační systém zpřístupňuje procesu. Rozsah virtuálních adres obvykle začíná na nízké adrese a může se rozšířit na nejvyšší adresu povolenou architekturou sady instrukcí počítače a podporovanou implementací velikosti ukazatele operačního systému , která může být 4 bajty pro 32bitové nebo 8 bajtů pro 64bitové verze OS. To poskytuje několik výhod, z nichž jednou je zabezpečení prostřednictvím izolace procesů za předpokladu, že každému procesu je přidělen samostatný adresní prostor .
Příklad
- V následujícím popisu bude použitá terminologie konkrétní pro operační systém Windows NT , ale koncepty jsou použitelné pro jiné operační systémy virtuální paměti.
Když je spuštěna nová aplikace na 32bitovém operačním systému, má proces 4 GiB VAS: každá z adres paměti (od 0 do 2 32-1 ) v tomto prostoru může mít jako hodnotu jeden bajt. Zpočátku žádný z nich nemá hodnoty ('-' nepředstavuje žádnou hodnotu). Použití nebo nastavení hodnot v takovém VAS by způsobilo výjimku paměti .
0 4 GiB VAS |----------------------------------------------|
Potom je spustitelný soubor aplikace mapován do systému VAS. Adresy v procesu VAS jsou mapovány na bajty v souboru exe. Mapování spravuje OS:
0 4 GiB VAS |---vvv----------------------------------------| mapping ||| file bytes app
V jsou hodnoty z bajtů v mapovaném souboru . Poté jsou namapovány požadované soubory DLL (to zahrnuje vlastní knihovny i systémové, například kernel32.dll a user32.dll ):
0 4 GiB VAS |---vvv--------vvvvvv---vvvv-------------------| mapping ||| |||||| |||| file bytes app kernel user
Proces poté začne spouštět bajty v souboru exe. Jediným způsobem, jak může proces ve VAS použít nebo nastavit hodnoty „-“, je požádat OS, aby je namapoval na bajty ze souboru. Běžným způsobem, jak používat paměť VAS tímto způsobem, je namapovat ji na soubor stránky . Soubor stránky je jeden soubor, ale do VAS lze namapovat více různých sad souvislých bajtů:
0 4 GiB VAS |---vvv--------vvvvvv---vvvv----vv---v----vvv--| mapping ||| |||||| |||| || | ||| file bytes app kernel user system_page_file
A různé části souboru stránky lze mapovat do VAS různých procesů:
0 4 GiB VAS 1 |---vvvv-------vvvvvv---vvvv----vv---v----vvv--| mapping |||| |||||| |||| || | ||| file bytes app1 app2 kernel user system_page_file mapping |||| |||||| |||| || | VAS 2 |--------vvvv--vvvvvv---vvvv-------vv---v------|
U 32bitového systému Microsoft Windows jsou ve výchozím nastavení k dispozici procesům pro jejich vlastní použití pouze 2 GiB . Další 2 GiB používá operační systém. V novějších 32bitových edicích systému Microsoft Windows je možné rozšířit virtuální adresní prostor v uživatelském režimu na 3 GiB, zatímco pro virtuální adresní prostor v režimu jádra zbývá pouze 1 GiB označením programů jako IMAGE_FILE_LARGE_ADDRESS_AWARE a povolením přepínače /3 GB v soubor boot.ini.
V 64bitovém systému Microsoft Windows v procesu se spustitelným souborem, který byl propojen s /LARGEADDRESSAWARE: NO, operační systém uměle omezuje část uživatelského režimu virtuálního adresového prostoru procesu na 2 GiB. To platí pro 32 i 64bitové spustitelné soubory. Procesy se spustitelnými soubory, které byly propojeny s volbou /LARGEADDRESSAWARE: YES, která je výchozí pro 64bitové Visual Studio 2010 a novější, mají přístup k více než 2 GiB prostoru virtuálních adres: až 4 GiB pro 32bitové spustitelné soubory, až 8 TiB pro 64bitové spustitelné soubory ve Windows prostřednictvím Windows 8 a až 128 TiB pro 64bitové spustitelné soubory ve Windows 8.1 a novějších.
Alokace paměti prostřednictvím C 's malloc vytvoří soubor stránky jako záložní úložiště pro jakýkoli nový virtuální adresní prostor. Proces však může také explicitně mapovat bajty souborů.
Linux
Pro x86 CPU, Linux 32-bit umožňuje rozdělení rozsahy uživatele a adresní jádra různými způsoby: 3G / 1G uživatel / kernel (default), 1G / 3G uživatel / kernel nebo 2G / 2G uživatel / kernel .
Viz také
Poznámky
Reference
- „ Advanced Windows “ od Jeffreyho Richtera , Microsoft Press