Jump to content

Виртуальное адресное пространство

(Перенаправлено с виртуального адреса )

В вычислительной технике виртуальное адресное пространство ( VAS ) или адресное пространство — это набор диапазонов виртуальных адресов, которые операционная система предоставляет процессу. [1] Диапазон виртуальных адресов обычно начинается с младшего адреса и может расширяться до самого высокого адреса, разрешенного архитектурой набора команд компьютера и поддерживаемого операционной системы реализацией размера указателя , который может составлять 4 байта для 32-битной версии или 8 байтов для 64-битные версии ОС. Это дает несколько преимуществ, одним из которых является безопасность за счет изоляции процессов при условии, что каждому процессу выделено отдельное адресное пространство .

В следующем описании используемая терминология будет характерна для операционной системы Windows NT , но концепции применимы и к другим операционным системам с виртуальной памятью.

При запуске нового приложения в 32-битной ОС процесс имеет VAS размером 4 ГиБ : каждый из адресов памяти (от 0 до 2 32 − 1) в этом пространстве может иметь значение один байт. Изначально ни один из них не имеет значений («-» означает отсутствие значения). Использование или установка значений в таком VAS приведет к исключению памяти .

           0                                           4 GiBVAS        |----------------------------------------------|

Затем исполняемый файл приложения отображается в VAS. Адреса в процессе VAS сопоставляются с байтами в exe-файле. ОС управляет сопоставлением:

           0                                           4 GiBVAS        |---vvv----------------------------------------|mapping        |||file bytes     app

V — это значения байтов сопоставленного файла . Затем DLL (включая как пользовательские библиотеки, так и системные, такие как сопоставляются необходимые файлы kernel32.dll и user32.dll):

           0                                           4 GiBVAS        |---vvv--------vvvvvv---vvvv-------------------|mapping        |||        ||||||   ||||file bytes     app        kernel   user

Затем процесс начинает выполнять байты в EXE-файле. Однако единственный способ, которым процесс может использовать или устанавливать значения «-» в своем VAS, — это попросить ОС сопоставить их с байтами из файла. Распространенный способ использования памяти VAS таким образом — сопоставить ее с файлом подкачки . Файл подкачки представляет собой один файл, но в VAS можно сопоставить несколько отдельных наборов смежных байтов:

           0                                           4 GiBVAS        |---vvv--------vvvvvv---vvvv----vv---v----vvv--|mapping        |||        ||||||   ||||    ||   |    |||file bytes     app        kernel   user   system_page_file

И разные части файла подкачки могут отображаться в VAS разных процессов:

           0                                           4 GiBVAS 1      |---vvvv-------vvvvvv---vvvv----vv---v----vvv--|mapping        ||||       ||||||   ||||    ||   |    |||file bytes     app1 app2  kernel   user   system_page_filemapping             ||||  ||||||   ||||       ||   |VAS 2      |--------vvvv--vvvvvv---vvvv-------vv---v------|

В 32-разрядной версии Microsoft Windows по умолчанию только 2 ГиБ . процессам для собственного использования предоставляется [2] Остальные 2 ГиБ используются операционной системой. В более поздних 32-разрядных выпусках Microsoft Windows можно расширить виртуальное адресное пространство пользовательского режима до 3 ГиБ , в то время как для виртуального адресного пространства режима ядра остается только 1 ГиБ , пометив программы как IMAGE_FILE_LARGE_ADDRESS_AWARE и включив параметр /3GB переключитесь в файле boot.ini. [3] [4]

В 64-разрядной версии Microsoft Windows в процессе выполнения исполняемого файла, связанного с /LARGEADDRESSAWARE:NOоперационная система искусственно ограничивает часть виртуального адресного пространства процесса, относящуюся к пользовательскому режиму, до 2 ГиБ. Это относится как к 32-, так и к 64-битным исполняемым файлам. [5] [6] Процессы, выполняющие исполняемые файлы, связанные с /LARGEADDRESSAWARE:YES параметр, который используется по умолчанию для 64-разрядной версии Visual Studio 2010 и более поздних версий, [7] иметь доступ к более чем 2 ГиБ виртуального адресного пространства: до 4 ГиБ для 32-битных исполняемых файлов, до 8 ТиБ для 64-битных исполняемых файлов в Windows до Windows 8 и до 128 ТиБ для 64-битных исполняемых файлов в Windows 8.1 и позже. [4] [8]

Выделение памяти с помощью C языка malloc устанавливаетфайл подкачки в качестве резервного хранилища для любого нового виртуального адресного пространства. Однако процесс также может явно отображать байты файла.

Для x86 процессоров 32-разрядная версия Linux позволяет разделить диапазоны адресов пользователя и ядра по-разному: пользователь/ядро 3G/1G (по умолчанию), пользователь/ядро 1G/3G или пользователь/ядро 2G/2G . [9]

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ «Что такое адресное пространство?» . ИБМ . Проверено 5 мая 2024 г.
  2. ^ «Виртуальное адресное пространство» . MSDN . Майкрософт.
  3. ^ «Структура LOADED_IMAGE» . MSDN . Майкрософт.
  4. ^ Перейти обратно: а б «4-гигабайтная настройка: BCDEdit и Boot.ini» . MSDN . Майкрософт.
  5. ^ «/LARGEADDRESSAWARE (обработка больших адресов)» . MSDN . Майкрософт.
  6. ^ «Виртуальное адресное пространство» . MSDN . Майкрософт.
  7. ^ «/LARGEADDRESSAWARE (обработка больших адресов)» . MSDN . Майкрософт.
  8. ^ «/LARGEADDRESSAWARE (обработка больших адресов)» . MSDN . Майкрософт.
  9. ^ «Ядро Linux — x86: разделение памяти» .
  • « Расширенные возможности Windows », Джеффри Рихтер, Microsoft Press
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 12a9602adc9790fdf4e4095e38c88c25__1718030520
URL1:https://arc.ask3.ru/arc/aa/12/25/12a9602adc9790fdf4e4095e38c88c25.html
Заголовок, (Title) документа по адресу, URL1:
Virtual address space - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)