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

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), то они считываются из основной памяти, передаются источнику запроса и одновременно с этим копируются в кэш-память.

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

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

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