Учебно-практическое пособие Москва 2009

Вид материалаУчебно-практическое пособие

Содержание


Рис. 2.3. Схема размещения резидентного монитора в памяти
Защита памяти.
Привилегированные команды.
Многозадачные пакетные системы
Подобный материал:
1   2   3   4   5   6   7   8

Рис. 2.3. Схема размещения резидентного монитора в памяти


Как видите, монитор решает проблему разработки графика. Задания в па кетах выстраиваются в очередь и выполняются без простоев настолько быстро, насколько это возможно. Кроме того, монитор помогает в подготовке программы к исполнению. В каждое задание включаются простые команды языка управления заданиями (job control language — JCL). Это специальный тип языка программирования, используемый для того, чтобы отдавать команды монитору. Рассмотрим простой пример, в котором нужно принять на обработку программу пользователя, составленную на языке FORTRAN, и дополнительные данные, используемые этой программой. Все команды языка FORTRAN и данные находятся на отдельных перфокартах или в отдельных записях на магнитной ленте. Каждое задание, кроме операторов языка FORTRAN и данных, содержит команды управления заданием, каждая из которых начинается знаком $. Формат задания в целом выглядит следующим образом:

$JOB

$FTN



• инструкции FORTRAN



$LOAD

$RUN



• данные



$END

Чтобы выполнить это задание, монитор читает строку $FTN и загружает с запоминающего устройства большой емкости (обычно это лента) компилятор соответствующего языка. Компилятор преобразует программу пользователя в объектный код, который записывается в память или на запоминающее устройство. Если этот код заносится в память, то операция называется «компиляция, загрузка и запуск». Если же он записывается на магнитную ленту, то нужна дополнительная команда $LOAD. Монитор, к которому вернулось управление после компиляции, читает эту команду и обращается к загрузчику, который загружает объектную программу в память (на место компилятора) и передает ей управление. В таком режиме различные подсистемы совместно используют один и тот же участок основной памяти, хотя в каждый момент времени работает только одна из этих подсистем.

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

Таким образом, монитор, или пакетная операционная система, — это обычная компьютерная программа. Ее работа основана на способности процессора выбирать команды из различных областей основной памяти; при этом происходит передача и возврат управления. Желательно также использование и других возможностей аппаратного обеспечения.
  • Защита памяти. Во время работы программы пользователя она не должна вносить изменения в область памяти, в которой находится монитор. Если же такая попытка предпринята, аппаратное обеспечение процессора должно обнаружить ошибку и передать управление монитору. Затем монитор снимет задачу с выполнения, распечатает сообщение об ошибке и загрузит следующее задание.
  • Таймер. Таймер используется для того, чтобы предотвратить ситуацию, когда одна задача захватит безраздельный контроль над системой. Таймер выставляется в начале каждого задания. По истечении определенного промежутка времени программа пользователя останавливается и управление передается монитору.
  • Привилегированные команды. Некоторые команды машинного уровня имеют повышенные привилегии и могут исполняться только монитором. Если процессор натолкнется на такую команду во время исполнения про граммы пользователя, возникнет ошибка, при которой управление будет передано монитору. В число привилегированных команд входят команды ввода-вывода; это значит, что все устройства ввода-вывода контролируются монитором. Это, например, предотвращает случайное чтение программой пользователя команд управления, относящихся к следующему заданию. Если программе пользователя нужно произвести ввод-вывод, она должна за просить для выполнения этих операций монитор.
  • Прерывания. В первых моделях компьютеров этой возможности не было. Она придает операционной системе большую гибкость при передаче управления программе пользователя и его возобновлении.

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

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

Многозадачные пакетные системы

Процессору часто приходилось простаивать даже при автоматическом выполнении заданий под управлением простой пакетной операционной системы. Проблема заключается в том, что устройства ввода-вывода работают намного медленнее, чем процессор. На рис. 2.4 представлены соответствующие расчеты, выполненные для программы, которая обрабатывает файл с записями, причем для обработки одной записи требуется в среднем 100 машинных команд. В этом примере 96% всего времени процессор ждет, пока устройства ввода-вывода закончат передачу данных в файл и из него. На рис. 2.5,а показана такая ситуация для одной программы. Некоторое время процессор исполняет команды; за тем, дойдя до команды ввода-вывода, он должен подождать, пока она не закончится. Только после этого процессор сможет продолжить работу.

Чтение одной записи из файла 0,0015 s

Выполнение 100 машинных команд 0,0001 s

Внесение одной записи в файл 0,0015 s

Всего 0,0031 s

0,0001

Степень использования процессора = =0,032=3,2%

0,0031

Рис. 2.4. Пример использования системы

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