Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
учебно-методический комплекс.DOC
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
257.54 Кб
Скачать

1.4. Управление памятью

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

Функции ОС по управлению памятью в мультипрограммной ОС:

— отслеживание свободной и занятой памяти;

— выделение памяти процессам и ее освобождение по завершении процессов;

— вытеснение кодов и данных процессов из оперативной памяти на диск (полное или частичное);

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

— динамическое распределение памяти;

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

— защита памяти — реализуется программными модулями ОС в тесном взаимодействии с аппаратными средствами.

Типы адресов

Символьные имена присваивает пользователь при написании программы на алгоритмическом языке.

Виртуальные адреса (математические или логические) вырабатывает транслятор, переводящий программу на машинный язык.

Физические адреса соответствуют номерам ячеек оперативной памяти.

Совокупность виртуальных адресов процесса называется виртуальным адресным пространством. 0000000016 - FFFFFFFF16 (32-разрядные).

Способы структуризации виртуального адресного пространства:

— непрерывная линейная последовательность виртуальных адресов — плоская (flat) структура (адрес-число m);

— виртуальное адресное пространство делится на части, называемые сегментами (адрес-(n,m)).

Существует два принципиальных подхода к преобразованию виртуальных адресов в физические:

— замена виртуальных адресов на физические выполняется один раз для каждого процесса во время начала загрузки программы в память с помощью специальной системной программы перемещающей загрузчик;

— динамическое преобразование виртуальных адресов.

Необходимо различать: максимально возможное виртуальное адресное пространство процесса (зависит от архитектуры процессора) и назначенное (выделенное) процессу виртуальное адресное пространство.

Алгоритмы распределения памяти

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

Виртуализация оперативной памяти включает решение следующих задач:

— размещение данных в запоминающих устройствах разного типа, например, часть кодов программы — в оперативной памяти, а часть — на диске;

— выбор образов процессов или их частей для перемещения из оперативной памяти на диск и обратно;

— перемещение по мере необходимости данных между памятью и диском;

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

Виртуализация памяти может быть осуществлена на основе:

— свопинга (swapping) — образы процессов выгружаются на диск и возвращаются в оперативную память целиком;

— виртуальной памяти (virtual memory) — между оперативной памятью и диском перемещаются части (сегменты, страницы и т. п.) образов процессов.

Страничное распределение

Виртуальное адресное пространство каждого процесса делится на части одинакового, фиксированного для данной системы размера — виртуальные страницы (virtual pages).

Вся оперативная память также делится на части такого же размера — физические страницы (блоки, кадры). Размер страницы выбирается равным степени 2: 512, 1024, 4096 байт и т. д.

Сегментное распределение

Виртуальное адресное пространство процесса делится на части — сегменты, размер которых определяется с учетом смыслового значения содержащейся в них информации. Осуществляется компилятором на основе указаний программиста или по умолчанию. Максимальный размер сегмента определяется разрядностью виртуального адреса, например, при 32-разрядной организации процессора он равен 4 Гбайт.

Таблица сегментов процесса включает:

— базовый физический адрес сегмента в оперативной памяти;

— размер сегмента;

— правила доступа к сегменту;

— признаки модификации, присутствия и обращения к данному сегменту.

Виртуальный адрес при сегментной организации памяти может быть представлен парой (g, s), где g — номер сегмента, а s — смещение в сегменте.

Сегментно-страничное распределение

Схема преобразования виртуального адреса в физический:

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

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

3. К номеру физической страницы пристыковывается младшая часть виртуального адреса — смещение.

Кэш-память

Кэш-память, или просто кэш (cache) — способ совместного функционирования двух типов запоминающих устройств, отличающихся временем доступа и стоимостью хранения данных. За счет динамического копирования в “быстрое” ЗУ наиболее часто используемой информации из “медленного” ЗУ он позволяет, с одной стороны, уменьшить среднее время доступа к данным, а с другой — экономить более дорогую быстродействующую память.

Кэширование — это универсальный метод, пригодный для ускорения доступа к оперативной памяти, к диску и другим видам ЗУ.

Содержимое кэш-памяти представляет собой совокупность записей обо всех загруженных в нее элементах данных из основной памяти.

Каждая запись включает в себя:

1) значение элемента данных;

2) адрес, который этот элемент данных имеет в основной памяти;

3) дополнительную информацию для реализации алгоритма замещения данных в кэше (признак модификации и признак действительности данных).

Кэш-память не является адресуемой, поэтому поиск нужных данных осуществляется по содержимому — взятому из запроса значению поля адреса в оперативной памяти.

Далее возможен один из следующих вариантов:

— если данные обнаруживаются в кэш-памяти — кэш-попадание (cache-hit), то они считываются из нее, и результат передается источнику запроса;

— если нужные данные отсутствуют в кэш-памяти — кэш-промах (cache-miss), то они считываются из основной памяти, передаются источнику запроса и одновременно с этим копируются в кэш-память.

При кэшировании данных из оперативной памяти широко используются две основные схемы отображения: случайное и детерминированное.

При случайном отображении элемент оперативной памяти может быть размещен в произвольном месте кэш-памяти. Чтобы было можно найти нужные данные в кэше, они помещаются туда вместе со своим адресом оперативной памяти.

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