
- •Введение
- •Связывание адресов
- •Общее описание виртуальной сегментно-страничной памяти ос Windows
- •Инструментальные средства наблюдения за работой менеджера памяти
- •Виртуальное адресное пространство процесса
- •Регионы в виртуальном адресном пространстве
- •Создание (резервирование) региона и передача ему физической памяти
- •Прогон программы выделения памяти при помощи функции Virtual Alloc
- •Прогон программы, демонстрирующей выделение больших массивов памяти
- •Регион куча
- •Прогон программы выделения памяти в стандартной куче
- •Регион стека потока. Сторожевые страницы
- •Прогон программы, моделирующей обращение к сторожевым страницам
- •Регион файла, отображаемого в память
- •Прогон программы, демонстрирующей отображение файла в память
- •Написание, компиляция и прогон программы, демонстрирующей различные аспекты проецирования файла в память
- •Заключение
Виртуальное адресное пространство процесса Лекция9
Система управления памятью является одной из наиболее важных в составе ОС. Традиционная схема предполагает связывание виртуального и физического адресов на стадии исполнения программы. Для управления виртуальным адресным пространством в нем принято организовывать сегменты (регионы), для описания которых используются структуры данных VAD (Virtual Address Descriptors). Для создания региона и передачи ему физической памяти можно использовать функцию VirtualAlloc. Описана техника использования таких регионов, как куча процесса, стек потока и регион файла, отображаемого в память
Содержание
Введение
Связывание адресов
Общее описание виртуальной сегментно-страничной памяти ОС Windows
Инструментальные средства наблюдения за работой менеджера памяти
Виртуальное адресное пространство процесса
Регионы в виртуальном адресном пространстве
Создание (резервирование) региона и передача ему физической памяти
Прогон программы выделения памяти при помощи функции Virtual Alloc
Прогон программы, демонстрирующей выделение больших массивов памяти
Регион куча
Прогон программы выделения памяти в стандартной куче
Регион стека потока. Сторожевые страницы
Прогон программы, моделирующей обращение к сторожевым страницам
Регион файла, отображаемого в память
Прогон программы, демонстрирующей отображение файла в память
Написание, компиляция и прогон программы, демонстрирующей различные аспекты проецирования файла в память
Заключение
Введение
В компьютерах фон-неймановской архитектуры выполняемые программы вместе с обрабатываемыми ими данными должны находиться в оперативной памяти. Операционной системе приходится заниматься управлением памятью, то есть решать задачу распределения памяти между пользовательскими процессами и компонентами ОС. Часть ОС, которая отвечает за управление памятью, называется менеджером памяти.
Для описания системы управления памятью активно используются понятия физической и логической (виртуальной) памяти.
Физическая память является аппаратным запоминающим устройством компьютера. Менеджер памяти имеет дело с двумя уровнями физической памяти: оперативной (основной, первичной) и внешней, или вторичной. Оперативная память изготавливается с применением полупроводниковых технологий и теряет свое содержимое при отключении питания. Вторичная память (это, главным образом, диски) характеризуется гораздо более медленным доступом, однако имеет большую емкость и является энергонезависимой. Она используется в качестве расширения основной памяти. Обычно информация, хранимая в оперативной памяти, за исключением самых последних изменений, хранится также во внешней памяти. Если процессор не обнаруживает нужную информацию в оперативной памяти, он начинает искать ее во вторичной. Когда нужная информация найдена во внешней памяти, она переносится в оперативную память. Менеджер памяти старается по возможности снизить частоту обращений к вторичной памяти (свойство локальности или локализации обращений). В результате эффективное время доступа к памяти оказывается близким к времени доступа к оперативной памяти и составляет несколько десятков наносекунд.
Оперативная память представляет собой упорядоченный массив однобайтовых ячеек, каждая из которых имеет свой уникальный адрес (номер). Типовые операции - чтение и запись байта в ячейку с нужным номером. Обмен с внешней памятью обычно осуществляется блоками фиксированного размера. Совокупность адресов в физической памяти называется физическим адресным пространством.
К сожалению, многие термины, относящиеся к системе управления памятью, как и в информатике вообще, перегружены. Поэтому в дальнейшем термин "физическая память" будет относиться именно к оперативной памяти, а использование внешней памяти (дисковой, файлов выгрузки) будет оговариваться отдельно.
Логическая память - абстракция, отражающая взгляд пользователя на то, как организованы его программы и хранятся данные. С точки зрения пользователя его выполняемая программа (процесс) представляет собой совокупность блоков переменного размера, содержащих однородную информацию (данные, код, стек и т.д.). Обычно такие модули называют сегментами(см. рис. 9.1). Адрес при этом перестает быть линейным и состоит из нескольких компонентов, например, номера сегмента и смещения внутри сегмента. Кроме того, с сегментами принято связывать атрибуты: права доступа или типы операций, которые разрешается производить с данными, хранящимися в сегменте.
Рис. 9.1. Расположение сегментов процессов в памяти компьютера
Логические адреса внутри сегментов могут быть сформированы на этапе компиляции. При этом символические имена связываются с перемещаемыми адресами (такими, как n байт от начала модуля). Другим примером логического адреса может быть адрес, полученный программой в результате операции выделения области памяти (allocation). Иногда говорят, что логический адрес - это адрес, который генерирует процессор. Совокупность всех логических адресов называется логическим (виртуальным) адресным пространством.