Автоматизация
Вид материала | Документы |
СодержаниеОперационная система реального времени с Рис 7.1 Схема прохождения запросов Рис. 7.2 |
- В. И. Харитонов > К. И. Меша Одобрено методической > С. С. Драгунов комиссией факультета, 321.05kb.
- Темы курсовых проектов Автоматизация учета налогоплательщиков (НП) физических и юридических, 19.54kb.
- Автоматизация бухгалтерского учета нужна ли она?, 216.55kb.
- Программа вступительного экзамена по приему в магистратуру по специальности 6М070200, 225.94kb.
- Автоматизация работы программ расчета, 29.26kb.
- Автоматизация и моделирование работы предприятий по строительству промышленных объектов, 445.96kb.
- Автоматизация процессов мониторинга объектов железнодорожной инфраструктуры на основе, 315.84kb.
- К рабочей программе учебной дисциплины «Интегрированные системы проектирования и управления»», 31.58kb.
- Автоматизация процесса формирования индивидуальных учебных планов в системе переподготовки, 256.55kb.
- Темы курсовых работ По дисциплине «Бухгалтерские информационные системы» Автоматизация, 14.74kb.
ОПЕРАЦИОННАЯ СИСТЕМА РЕАЛЬНОГО ВРЕМЕНИ С
РАЗДЕЛЕНИЕМ ФУНКЦИЙ РАФОС
§ 7.1. ОРГАНИЗАЦИЯ ВЫЧИСЛИТЕЛЬНОГО ПРОЦЕССА
Электронные вычислительные машины типа СМ-4 являются мощными и производительными средствами, возможности которых наиболее полно реализуются в режиме одновременного обслуживания многих пользователей. Однако специфика ядерно-физического эксперимента — высокие скорости поступления событий, недопустимость задержек при обработке возникающих в установке сигналов, большие объемы обрабатываемой информации — застав-ляют часто ограничивать круг обязанностей вычислительного комплекса обслуживанием лишь одной экспериментальной установки. Для управления такими измерительно-вычислительными комплексами предназначена ОС реального времени РАФОС. Эта система отличается минимальным временем ответа на внешнее воздействие, занимает незначительный объем оперативной памяти, имеет развитые средства обслуживания внешних устройств. Наличие фоно-оперативного режима позволяет сочетать обслуживание процесса реального времени с проведением отладочных или вычислительных работ.
Структура ОС РАФОС традиционна. Она включает в себя программу связи с оператором, монитор, драйверы ВУ, обслуживающие программы, файловую систему, системные объектные и макро библиотеки и пр. Важнейшими компонентами ОС являются монитор и драйверы ВУ.
Монитор предназначен для решения трех основных групп задач управления работой программ пользователя, управления файлам» и ведения диалога с оператором.
Управление работой программ пользователя заключается в загрузке и выгрузке этих программ, обеспечении затребованного в программах ввода-вывода, обслуживании прерываний, планировании задач в случае двухзадачного режима, организации связи оперативной и фоновой задач, если такая связь предусматривается программами пользователя, обслуживании системного диска и системного (консольного) терминала, диагностике ошибок.
Управление файлами включает в себя операции удаления старых и создания новых файлов на магнитных дисках и лентах, организации связи выполняемой задачи с конкретными файлами и т. д.
Введение диалога с оператором дает возможность оператору активно влиять на ход вычислительного процесса: запускать и приостанавливать задачи, изменять характеристики ВК и т. д.
Для выполнения монитором указанных функций предусмотрены соответствующие программы.
Управление работой программ пользователя осуществляется резидентным монитором RMON (resident monitor). Программа RMON представляет собой наиболее важную часть монитора. Она всегда находится в оперативной памяти в фиксированной области (является резидентной), и с ее помощью реализуется значительная часть функций ОС.
Управление файлами осуществляется программой обслуживания пользователя USR (user service routine). В отличие от RMON, USR в процессе работы ВК может выгружаться на диск и снова загружаться с диска в любую свободную область оперативной памяти. Этим обеспечивается более эффективное использование оперативной памяти программами пользователя.
Взаимодействие оператора и системы РАФОС осуществляется интерактивным монитором KMON (keyboard monitor), который так же, как и USR, является выгружаемой программой. Если в оперативной памяти нет ни фоновой, ни оперативной программ, то активна программа KMON, которая ожидает команд с клавиатуры терминала.
ОС РАФОС имеет четыре разновидности мониторов: однозначный SJ-монитор, фоново-оперативный FB-монитор, фоново-опера-тивный ХМ-монитор, обеспечивающий работу с расширенной памятью, и TS-монитор разделения времени.
SJ-монитор не позволяет организовать двухзадачный (фоново-оперативный) режим работы, зато занимает меньше места в оперативной памяти и отличается более быстрой реакцией на внешнее прерывание по сравнению с FB- и ХМ-мониторами; FB- и ХМ-мониторы обеспечивают двухзадачный режим работы и работают в приципе, одинаково. Различие заключается в том, что XM-монитор использует аппаратуру диспетчера памяти и содержит средства управления расширенной до 124К слов памятью. Все три монитора имеют практически совпадающие наборы команд оператора однако FB-монитор реализует более широкий набор системных макрокоманд, включая макрокоманды связи задач, блокировки и разблокировки задач, обслуживания прерываний и т. д. В XМ-монитор включены макрокоманды динамического управления памятью.
Большие удобства предоставляет включенный во вторую версию:системы РАФОС монитор разделения времени (TS-монитор). Он программно совместим с SJ- и FB-мониторами, однако позволяет организовать многопользовательский многотерминальный режим и, таким образом, существенно повышает эффективность использования ВК и ускоряет процесс разработки и отладки программного обеспечения (если оно с самого начала было ориентировано на систему РАФОС, а не на ОС РВ). К сожалению, программное обеспечение эксперимента и вообще любых задач реального времени системно-ориентированно. Программы реального времени, широко используя средства ОС, могут выполняться только в той ОС, на которую они были рассчитаны. Поэтому перевод Измерительно-вычислительного комплекса, по мере развития его аппаратной конфигурации и расширения решаемых задач с однопользовательского на многопользовательский режим работы с заменой операционной системы РАФОС на ОС РВ, требует полной переработки всех программ реального времени. Использование TS-монитора позволяет заметно упростить этот процесс. Следует, однако, иметь в виду, что средства реального времени в TS-мониторе ограниченны.
В системах управления экспериментом чаще других используется FB-монитор. Именно он подразумевается в последующем изложении.
Другим важнейшим компонентом ОС являются драйверы ВУ, обеспечивающие непосредственное управление ВУ и передачу данными между ВУ и программой пользователя. Следует отметить, что между драйвером и программой пользователя нет непосредственной Связи, она осуществляется через программу RMON (рис. 7.1). Если программа пользователя для осуществления ввода — вывода использует системные средства, которыми для программ на МАКРОАССЕМБЛЕРе являются системные макрокоманды, а для программ на ФОРТРАНе — операторы READ и WRITE, то при каждом запросе в программе пользователя на ввод-вывод происходит обращение к RMON, которая на основании заданных в запросе параметров строит специальную таблицу — элемент очереди. При повторении запросов образуется очередь таких элементов. Каждому драйверу образуется своя очередь. Если очередь к драйверу не пуста, монитор помещает адрес первого элемента очереди в заголовок драйвера (специальная таблица в драйвере, к которой может обращаться монитор) и инициирует работу драйвера. Далее драйвер работает независимо от RMON по прерываниям от ВУ. Тем самым создается возможность параллельного выполнения программы пользователя и затребованного ею ввода — вывода.
Рис 7.1 Схема прохождения запросов Рис. 7.2 Расположение элементов ОС
ввода – вывода из программы пользователя в памяти после загрузки системы
Хотя драйвер представляет собой, в сущности, обычную программу, ее непосредственный запуск пользователем невозможен. Драйвер начинает работать только по команде RMON. С другой стороны, загрузкой драйверов в оперативную память управляет пользователь. Все драйверы хранятся на системном диске в файлах, имеющих имена XX.SYS, где XX — условное имя ВУ. Загрузка драйвера в память осуществляется командой оператора LOAD XX в процессе настройки ВК или непосредственно по ходу выполняемой программы (динамически) с помощью макрокоманды .FETCH. Второй способ позволяет в случае обслуживания большого количества разнородных ВУ экономить память, загружая драйверы соответствующих ВУ поочередно по мере надобности. Поскольку ВК может нормально функционировать только при наличии оперативного общения с системным терминалом и системным диском, драйверы этих ВУ никогда не выгружаются из памяти.
Система РАФОС предназначена прежде всего для ВК, имеющих оперативную память сравнительно небольшого объема (от 8 до 32К слов). В этих условиях возрастает роль рационального распределения памяти между, программами пользователя и элементами ОС. РАФОС имеет специальные средства, повышающие эффективность использования оперативной памяти (выгружаемость программ KMON и USR, возможность динамической загрузки драйверов ВУ и др.).
Рассмотрим расположение элементов ОС в оперативной памяти (рис7.2). В старшие адреса памяти непосредственно перед страницей ввода — вывода, т. е. перед адресами регистров ВУ, загружается драйвер системного устройства, с которого была загружена система. Обычно это драйвер НМД. Поскольку функционирование ОС предполагает частое обращение к системному устройству его драйвер является резидентным.
Вслед за драйвером НМД размещается резидентный монитор RMON, занимающий приблизительно 4К слов памяти. Еще выше загружаются программы USR и KMON размером 2К и 4К слов соответственно.
Верхние 16010 слов памяти отводятся под векторы прерываний и другие системные ячейки. Особую важность для организации длительного процесса представляет системная область связи, расплагающаяся в области восьмеричных адресов с 40 по 56. В этой области хранится информация о выполняющейся в настоящий момент программе. Остающаяся память — свободная.
По мере загрузки драйверов ВУ и задач пользователя осущестся динамическое перераспределение оперативной памяти. При RMON всегда занимает одну и ту же область памяти всегда резидентен, а компоненты KMON и USR могут смещаться в сторону меньших адресов, предоставляя место для драйверов ВУ, которые командой оператора LOAD загружаются в область, смежную с RMON. Задачи пользователя загружаются с дисков командами оператора FRUN для оперативной задачи и RUN (или ft) для фоновой.
Загрузочный файл X.SAV фоновой задачи (здесь X — проивольное имя файла, a SAV — стандартное расширение имени) при Компоновке получает базовый абсолютный адрес 10008. Любая фоновая задача загружается с этого адреса (рис. 7.3). При этом с адреса 1000 начинается собственно текст задачи, т. е. ее программные строки и поля данных. Кроме этих компонент задачи в её состав также входят стек задачи, системная область связи и смешанная область задачи.
Стек фоновой задачи располагается непосредственно над задачей и занимает область до адреса 5008 (т. е. 96,0слов). Системная область связи располагается, как уже говорилось, ячейках 40—56. Здесь содержится информация о текущей задаче, используемая монитором и самой задачей. Содержание части ячеек устанавливается системой и из задачи может только читаться. В некоторые ячейки возможна и запись по ходу выполнения программы. Системная область связи содержит следующие данные:
слово 40 — стартовый адрес задачи;
слово 42 — начальное значение указателя стека (1000 для фоновой задачи);
слово 44 — слово состояния программы; слово 46 — адрес загрузки USR; . слово 50 — максимальный адрес, принадлежащий задаче;
байт 52 — код ошибки при выполнении программных запросов;
байт 53 — статус завершения программы;
слово 54 — начальный адрес RMON;
слово 56 — информация для специальных терминалов
Назначение части ячеек системной области связи (например стартовый адрес задачи, начальное значение указателя стека или начальный адрес RMON) понятно без объяснений. Назначение и использование некоторых других ячеек будет объяснено позже. Смешанная область фоновой задачи располагается в RMON. Здесь монитор хранит всю необходимую ему информацию о задаче в частности:
адрес списка свободных элементов ввода — вывода;
адрес области каналов ввода — вывода и саму эту область;
указатель на канал, по которому происходит ожидание завершения ввода — вывода;
число неудовлетворенных запросов ввода — вывода;
таблица блокировки задачи;
ячейка для сохранения содержимого указателя стека при переключении задач; входной и выходной кольцевые буфера системного терминала;
набор указателей, необходимых для работы с кольцевыми буферами терминала;
имя файла задачи и т. д.
Назначение некоторых полей смешанной области задачи объясняется ниже.
В отличие от системной области связи, часть ячеек которой может использоваться задачей для динамического контроля и изменения характеристик вычислительной системы, смешанная область задачи используется исключительно монитором.
Загрузочный файл оперативной задачи X.REL имеет формат, отличный от формата файла X.SAV. Для создания файла X.REL надо в строке вызова компоновщика указать ключ/FOREGROUND. В этом случае компоновщик создает перемещаемый файл, не настроеный на определенный начальный адрес. Файл содержит список строк загрузочного модуля, содержимое которых зависит от расположения задачи в оперативной памяти. Кроме того, в нулевом блоке файла содержится информация о длине всей программы.
При загрузке оперативной задачи командой FRUN процессор извлекает из нулевого блока файла информацию о длине программы, смещает соответствующим образом KMON и USR и загружает задачу в память так, чтобы ее старший адрес разместился вплотную к RMON (или к драйверам ВУ, если они загружены). После этого процессор просматривает список слов, требующих настройки на конкретный базовый адрес и, определив константу настройки, изменяет содержимое этих слов в загруженной задаче. Только после 'Этого задача запускается. Таким образом, процесс загрузки оперативной задачи заметно сложнее и длительнее процесса запуска фоновой задачи.
Как и для фоновой задачи, стек оперативной задачи примыкает к ней со стороны младших адресов (рис. 7.4). Размер стека по умолчанию составляет 64 слова, при этом как длину стека, так и его местоположение можно изменять с помощью соответствующих ключей компоновщика.
Таким образом, каждая задача в РАФОС имеет свой стек. Кроме стеков задач пользователя в составе RMON имеется область системного стека (см. рис. 7.4), который используется монитором при выполнении некоторых системных программ.
Выше стека оперативной задачи расположена ее смешанная область, под которую при загрузке система специально выделяет память. Что же касается системной области связи, то для нее всегда .используются ячейки 40 — 56. В зависимости от того, какая задача выполняется в настоящий момент, эти ячейки автоматически заполняются содержимым, относящимся к данной задаче.
Если загружена только одна оперативная задача, то она располагается между RMON и USR (см. рис. 7.4). При этом KMON и USR находятся в памяти и максимальный размер оперативной задачи, составляет 20К слов. Размер фоновой задачи может быть больше. Если размер фоновой задачи таков, что она накладывается на KMON или USR (но не на оперативную задачу), то система выделяет фоновой задаче необходимую память за счет места, занимаемого ранее программами KMON и USR. При загрузке фоновой задачи та ее часть, которая накладывается на KMON или USR, сначала копируется в специально предусмотренный файл SWAP.SYS. Затем RMON считывает содержимое файла SWAP.SYS на место KMON и USR и запускает задачу.
Если в процессе работы фоновой задачи понадобится USR, то произойдет свопинг: часть фоновой задачи выгружается на диск в файл SWAP.SYS и на освободившееся место с диска загружается USR. После того как USR отработает, произойдет восстановление в памяти фоновой задачи. Таким образом, максимальный размер фоновой задачи (если в памяти нет оперативной задачи и нерезидентных драйверов) составляет 24К слов. Заметим, что фоновая задача может сама загружать необходимые ей драйверы макрокомандой .FETCH. Драйверы, которые будут нужны оперативной задаче, должны быть предварительно загружены командой оператора LOAD.
Процедура свопинга, увеличивая доступный фоновой задаче объем оперативной памяти, порождает ряд проблем, для решения которых требуется более детальное знакомство с функциями и особенностями работы USR.
Программа USR предназначена для выполнения определенного" набора программных запросов, для чего в ее составе имеются программы реализации соответствующих функций монитора:
динамическая загрузка драйверов из фоновой задачи — макрокоманда .FETCH;
получение информации о различных ВУ и их драйверах — макрокоманда .DSTATUS;
создание нового и открытие имеющегося файла — макрокоманды .ENTER, и .LOOKUP;
закрытие канала файла — макрокоманда .CLOSE;
удаление и преименовывание файлов — макрокоманды .RENAME и .DELETE;
образование дополнительных элементов очереди ввода — вывода — макрокоманда .QSET;
завершение задачи — макрокоманда .EXIT;
работа с интерпретатором командной строки — макрокоманды .CSIGEN и .GTLIN;
управление самой программой USR — макрокоманды .LOCK и TLOCK.
Программа USR — не реентерабельная (повторно-входимая). Если одна из задач затребовала USR для выполнения какой-либо изперечисленных операций, а после этого USR понадобилась другой задаче, она не сможет выполняться, пока первая задача не освободит USR: Это может привести к неоправданным задержкам в выполнении задач реального времени, особенно если используются сравнительно медленные устройства типа НМЛ. Если, например, фоновая задача производит с помощью USR последовательный поиск на магнитной ленте, а оперативной задаче потребовался USR для какой-либо операции с файлом на магнитном диске, то оперативная задача, несмотря на то что она более приоритетна, может оказаться заблокированной на очень значительное время. Для повышения эффективности выполнения задач реального 1 можно предложить несколько путей.
Как видно из приведенного выше перечня, значительная часть выполнямых USR операций либо подготовительные (создание файлов, образование требуемого количества элементов и ввода — вывода), либо заключительные (закрытие файлов,завершение задачи). Это дает возможность разместить програмные запросы, требующие USR, в начальной и заключительной фазах программы, освободив от них ту часть программы, которая связана с обработкой прерываний и должна выполняться с минимальными задержками. В этом случае захват USR фоновой задачей не отразится на выполнении оперативной.
Если начальную (или конечную) фазу оперативной программы также надо выполнить без задержек, можно воспользоваться макрокомандой .LOCK, которая закрепляет за задачей право (Вольного владения USR. После выполнения всех запланированных операций задача запросом .UNLOCK освобождает USR. Такая методика эффективна, когда скорость выполнения фоновой задачи не имеет особенного значения. Если, однако, и оперативная и фоновая задачи обслуживают процессы реального времени, закреплние USR за оперативной задачей может заблокировать фоновую (если ей понадобится USR), что нежелательно. В этом случае можно воспользоваться тем обстоятельством, что блокировка фоновой задачи ожиданием освобождения USR не запрещает выполняться программам обработки прерываний и подпрограммам завершения (подробнее о подпрограммах завершения рассказано в 7.3). Выделив операции реального времени в программы обработки прерываний или подпрограммы завершения, можно избежать »ржек в выполнении этих операций, даже если сама фоновая задача и заблокирована. Другая проблема возникает из-за того, что USR — выгружаемая программа. Как уже отмечалось, если размер фоновой программы таков, что она перекрывает полностью или частично ,область отведенную для KMON и USR, последние выгружаются на диск, а на их место загружается конец фоновой программы. Если в этих условиях оперативной или даже фоновой задаче понадобится USR, то часть фоновой программы выгружается на диск и на это место загружается USR. Режим свопинга позволяет эффективно использовать память, но замедляет выполнение задач, так как на загрузку USR с диска требуется время. Повышению эффективности выполнения задач реального времени в условиях свопинга способствует использование программных запросов .LOCK и. UNLOCK. Если собрать в одно место программы группу программных запросов, требующих USR (например, .ENTER, .LOOKUP и др.), а перед ними предусмотреть запрос .LOCK, то при выполнении этого запроса USR будет скопирована в намять и закреплена за задачей. После завершения работы с USR следует выполнить запрос .UNLOCK. Повышению мобильности USR способствует возможност] загружать ее на любое место в программе пользователя. Адрес загрузки USR помещается (программно, с помощью команды MOV) в ячейку 46 системной области связи. USR можно загрузить например, на место уже отработанных и ненужных в дальнейшел кодов. Это повышает эффективность использования оперативной памяти. Если ячейка 46 специально не загружается, в ней содер жится нулевое значение, которое говорит о том, что место загрузи определяет RMON.
Свопинг полезен в условиях нехватки оперативной памяти. Если ЭВМ оснащена максимальным для FB-монитора РАФОС объемом оперативной памяти (28К слов) и вопрос экономии оперативной памяти не стоит очень остро, можно с помощью команды оператора SET USR NOSWAP сделать USR резидентной (невыгружаемой) что снимет проблемы, связанные со свопингом. Наконец, отказ от оперативно-фонового режима и компоновка всех модулей программного комплекса в один файл X.SAV или X.REL, уменьшая эффективность использования процессора ЭВМ, устраняет в то же время возможность задержек при выполнении задачи из-за захвата USR другой задачей.
При организации оперативно-фонового режима работы система осуществляет разделение процессорного времени между двумя задачами с помощью специальной программы планировщика, входящего в состав RMON. Программа пользователя (как фоновая, так и оперативная), загруженная в оперативную память, может находиться в одном из двух состояний: активном или блокированном. Активная (выполняемая) задача блокируется, т. е. прекращает выполняться на некоторое время, если возникает одна из следующих ситуаций:
происходит ожидание завершения ввода — вывода или передачи данных;
программа USR, потребовавшаяся задаче, занята другой задачей;
по запросу из программы должен построиться новый элемент очереди, а свободный элемент отсутствует (количество элементов очереди ограничено, хотя и может быть увеличено программным запр.осом .QSET);
завершение фоновой или оперативной задачи; задача блокирована «умышленно» программными запросами .SPND или .TWAIT либо командой оператора SUSPEND.
Причина блокировки отображается в специальном слове блокировки, находящемся в смешанной области задачи.
Как только активная задача блокируется, планировщик выясняет, может ли быть запущена вторая задача и, если она, в свою очередь, не заблокирована, запускает ее. Если же и вторая задача заблокирована (например, обе задачи ожидают завершения вывода данных), планировщик периодически просматривает состояние задач и при разблокировке одной из них запускает эту задачу. При этом во всех случаях большим правом на выполнение обладает оперативная задача. Фактически фоновая задача может выполниться лишь тогда, когда оперативная заблокирована. Поэтому в качестве оперативной задачи нецелесообразно использовать задачу с большим объемом чисто вычислительных операций. Это приведет к тому, что режим работы ВК будет, по существу, однозначным.
Переключение задач требует сохранения некоторой информации о текущей задаче, с тем чтобы в дальнейшем ее можно было снова запустить с прерванного места. Эта информация (контекст задачи) сохраняется частично в смешанной области задачи, частично в ее стеке (напомним, что в РАФОС обе задачи, включая их стеки и смешанные области, постоянно находятся в памяти и не требуютспециального сохранения).
При переключении задач сохраняется следующая информация:
слово состояния процессора;
содержимое регистров общего назначения, включая указатель стека и счетчик команд;
системная область связи (ячейки 42—52).
Моменты запуска планировщика и соответственно переключения задач определяются переходом монитора из системного режима в режим пользователя. В системном режиме выполняются такие действия монитора, прерывание которых было бы гибельно для системы. Системный режим характеризуется тем, что используется системный стек и запрещены переключения задач и вообще выполние каких-либо задач, кроме собственно программы монитора. Однако физический приоритет процессора, фиксируемый в ССП, равен нулю и разрешены прерывания от любых ВУ. Монитор использует системный режим для осуществления операций, затрагивающих таблицы данных самого монитора. К этим операциям, в частности, относятся:
блокировка задачи;
запуск и прекращение операций ввода — вывода;
обслуживание запросов системного таймера;
выполнение программных запросов .PROTECT и .CHCOPY;
изменение состояния USR;
Обслуживание прерываний;
выполнение программ драйверов ВУ.
Все эти операции так или иначе связаны с прерываниями внешними или внутренними), поэтому причиной перехода в системный режим являются прерывания.
Каждый раз после завершения операции, выполняющейся : системном режиме, и перед переходом из системного режима в пользовательский монитор выясняет, не требуется ли запуск планировщика. Если переход монитора в системный режим был связан с изменением состояния задач (блокировкой или разблокировкой), то, поскольку блокировка задачи позволяет запустить задачу с низшим приоритетом, а разблокировка приоритетной задачи требует ее немедленного запуска, планировщик запускается и происходит переключение задач с предварительным сохранением информации о текущей задаче в ее стеке и смешанной области. Соответствующая информация об активизируемой задаче извлекается из ее стека и смешанной области, и задаче передается управление. Процесс переключения задач в ЭВМ СМ-4 занимает около 360 икс.