Наверх Системное программирование
Предыдущий раздел Оглавление Следующий раздел

4.4. ВИРТУАЛЬНАЯ ПАМЯТЬ

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

В первых компьютерах программы разбивались на небольшие части, которые назывались оверлеями. Вместе с запуском конкретной программы запускался также так называемый администратор оверлейной загрузки. После чего оверлей с порядковым номером 0 загружался и запускался администратором. После завершения работы этого оверлея администратор получал сообщение о загрузке оверлея 1 или другого, номер которого отличался от номера находящегося в памяти оверлея. Запись в память нового оверлея могла происходить либо рядом с уже загруженным при условии наличия достаточного места, либо поверх загруженного при нехватке памяти. Некоторые системы, основанные на оверлеях, позволяли одновременно находиться в памяти множеству оверлеев. Администратор загрузки оверлеев осуществлял свопинг хранящихся на диске оверлеев в память и обратно.

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

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

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

Предыдущий раздел Оглавление Следующий раздел