Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_3.doc
Скачиваний:
4
Добавлен:
12.11.2019
Размер:
435.2 Кб
Скачать

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

Память в компьютере имеет иерархическую структуру. Небольшая её часть, находящаяся прямо в центральном процессоре, представляет собой очень быструю энергозависимую кэш-память. Далее идёт более обширная энергозависимая оперативная память – ОЗУ (RAM), следующая ступень иерархии – медленная энергонезависимая память на жёстких дисках (ПЗУ), объём которой может достигать сотен гигабайт.

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

Самая простая схема управления памятью – однозадачная система без подкачки на диск – заключается в том, что в каждый момент времени работает только одна программа, а память распределена только между этой программой и операционной системой. В этом случае работает только один процесс. Так, например, работает операционная система MS-DOS.

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

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

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