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

7. Управление памятью Введение

Организация и управление основной, или первичной, или оперативной памятью вычислительной машины – один из самых важных факторов, определяющих построение операционных систем. В английской технической литературе память обычно обозначается термином memory. Для непосредственного выполнения программ или обращения к данным необходимо, чтобы они размещались в основной памяти. Вторичная, или внешняя память (в англ. варианте storage), – это, как правило, накопители на магнитных дисках, накопители на CD-ROM, накопители на магнитных лентах и т.д. – имеет гораздо большую емкость, стоит дешевле и позволяет хранить множество программ и данных. В отличие от внешней памяти оперативной памяти для сохранения информации требуется постоянное электропитание.

Иерархия запоминающих устройств

П амять вычислительной машины представляет собой иерархию запоминающих устройств (ЗУ), отличающихся средним временем доступа к данным, объемом и стоимостью хранения одного бита (рис. 7.1). Фундаментом этой пирамиды запоминающих устройств служит внешняя память, как правило, представляемая жестким диском. Она имеет большой объем (десятки и сотни гигабайт), но скорость доступа к данным является невысокой. Время доступа к диску измеряется миллисекундами.

На следующем уровне располагается более быстродействующая (время доступа равно примерно 10 - 20 наносекундам) и менее объемная (от десятков мегабайт до нескольких гигабайт) оперативная память, реализуемая на относительно медленной динамической памяти DRAM.

Для хранения данных, к которым необходимо обеспечить быстрый доступ, используются компактные быстродействующие запоминающие устройства на основе статической памяти SRAM, объем которых составляет от нескольких десятков до нескольких сотен килобайт, а время доступа к данным обычно не превышает 8 нс.

И наконец, верхушку в этой пирамиде составляют внутренние регистры процессора, которые также могут быть использованы для промежуточного хранения данных. Общий объем регистров составляет несколько десятков байт, а время доступа определяется быстродействием процессора и равно в настоящее время примерно 2-3 нс.

Все перечисленные характеристики ЗУ быстро изменяются по мере совершенствования вычислительной аппаратуры. В данном случае важны не абсолютные значения времени доступа или объема памяти, а их соотношение для разных типов запоминающих устройств.

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

Функции ос по управлению памятью

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

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

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

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

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

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

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

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

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

Защита памяти – это еще одна важная задача операционной системы, которая состоит в том, чтобы не позволить выполняемому процессу записывать или читать данные из памяти, назначенной другому процессу, Эта функция, как правило, реализуется программными модулями ОС в тесном взаимодействии с аппаратными средствами.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]