Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Виртуальное адресное пространство процесса Лекц...doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
309.25 Кб
Скачать

Виртуальное адресное пространство процесса Лекция9

Система управления памятью является одной из наиболее важных в составе ОС. Традиционная схема предполагает связывание виртуального и физического адресов на стадии исполнения программы. Для управления виртуальным адресным пространством в нем принято организовывать сегменты (регионы), для описания которых используются структуры данных VAD (Virtual Address Descriptors). Для создания региона и передачи ему физической памяти можно использовать функцию VirtualAlloc. Описана техника использования таких регионов, как куча процесса, стек потока и регион файла, отображаемого в память

Содержание

  • Введение

  • Связывание адресов

  • Общее описание виртуальной сегментно-страничной памяти ОС Windows

  • Инструментальные средства наблюдения за работой менеджера памяти

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

    • Регионы в виртуальном адресном пространстве

    • Создание (резервирование) региона и передача ему физической памяти

    • Прогон программы выделения памяти при помощи функции Virtual Alloc

    • Прогон программы, демонстрирующей выделение больших массивов памяти

    • Регион куча

    • Прогон программы выделения памяти в стандартной куче

    • Регион стека потока. Сторожевые страницы

    • Прогон программы, моделирующей обращение к сторожевым страницам

    • Регион файла, отображаемого в память

    • Прогон программы, демонстрирующей отображение файла в память

  • Написание, компиляция и прогон программы, демонстрирующей различные аспекты проецирования файла в память

  • Заключение

Введение

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

Для описания системы управления памятью активно используются понятия физической и логической (виртуальной) памяти.

Физическая память является аппаратным запоминающим устройством компьютера. Менеджер памяти имеет дело с двумя уровнями физической памяти: оперативной (основной, первичной) и внешней, или вторичной. Оперативная память изготавливается с применением полупроводниковых технологий и теряет свое содержимое при отключении питания. Вторичная память (это, главным образом, диски) характеризуется гораздо более медленным доступом, однако имеет большую емкость и является энергонезависимой. Она используется в качестве расширения основной памяти. Обычно информация, хранимая в оперативной памяти, за исключением самых последних изменений, хранится также во внешней памяти. Если процессор не обнаруживает нужную информацию в оперативной памяти, он начинает искать ее во вторичной. Когда нужная информация найдена во внешней памяти, она переносится в оперативную память. Менеджер памяти старается по возможности снизить частоту обращений к вторичной памяти (свойство локальности или локализации обращений). В результате эффективное время доступа к памяти оказывается близким к времени доступа к оперативной памяти и составляет несколько десятков наносекунд.

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

К сожалению, многие термины, относящиеся к системе управления памятью, как и в информатике вообще, перегружены. Поэтому в дальнейшем термин "физическая память" будет относиться именно к оперативной памяти, а использование внешней памяти (дисковой, файлов выгрузки) будет оговариваться отдельно.

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

Рис. 9.1. Расположение сегментов процессов в памяти компьютера

Логические адреса внутри сегментов могут быть сформированы на этапе компиляции. При этом символические имена связываются с перемещаемыми адресами (такими, как n байт от начала модуля). Другим примером логического адреса может быть адрес, полученный программой в результате операции выделения области памяти (allocation). Иногда говорят, что логический адрес - это адрес, который генерирует процессор. Совокупность всех логических адресов называется логическим (виртуальным) адресным пространством.