Память процесса. Виртуальное адресное пространство

Содержание

Слайд 2

Память программы это массив с последовательной нумерацией ячеек. Индекс байта в этом

Память программы это массив с последовательной нумерацией ячеек. Индекс байта в этом
огромном массиве и называется его адресом, а весь массив целиком - памятью программы.
Память программы не тождественна объему оперативной памяти. Программа работает исключительно с так называемой "виртуальной памятью". Виртуальная память - это имитация реальной памяти. Она позволяет каждой программе: считать, что:
1) установлено максимальное теоретически возможное количество оперативной памяти;
считать, что она является единственной программой, запущенной на машине.
Для 32 бит систем 2^32 = 4 Гб
Для 64 бит систем 2^64 = 16 Эб

Слайд 3

4 Гб или 16 Эб есть у каждой программы. Т.е. каждой программе

4 Гб или 16 Эб есть у каждой программы. Т.е. каждой программе
отводится своё личное закрытое адресное пространство. Такая изолированность означает, что программа А в своем адресном пространстве может хранить какую-то запись данных по адресу $12345678, и одновременно у программы В по тому же адресу $12345678 (но уже в его адресном пространстве) может находиться совершенно иная запись данных.
Если программы выделяют в их адресных пространствах больше памяти, чем есть в системе физической памяти, то часть памяти из ОЗУ переносится на диск ("винчестер") - в т.н. файл подкачки (его ещё называют страничным файлом, page file, SWAP-файлом или "свопом"). Когда программа обращается к своим данным, которые были выгружены на диск, то операционная система автоматически загрузит данные из файла подкачки в ОЗУ. И всё это происходит под капотом - т.е. совершенно незаметно для программы. С точки зрения программы, ей кажется, что она работает с 4 Гб или 16 Эб RAM.

Слайд 4

Адресное пространство, хотя действительно однородно и непрерывно более чем на 99%, но

Адресное пространство, хотя действительно однородно и непрерывно более чем на 99%, но
в нём есть несколько специальных областей недоступных пользовательским процессам.
Гранулярность выделения памяти равна именно 64 Кб
В виртуальном адресном пространстве каждой программы сосуществуют сама программа и операционная система. Та часть, где работает ваша программа (и о котором мы говорили всё это время выше), называется разделом для кода и данных пользовательского режима (user mode). Та часть, где работает операционная система, называется разделом для кода и данных режима ядра (kernel mode). Обе эти части находятся в едином адресном пространстве программы.

Слайд 5

То есть, код и данные, которые в данный момент обрабатываются/исполняются, физически располагаются

То есть, код и данные, которые в данный момент обрабатываются/исполняются, физически располагаются
в ОЗУ. Довольно важный момент для осознания того, как же работает ОС с памятью. Сопоставлением (отображением) виртуальных адресов на физические адреса ОЗУ или файла подкачки занимается так называемый "диспетчер виртуальной памяти"
Диспетчер виртуальной памяти - код уровня ядра, который служит для организации подсистемы виртуальной памяти, создания таблицы адресов для процессов, организации общего доступа к памяти, осуществления защиты на уровне страниц, поддержки возможность отображения файлов на память, распределения физической памяти между процессами, организации выгрузки/загрузки страниц между физической памятью и файлом подкачки, обеспечения всех процессом достаточным для функционирования объемом физической памяти.

Слайд 6

Виртуальная память делится на блоки одинакового размера – виртуальные страницы. В Windows

Виртуальная память делится на блоки одинакового размера – виртуальные страницы. В Windows
страницы бывают большие (x86 – 4 МБ, x64 – 2 МБ) и малые (4 КБ). Физическая память (ОЗУ) также делится на страницы точно такого же размера, как и виртуальная память. Общее количество малых виртуальных страниц процесса в 32 разрядных системах равно 1 048 576 (4 ГБ / 4 КБ = 1 048 576).

Слайд 8

Синхронизация между виртуальными и физическими страницами памяти поддерживается аппаратно на уровне процессора,

Синхронизация между виртуальными и физическими страницами памяти поддерживается аппаратно на уровне процессора,
и называется трансляцией адресов. Данная технология "на лету" преобразует виртуальный адрес в физический и обратно. Отсюда следует немаловажный вывод:
Некоторые механизмы, которые использует диспетчер виртуальной памяти в операционной системе, имеют аппаратную поддержку на уровне процессора.

Слайд 9

Основные концепции виртуальной памяти таковы:
Память, доступная программе, никак не связана с физической

Основные концепции виртуальной памяти таковы: Память, доступная программе, никак не связана с
памятью.
Каждая программа работает в своей виртуальном адресном пространстве. Размер этого пространства может быть больше размера установленной в машине оперативной памяти.
Адресное пространство процесса (программы) изолировано от других подобных адресных пространств.

Слайд 13

В 32 разрядных Windows пользовательском ВАП располагаются исполняемый образ процесса, динамически подключаемые

В 32 разрядных Windows пользовательском ВАП располагаются исполняемый образ процесса, динамически подключаемые
библиотеки (DLL, dynamic-link library), куча процесса и стеки потоков.
При запуске программы создается, при этом в память загружаются код и данные программы (исполняемый образ, executable image), а также необходимые программе динамически подключаемые библиотеки (DLL). Формируется куча (heap) – область, в которой процесс может выделять память динамическим структурам данных (т. е. структурам, размер которых заранее неизвестен, а определяется в ходе выполнения программы). По умолчанию размер кучи составляет 1 МБ, но при компиляции приложения или в ходе выполнения процесса может быть изменен. Кроме того, каждому потоку предоставляется стек (stack) для хранения локальных переменных и параметров функций, также по умолчанию размером 1 МБ.

Слайд 15

Physical Address Extension (PAE) — режим работы встроенного блока управления памятью (PAE) — режим

Physical Address Extension (PAE) — режим работы встроенного блока управления памятью (PAE)
работы встроенного блока управления памятью x86-совместимых процессоров, в котором используются 64-битные элементы таблиц страниц (из которых для адресации используются только 36 бит), c помощью которых процессор может адресовать 64 ГБ физической памяти (вместо 4 ГБ, адресуемых при использовании 32-разрядных таблиц), хотя каждая задача (программа) всё равно может адресовать максимум до 4 ГБ виртуальной памяти

Слайд 16

В 32-битных клиентах Microsoft Windows (начиная с Windows XP SP2) использование 36-битного

В 32-битных клиентах Microsoft Windows (начиная с Windows XP SP2) использование 36-битного
PAE включается ключом /PAE в файле boot.iniВ 32-битных клиентах Microsoft Windows (начиная с Windows XP SP2) использование 36-битного PAE включается ключом /PAE в файле boot.ini, однако, максимальный физический адрес доступного операционной системе ОЗУ искусственно ограничен на уровне ядра по маркетинговым соображениям[8]. В Windows XP это ограничение составляет 4 ГБ, 32-разрядный Windows Server 2003 Enterprise Edition поддерживает до 64 ГБ. Существуют программы, позволяющие обойти ограничение на доступную память[9], но их использование является нарушением лицензионного соглашения Microsoft[10]. В случае 4 ГБ ОЗУ, память можно использовать в Windows XP почти полностью, переместив системные области адресного пространства выше 4 ГБ, такую функцию поддерживают некоторые версии BIOS. Тем не менее, согласно заявлениям Microsoft, введение 4 ГБ ограничения адресного пространства связано с отсутствующей или плохой поддержкой 36-битного адресного пространства некоторыми драйверами устройств[11].
Одним из пунктов минимальных системных требований Windows 8 является обязательная поддержка процессором PAE.
Имя файла: Память-процесса.-Виртуальное-адресное-пространство.pptx
Количество просмотров: 43
Количество скачиваний: 0