Слайд 2Менеджер виртуальной памяти
управление виртуальными адресными пространствами процессов;
разделение памяти между процессами;
защита
![Менеджер виртуальной памяти управление виртуальными адресными пространствами процессов; разделение памяти между процессами;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-1.jpg)
виртуальной памяти одного процесса от других процессов.
Слайд 3Менеджер виртуальной памяти
Менеджер виртуальной памяти (VMM) является составной частью ядра ОС. Приложения
![Менеджер виртуальной памяти Менеджер виртуальной памяти (VMM) является составной частью ядра ОС.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-2.jpg)
не могут получить к нему прямой доступ.
Для управления памятью прикладным программам предоставляются различные интерфейсы (API).
Virtual Memory API – набор функций, позволяющих приложению работать с виртуальным адресным пространством: назначать физические страницы блоку адресов и освобождать их, устанавливать атрибуты защиты.
Memory Mapped File API – набор функций, позволяющий работать с файлами, отображаемыми в память. Новый механизм, предоставляемый Win32 API для работы с файлами и взаимодействия процессов.
Heap Memory API – набор функций, позволяющих работать с динамически распределяемыми областями памяти (кучами).
Local, Global Memory API – набор функций работы с памятью, совместимых с 16-битной Windows. Следует избегать их использования.
CRT Memory API – функции стандартной библиотеки языка “С” периода исполнения (runtime).
Слайд 4Архитектура API управления памятью
![Архитектура API управления памятью](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-3.jpg)
Слайд 5Адресное пространство процесса
Чтобы включить в Windows Server 2003 и Windows 2000
![Адресное пространство процесса Чтобы включить в Windows Server 2003 и Windows 2000](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-4.jpg)
расширенное пользовательское пространство, необходимо указать в файле Boot.ini ключ /3GB.
Программа для адресации 3 Гб должна быть собрана с ключом /LARGEADDRESSAWARE:YES.
Слайд 6Средства защиты памяти
Объектно-ориентированная защита памяти. Каждый раз, когда процесс открывает указатель
![Средства защиты памяти Объектно-ориентированная защита памяти. Каждый раз, когда процесс открывает указатель](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-5.jpg)
на блок адресов, монитор ссылок безопасности проверяет, разрешен ли доступ процесса к данному объекту.
Отдельное адресное пространство для каждого процесса. Аппаратура запрещает процессу доступ к физическим адресам другого процесса.
Два режима работы: режим ядра, в котором процессам разрешен доступ к системным данным, и пользовательский режим, в котором это запрещен.
Страничный механизм защиты. Каждая виртуальная страница имеет набор признаков, который определяет разрешенные типы доступа в пользовательском режиме и в режиме ядра.
Принудительная очистка страниц, освобождаемых процессами.
Слайд 7Расширение физических адресов (PAE)
Расширение физических адресов (Physical Address Extension – РАЕ) –
![Расширение физических адресов (PAE) Расширение физических адресов (Physical Address Extension – РАЕ)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-6.jpg)
это функция процессоров с архитектурой IA32, которая делает возможной адресацию физической памяти объемом свыше 4 ГБ.
PAE – режим работы встроенного блока управления памятью x86-совместимых процессоров, в котором используются 64-битные элементы таблиц страниц (из которых для адресации используются только 36 бит), с помощью которых процессор может адресовать 64 ГБ физической памяти, хотя каждый процесс всё равно может адресовать максимум до 4 ГБ ВП.
Слайд 8Поддержка PAE в различных операционных системах
Microsoft Windows 2000 Advanced Server
Microsoft Windows 2000
![Поддержка PAE в различных операционных системах Microsoft Windows 2000 Advanced Server Microsoft](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-7.jpg)
Datacenter Server
Microsoft Windows Server 2003 Enterprise Edition
Microsoft Windows Server 2003 Datacenter Edition
Linux начиная с версии 2.3.23
FreeBSD поддерживает PAE: в линейке 4.x версий — начиная с 4.9, в линейке 5.x версий – начиная с 5.1, все 6.x и более поздние.
Solaris поддерживает PAE, начиная с версии 7
В Mac OS X режим PAE включён по умолчанию при использовании 32-разрядного ядра.
Слайд 9Реализация PAE в Windows
Чтобы включить PAE, необходимо указать в файле Boot.ini ключ
![Реализация PAE в Windows Чтобы включить PAE, необходимо указать в файле Boot.ini ключ /PAE.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-8.jpg)
/PAE.
Слайд 10Операционные системы
Управление виртуальной памятью в Win32.
Страничное преобразование.
![Операционные системы Управление виртуальной памятью в Win32. Страничное преобразование.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-9.jpg)
Слайд 11Страничное преобразование
Виртуальная память в Windows имеет страничную организацию, принятую во многих современных
![Страничное преобразование Виртуальная память в Windows имеет страничную организацию, принятую во многих](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-10.jpg)
ОС. Процессоры Intel начиная с Pentium Pro позволяют ОС применять одно-, двух- и трехступенчатые схемы. И даже разрешается одновременное использование страниц различного размера.
Каждому процессу назначается свой каталог страниц. Именно поэтому адресное пространство каждого процесса изолировано, что очень хорошо с точки зрения защиты процессов друг от друга.
В прошлом Windows поддерживала только двухступенчатую схему преобразования с фиксированным размером страниц.
Последние версии Windows поддерживают страницы двух размеров, а также реализацию трехступенчатой схемы страничного преобразования для реализации механизма PAE.
Слайд 12Страничное преобразование
32-разрядный виртуальный адрес в ОС Windows разбивается на три части:
Старшие 10
![Страничное преобразование 32-разрядный виртуальный адрес в ОС Windows разбивается на три части:](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-11.jpg)
разрядов адреса определяют номер одного из 1024 элементов в каталоге страниц, адрес которого находится в регистре процессора CR3. Этот элемент содержит физический адрес таблицы страниц.
Следующие 10 разрядов линейного адреса определяют номер элемента таблицы. Элемент, в свою очередь, содержит физический адрес страницы виртуальной памяти.
Размер страницы – 4 Кбайт, и младших 12 разрядов линейного адреса как раз хватает (212 = 4096), чтобы определить точный физический номер адресуемой ячейки памяти внутри этой страницы.
Слайд 13Трансляция виртуального адреса в x86 системах
![Трансляция виртуального адреса в x86 системах](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-12.jpg)
Слайд 14Проецирование страниц по механизму PAE
![Проецирование страниц по механизму PAE](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-13.jpg)
Слайд 15Ассоциативный буфер трансляции
Чтобы ускорить этот процесс современные процессоры используют ассоциативный буфер трансляции
![Ассоциативный буфер трансляции Чтобы ускорить этот процесс современные процессоры используют ассоциативный буфер](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-14.jpg)
(translation look-aside buffer, TLB), для кэширования наиболее частых связей между физической и виртуальной памятью.
TLB кэш имеет большое значение, так как страниц памяти в стандартных 32-разрядных Linux, Unix или Windows серверах очень много.
Кэш TLB представляет собой вектор, ячейки которого можно считывать и сразу сравнивать с целевым значением. В случае TLB вектор содержит сопоставления физических и виртуальных адресов для недавно использовавшихся страниц, а также атрибуты защиты каждой страницы
Если запрашиваемый адрес не находится в кэше, то процессор, перед ответом на запрос, переходит к таблице страниц для поиска соответствия виртуального адреса физическому.
TLB должен также предусматривать способы организации записей в кэш и принятия решения о том, какая из старых записей должна быть удалена при внесении в кэш новой записи.
Слайд 17Пример использования TLB
Процессор аппаратно способен одновременно опрашивать все записи TLB для определения
![Пример использования TLB Процессор аппаратно способен одновременно опрашивать все записи TLB для](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-16.jpg)
того, какая из них соответствует заданному номеру страницы.
Такой подход известен как ассоциативное отображение (associative mapping).
Слайд 18Поддержка больших страниц
Начиная с версии Windows Server 2008 включена поддержка сверхбольших страниц
![Поддержка больших страниц Начиная с версии Windows Server 2008 включена поддержка сверхбольших](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-17.jpg)
(обычно 2Мбайт). Реальный размер зависит от аппаратной платформы.
Недостатком маленьких страниц является неэффективное использование TLB (Translation Lookside Buffer), в случае использования больших страниц TLB используется более эффективно, что приводит к значительному увеличению производительности.
Слайд 19Эффективность использования больших страниц
Для страниц размером 4 КБ, механизм TLB содержит 32
![Эффективность использования больших страниц Для страниц размером 4 КБ, механизм TLB содержит](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-18.jpg)
записи в L1 кэше и 512 записей в L2 кэше. Так как каждая запись ссылается на 4 КБ, вы можете посчитать что вместе они покрывают чуть более 2 МБ виртуальной памяти.
Для больших страниц TLB содержит восемь записей. Так как каждая страница отображает 2 МБ, TLB может показывать 16 МБ виртуальной памяти.
Слайд 21Элемент таблицы страниц
Защита – Win32 API поддерживает ряд значений, в том числе:
![Элемент таблицы страниц Защита – Win32 API поддерживает ряд значений, в том](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-20.jpg)
PAGE_NOACCESS, PAGE_READONLY, PAGE_READWRITE, PAGE_EXECUTE.
Базовый физический адрес страницы в памяти.
Pagefile – индекс используемого файла подкачки (один из 16 возможных в системе файлов).
State – состояние страницы в системе:
T (Transition) – отмечает страницу как переходную;
D (Dirty) – страница, в которую была произведена запись;
P (Present) – страница присутствует в ОП или находится в файле подкачки.
Слайд 22Отдельные состояния страниц
Valid – страница используется процессом. Она реально существует в ОП
![Отдельные состояния страниц Valid – страница используется процессом. Она реально существует в](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-21.jpg)
и помечена в PTE как присутствующая в рабочем множестве процесса (P=1, D=0,1).
Modified – содержимое страницы было изменено (D=1). В PTE страница помечена как отсутствующая (P=0) и переходная (T=1).
Standby – содержимое страницы не изменялось (D=0). В PTE страница помечена как отсутствующая (P=0) и переходная (T=1).
Free – страница, на которую не ссылается ни один PTE. Страница свободна, но подлежит обнулению, прежде чем будет использована.
Zeroed – свободная и обнуленная страница, пригодная к непосредственному использованию любым процессом.
Bad – страница, которая вызывает аппаратные ошибки и не может быть использована ни одним процессом.
Слайд 24Операционные системы
Управление виртуальной памятью в Win32.
Свопинг.
![Операционные системы Управление виртуальной памятью в Win32. Свопинг.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-23.jpg)
Слайд 25Cвопинг
Для того, чтобы обеспечить все линейное адресное пространство процесса физическими ячейками памяти,
![Cвопинг Для того, чтобы обеспечить все линейное адресное пространство процесса физическими ячейками](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-24.jpg)
Windows применяет свопинг.
Организацией свопинга занимается VMM. При генерации системы на диске образуется специальный файл свопинга, куда записываются те страницы, которым не находится места в физической памяти. Процессы могут захватывать память в своем ВАП и, затем, использовать ее. Страница может иметь различные состояния.
VMM использует локальный алгоритм LRU (Least Recently Used) – замещение дольше всех неиспользовавшихся страниц.
Слайд 26Стратегия управления виртуальной памятью
Стратегия выборки (fetch policy)
Стратегия размещения (placement policy)
Стратегия
![Стратегия управления виртуальной памятью Стратегия выборки (fetch policy) Стратегия размещения (placement policy) Стратегия замещения (replacement policy)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-25.jpg)
замещения (replacement policy)
Слайд 27Стратегия выборки
Стратегия выборки (fetch policy):
Выборка определяет, в какой момент необходимо переписать страницу
![Стратегия выборки Стратегия выборки (fetch policy): Выборка определяет, в какой момент необходимо](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-26.jpg)
с диска в ОП.
В Windows используется классическая схема выборки с упреждением: система переписывает в память не только выбранную страницу, но и несколько следующих по принципу пространственной локальности, гласящему: наиболее вероятным является обращение к тем ячейкам памяти, которые находятся в непосредственной близости от ячейки, к которой производится обращение в настоящий момент. Поэтому вероятность того, что будут востребованы последовательные страницы, достаточна высока. Их упреждающая подкачка позволяет снизить накладные расходы, связанные с обработкой прерываний.
Стратегия размещения (placement policy)
Стратегия замещения (replacement policy)
Слайд 28Стратегия размещения
Стратегия выборки (fetch policy)
Стратегия размещения (placement policy):
Размещение определяет, в какое
![Стратегия размещения Стратегия выборки (fetch policy) Стратегия размещения (placement policy): Размещение определяет,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-27.jpg)
место оперативной памяти необходимо поместить подгружаемую страницу.
Для систем со страничной организацией данная стратегия практически не имеет никакого значения, и поэтому Windows выбирает первую попавшуюся свободную страницу.
Стратегия замещения (replacement policy)
Слайд 29Стратегия замещения
Стратегия выборки (fetch policy)
Стратегия размещения (placement policy)
Стратегия замещения (replacement
![Стратегия замещения Стратегия выборки (fetch policy) Стратегия размещения (placement policy) Стратегия замещения](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-28.jpg)
policy):
Замещение начинает действовать с того момента, когда в оперативной памяти компьютера не остается свободного места для размещения подгружаемой страницы. В этом случае необходимо решить, какую страницу вытеснить из физической памяти в файл подкачки (свопинг).
Слайд 31Реализация алгоритма замещения LRU
VMM периодически просматривает список страниц с атрибутом Valid и
![Реализация алгоритма замещения LRU VMM периодически просматривает список страниц с атрибутом Valid](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/377390/slide-30.jpg)
пытается похитить их у процесса (1). Он помечает их как отсутствующие (P=0), но на самом деле оставляет их на месте, только переводит в разряд Modified или Standby в зависимости от значения бита D из PTE.
Если содержимое страницы была изменено в ОП (D=1), то VMM выполнит запись страницы на диск (4).
Если похищенная страница принадлежит рабочему множеству, то к ней в ближайшее время произойдет обращение. Это, конечно, вызовет исключение - ведь страница-то помечена как отсутствующая. Но VMM очень быстро сделает эту страницу вновь доступной процессу, поскольку она реально находится в памяти (2).
Далее если к странице не будет обращений (страница вне рабочего множества), то она со временем перейдет в состояние Free (5) и станет доступна для замещения страниц в рамках данного процесса (6).
Затем системный поток обнуляет страницу – Zeroed (7), и она станет доступна другим процессам системы (8).