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

Функционирование менеджера памяти

Базовой операцией менеджера памяти является трансляция виртуального адреса в физический с помощью таблицы страниц и ассоциативной (TLB) памяти. В ряде случаев, для реализации разделяемой памяти, интеграции с системой ввода/вывода и др., применяется прототипная таблица страниц, которая является промежуточным звеном между обычной таблицей страниц и физической памятью.

Для описания страниц физической памяти поддерживается база данных PFN (Page Frame Number). Локализацию страниц памяти, контроль процессом памяти другого процесса и технику копирования при записи можно отнести к интересным особенностям системы управления памятью ОС Windows

Содержание

  • Разделяемая память

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

  • First.c

  • second.c

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

  • Физическая память

    • Рабочие наборы процессов

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

    • База данных PFN. Страничные демоны

    • Эксперимент. Наблюдение за ошибками страниц

  • Отдельные аспекты функционирования менеджера памяти

    • Локализация страниц в памяти

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

    • Копирование при записи

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

    • Контроль процессом памяти другого процесса

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

  • Заключение

После знакомства со структурой виртуального адресного пространства перейдем к рассмотрению вопросов связывания виртуальных адресов с физическими адресами в рамках сегментно-страничной модели памяти Windows.

На рис. 10.1 представлено отображение различных типов виртуальных адресов в физические.

Для трансляции виртуального адреса, сгенерированного процессором, нужно определить номер виртуальной страницы, содержащей данный адрес, а также принадлежность страницы к зарезервированному региону.

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

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

Рис. 10.1. Трансляция адреса в страничной виртуальной схеме

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

Каждая строка в таблице страниц называется PTE (page table entry). В 32-разрядных архитектурах IA-32 PTE занимает 4 байта (см. рис. 10.2).

Рис. 10.2. Структура строки таблицы страниц (PTE)

Назначение отдельных атрибутов ясно из рисунка. Например, информация об обращении к странице или ее модификации (биты 5 и 6) позволяет собирать статистику обращений к памяти, которую используют алгоритмы выталкивания страниц. С точки зрения процесса трансляции наиболее важную роль играет бит присутствия V (Valid). Согласно терминологии, принятой в [6], PTE с установленным битом Vназываются "действительными", а соответствующая страница находится в оперативной памяти.

При сброшенном V бите возникает страничная ошибка (page fault). Наиболее распространенный вариант page fault'а - нахождение страницы в файле выгрузки (отсутствующая страница). В этом случае первые 20 битов PTE будут указывать на смещение в страничном файле. Обработка таких ситуаций состоит в приостановке процесса, сгенерировавшего page fault, подкачке страницы с диска в свободный кадр физической памяти, модификации PTE и возобновлении неудавшейся операции. Таким образом, недействительный PTE превращается в действительный. Эта ситуация возникает часто, более того, нередки случаи обращения к одной и той же отсутствующей странице двух потоков одного процесса (конфликт ошибок страниц), которые успешно обрабатываются системой (см. [6]). Помимо нужной страницы диспетчер на всякий случай загружает в память несколько, обычно от 1 до 8, соседних страниц, чтобы минимизировать количество обращений к диску (стратегия подкачки по требованию с кластеризацией).

В действительности трансляция происходит более сложно (см., например, [2]). Существенная часть записей PTE кэшируется в ассоциативной памяти (TLB регистрах) процессора. При этом таблицу страниц в силу ее большого объема конструируют из двух уровней: каталог таблиц страниц (page directory) и таблицы страниц (page table), см. рис. 10.3.

увеличить изображение Рис. 10.3. Трансляция адреса с использованием ассоциативной памяти и двухуровневой таблицы страниц

Размер таблицы страниц подобран таким образом, что она целиком заполняет одну страницу оперативной памяти - 4 Кб. Для быстрого нахождения таблицы страниц один из регистров процессора (CR3 в Intel) указывает на каталог таблиц страниц (page directory) данного процесса, который хранится по адресу 0хС0300000. Значение этого регистра входит в контекст процесса. Поэтому, а также потому, что при смене исполняемого потока буфер ассоциативной памяти нуждается в обновлении, несколько увеличивается время переключения контекстов. Эти особенности архитектуры хорошо известны и здесь не будут описываться подробно. В дальнейшем для упрощения в схеме трансляции адреса таблица страниц будет изображаться одномерной.