Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционные системы_лекции.doc
Скачиваний:
47
Добавлен:
28.09.2019
Размер:
1.71 Mб
Скачать

2.2. Простое непрерывное распределение и распределение с перекрытием

Для операционных систем, не поддерживающих режим мультипрограммирования, часто применяется простое непрерывное распределение памяти, которое является первой схемой распределения памяти. Это распределение предусматривает выделение в памяти трёх основных областей:

  • области, занимаемой операционной системой;

  • области, занимаемой задачей;

  • свободной области памяти.

Для обеспечения наибольшего объёма памяти, отводимой для задач, в области, отведённой для операционной системы должны находиться самые необходимые модули операционной системы, которые называются ядром. Остальные могут подгружаться по мере необходимости. Наличие разных внешних устройств требует выделения как специальных областей памяти под буферы1 внешних устройств, так и памяти под их драйверы. Поэтому, объём памяти, реально занимаемый операционной системой, имеет для различных комплексов переменный размер. Максимальный размер области, занимаемой операционной системой может быть предсказан. Поэтому память, использующаяся задачами, и свободная память образуют непрерывные области. Нет необходимости жёстко привязывать виртуальные адреса программ к реальным физическим адресам на стадии программирования. Эту привязку выполняет загрузчик программы.

Достоинством такого распределения памяти является отсутствие необходимости защищать какие-либо её области, кроме области модулей операционной системы и областей, занимаемых программами. Недостатком является потери процессорного времени и потери памяти, т.к. не всякая программа использует всю отведённую для неё память.

В практике встречаются случаи создания программ, общий объём модулей которой превышает размер оперативной памяти, отводимой для хранения кодов программ и данных. В этом случае программа создаётся из множества модулей. Часть их находится в памяти постоянно в течение времени работы программы. Часть модулей находится в памяти программы только во время их исполнения, а по мере завершения заменяется другими. Такие модули называются оверлейными2. Распределение памяти, использующее оверлейные модули, называется распределением с перекрытием.

2.3. Распределение памяти статическими разделами

Это распределение памяти предусматривает разделение памяти на разделы с фиксированными границами, осуществляемое единовременно при загрузке операционной системы или программистом во время работы машины. В нулевом разделе размещается ядро операционной системы и транзитные модули операционной системы, т.е. модули, подгружаемые с системного диска.

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

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

Серьёзный недостаток распределения памяти на статические разделы привёл к попыткам распределения памяти на разделы с переменными границами (динамическим разделами) и к фрагментации задач.