Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции 1-8 / ОС_04.doc
Скачиваний:
97
Добавлен:
04.04.2013
Размер:
179.2 Кб
Скачать

4.3.1 Связное распределение памяти в однопрограммных системах

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

Первоначально каждый пользователь сам писал всю программу, необходимую для реализации конкретной прикладной задачи, включая подробные процедуры ввода-вывода в машинных кодах. Но очень скоро коды программ, необходимых для реализации базовых функций ввода-вывода, начали объединяться в так называемые системы управления вводом-выводом (Input-Output Control System - IOCS). Благодаря этому у пользователей, которым требовались определенные операции ввода-вывода, отпала необходимость самим непосредственно кодировать эти операции, — они получили возможность вызывать соответствующие подпрограммы ввода-вывода, эффективно выполняющие реальную работу. Тем самым было обеспечено существенное упрощение и ускорение процесса кодирования программ. Создание систем управления вводом-выводом можно, по-видимому, считать началом развития концепции современных операционных систем. Организация памяти в типичном случае связного распределения для одного пользователя показана на рис. 4.2. Это самое простое – непрерывное распределение памяти.

Рис. 4.2. Распределение памяти с выделением непрерывного сегмента одному пользователю

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

Оверлейный режим предоставляет программисту возможность как бы расширить ограниченные рамки основной памяти.

Рис. 4.3. Типичная оверлейная структура

Программа со сложной оверлейной структурой может весьма трудно поддаваться модификации. Проблема оверлейных сегментов, контролируемых самим программистом, отпадает благодаря появлению систем виртуальной памяти.

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

Защиту памяти в однопрограммной системе можно реализовать при помощи одного граничного регистра, встроенного в ЦП, как показано на рис. 4.4.

Рис. 4.4. Защита памяти с выделением непрерывного сегмента одному пользователю

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

Соседние файлы в папке Лекции 1-8