ИНФОРМАЦИЯ 

Александр Николаевич Томилин
Материалы к курсу

"Операционные системы супер-ЭВМ"

В данном курсе, читаемом на факультете ВМиК МГУ, рассматриваются технологические основы построения операционных систем для "больших компьютеров" (супер-ЭВМ) и сложных вычислительных комплексов на примере отечественной вычислительной системы "Электроника ССБИС".
Примечание. В данной HTML-версии опущены разделы 3.10-3.16 оригинального документа. Также доступна версия в формате Word 97.

Также доступна программа курса и рекомендуемая литература.


Содержание документа

  1. Введение.
  2. Вычислительная система "Электроника ССБИС".
  3. 3. Операционная система основной машины.

1.ВВЕДЕНИЕ.

В состав системного программного обеспечения основной машины вычислительной системы "Электроника ССБИС" (далее ОМ) входят следующие компоненты:

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

Операционная система основной машины (ее описанию посвящен раздел 3) - это многопользовательская ОС, обеспечивающая решение задач в пакетном режиме, в режиме разделения времени, в режиме реального времени. ОС выполняет традиционные функции: управление заданиями, управление данными, управление процессором, основной памятью, дисковой и массовой памятью. Транспортная служба ОС обеспечивает взаимодействие с операционными системами внешних ЭВМ при пакетной обработке данных и удаленный вызов программ, предоставляя тем самым возможности децентрализованной обработки данных. ОС имеет развитые средства для повышения устойчивости системы к сбоям и отказам процессора, основной и внешней памяти.

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

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

Система программирования на языке Фортран 77 содержит оптимизирующий компилятор со стандарта этого языка. Компилятор содержит средства оптимизации программ с учетом особенностей векторной архитектуры (векторизация циклов и планирование потока команд).


2. ВЫЧИСЛИТЕЛЬНАЯ СИСТЕМА "ЭЛЕКТРОНИКА СС БИС"

Вычислительная система "Электроника СС БИС" включает:

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

2.1. Аппаратные особенности основной машины.

В состав основной машины (ОМ) входят:

Через каналы (пропускная способность 200 Мгб/сек) подключается массовая интегральная память емкостью 256 Мгб, темп обмена 0,64 мксек на 64-х разрядное слово. Через канал (пропускная способность 10 Мгб/сек) подсоединяется дисковая память, управляемая контроллерами или дисковыми серверами.

Процессор состоит из:

Адресные регистры (A- и B-регистры) содержат 24 разряда, скалярные регистры (S- и T-регистры) - 64 разряда; каждый векторный регистр состоит из 64 слов по 64 разряда.

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

В состав аппаратуры управления командами и связи с оперативной памятью входит буфер команд, имеющий блочную организацию (16 блоков по 64 командных слога), с ассоциативным поиском номера блока. Наличие буфера команд позволяет значительно сократить число обращений к оперативной памяти при выполнении программы.

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

2.2. Защита памяти

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

2.3. Система прерываний

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

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

Источником прерываний могут быть события в работе каналов (например, окончание обмена по каналу), определение ошибки памяти схемами контроля памяти, сигналы от таймера,"программные прерывания". К "программным прерываниям" относятся попытки обращения к памяти за границу адресного пространства, выполнение команд обращения к операционной системе, арифметические "прерывания".

Время переключения на программу обработки прерывания равняется 50 тактам.

2.4. Режимы выполнения

Процессор ОМ имеет два режима выполнения: режим пользователя и привилегированный режим - режим ядра ОС. В режиме пользователя не выполняются некоторые привилегированнные команды, связанные, в основном, с управлением работой каналов ввода/вывода, управлением пакетом состяний, таймером. В режиме ядра выполняются все команды ОС и блокируются прерывания, тем самым обеспечивается корректная обработка прерывний. Режим выполнения устанавливается из текущего пакета состояния в ходе выполнения операции замены (прерывания).

2.5. Особенности программирования.

Время выполнения программы на ОМ зависит от порядка следования команд: переставив две команды, мы, вообще говоря, изменяем время выполнения программы за счет изменения времени блокировки конвейера команд (см. п. 1.1). Для каждой программы существует такой порядок команд, сохраняющий семантику этой программы, при котором суммарное время блокировки конвейера команд минимально.

Другим источником сокращения времени выполнения программы является замена итерационных циклов векторными командами (там, где это возможно) и использование возможности зацепления векторных команд.

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


3. ОПЕРАЦИОННАЯ СИСТЕМА ОСНОВНОЙ МАШИНЫ

Операционная система основной машины (ОС ОМ) имеет многофункциональное назначение: обеспечивает пакетную обработку и работу в режиме реального времени. Главная цель - эффективно решать задачи научного характера, имеющие большой объем вычислений, большой объем обрабатываемой информации, а также задачи управления объектами в реальном масштабе времени.

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

3.1. Базовые объекты ОС.

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

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

Для этого подхода характерно наличие двух механизмов межпрограммного взаимодействия: один - для подпрограмм, выполняющихся в одном адресном пространстве, другой - для подпрограмм, выполняющихся в разных пространствах. Во втором случае параметры и результаты могут быть только значениями. Передача параметров-значений может трактоваться как передача сообщения от одной задачи к другой, а передача результата - как передача ответа. Эти передачи осуществляет ядро ОС, которому доступна вся память.

Таким образом, базовыми объектами ОС являются задачи и сообщения как средство взаимодействия между задачами.

Рассмотрим примитивы управления этими объектами.Примитивы реализуются ядром ОС.

Существуют следующие примитивы обмена сообщениями:

1. ПОСЛАТЬ СООБЩЕНИЕ СИНХРОННО (Nз,Nвх,СООБЩ,ОТВЕТ)
где Nз - уникальный идентификатор задачи-получателя сообщения, Nвх - идентификатор входа в задаче-получателе, СООБЩ - адрес сообщения и его длина, ОТВЕТ - адрес буфера, куда будет помещен ответ, и его длина.

2. ПОСЛАТЬ СООБЩЕНИЕ АСИНХРОННО (Nз,Nвх,СООБЩ,ОТВЕТ) <ИДС>
где Nз - уникальный идентификатор задачи-получателя сообщения, Nвх - идентификатор входа в задаче-получателе, СООБЩ - адрес сообщения и его длина, ОТВЕТ - адрес буфера, куда будет помещен ответ, и его длина. ИДС - идентификатор отправленного сообщения (выходной параметр).

3. ПРИНЯТЬ СООБЩЕНИЕ (Nв1,...,Nвn,СООБЩ) <ИДС,Nвi>
где Nв1,...,Nвn - список входов в задачу, по которым разрешен прием сообщений. СООБЩ - адрес буфера и его длина, куда будет помещено сообщение. ИДС - идентификатор принятого сообщения, Nвi - идентификатор входа, по которому было получено сообщение. ИДС и Nвi - выходные параметры.

4. ПОСЛАТЬ ОТВЕТ (ИДС, ОТВЕТ)
где ИДС - идентификатор принятого сообщения, на который посылается ответ. ОТВЕТ - адрес и длина посылаемого ответа.

5. ЖДАТЬ ОТВЕТА (ИДС1,...,ИДСn) <ИДСi>
где ИДС1,...,ИДСn - список идентификаторов отправленных сообщений, по которым ожидаются ответы. ИДСi - идентификатор отправленного сообщения, на который получен ответ.

6. ЖДАТЬ ВРЕМЯ (Т)
где Т - интервал времени, истечения которого ожидает выдавшая примитив задача.

Кроме перечисленнных примитивов возможны примитивы, которые составляют комбинации примитивов 3, 5 и 6. Существует разновидность примитива 4 - ПОСЛАТЬ ОТРИЦАТЕЛЬНЫЙ ОТВЕТ - в результате выполнения которого будет сгенерирована исключительная ситуация в задаче-отправителе. Семантически примитивы 1-5 соответствуют конструкциям: вызов подпрограммы, вход в подпрограмму и возврат из нее.

Задача, давшая примитив ПОСЛАТЬ СООБЩЕНИЕ СИНХРОННО, откладывается до момента выдачи примитива ПОСЛАТЬ ОТВЕТ ее задачей-партнером и переписи ответа в буфер под ответ. Соответственно, задача, давшая примитив ПРИНЯТЬ СООБЩЕНИЕ, либо получает сообщение, если оно есть, либо откладывается до тех пор, пока от одного из ее партнеров не поступит примитив ПОСЛАТЬ СООБЩЕНИЕ и сообщение не перепишется в буфер. Задача, давшая примитив ПОСЛАТЬ СООБЩЕНИЕ АСИНХРОННО, будет продолжать свое выполнение до тех пор, пока не будет выдан явный примитив ожидания сообщения, ответа, времени либо их комбинации. Перепись сообщения из адресного пространства задачи - отправителя в адресное пространство задачи-получателя происходит без промежуточных системных буферов, поэтому для корректной работы повторно использовать память, в которой располагается сообщение, можно только после получения соответствующего ответа на данное сообщение.

Для задач ОС уникальные идентификаторы фиксированы. Для пользовательской задачи уникальный идентификатор вырабатывается при ее образовании и может быть известен другой задаче через посредство задачи ОС. Уникальные идентификаторы отправленных и полученных сообщений вырабатываются при выполнении примитива ПОСЛАТЬ СООБЩЕНИЕ.

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

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

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

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

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

используемых трактах: задача пользователя - задача ОС, и позволяет самим системным задачам решать, кто имеет право к ним обращаться. Так, например, псевдозадача управления оперативной памятью разрешает обрашаться с командами запроса и возврата памяти только Инициатору-Терминатору, а с командами запроса и возврата буферов-только псевдозадаче обмена с внешней памятью.

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

3.2. Инициатор-Терминатор

Инициатор-терминатор (ИТ) является центральной задачей ОС. Основная функция ИТ - порождение задач и их завершение. В частности, именно ИТ присваивает уникальные идентификаторы вновь созданным задачам. ИТ разрешает все конфликты, возникающие в системе: из-за нехватки памяти оперативной или массовой, из-за тупиков, в результате синхрозахватов в Файловой системе.

ИТ управляет выполнением заданий. Максимальное число одновременно обрабатываемых заданий в пакетном режиме устанавливается на этапе генерации системы. Сведения о введенном в машину задании ИТ получает от задачи ВВОДа заданий в виде имени вводного справочника задания, идентификатора задания в локальной сети и паспортной информации. В паспортной информации содержится имя пользователя, шифр задания, пароль, время выполнения задания. В справочнике задания обязательно должно быть указание на файл, содержащий текст на языке управления заданиями. ИТ контролирует пароль на имя пользователя и создает задачу, в которую загружается системная программа (в виде двоичного кода) инициации задания. Функциями этой программы являются создание рабочего справочника задания, справочника выводных файлов, создание в выводном справочнике стандартного выводного файла, установление стандартной среды поиска в задаче АРХИВ.

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

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

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

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

Основными командами, с которыми ИТ обращается к другим компонентам ОС при выполнении пакетного задания, являются запрос и освобождение оперативной памяти (к псевдозадаче Управления оперативной памятью ), создание и ликвидация задачи (к псевдозадаче управления задачами).

Удовлетворение запроса на оперативную память может быть отложено до момента освобождения памяти другой задачей. Задача управления памятью ведет очередь неудовлетворенных запросов.

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

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

При установке контрольной точки ИТ останавливает задачу обращением "Остановить задачу" к псевдозадаче управления задачами. В ответ ИТ получает информацию о состоянии задачи - идентификаторы тех задач, ответы от которых ждет данная задача. Задаче с контрольными точками разрешается общаться только с системными задачами АРХИВ, ОБМЕНМД, ОБМЕНМП. ИТ сообщает этим задачам идентификатор задачи пользователя, для которой строится контрольная точка. Задачи ОБМЕНМД и ОБМЕНМП заканчивают обмены, заказанные данной задачей.

Получив ответы от обменнных задач и задачи АРХИВ, ИТ запускает задачу ЖУРНАЛ. ЖУРНАЛ, опрашивая системные задачи, заносит в файл следующие записи: список открытых файлов, установленная среда поиска (информация от задачи АРХИВ), время выполнения, состояние задачи, состояние каналов связи, состояние регистров и оперативной памяти задачи (информация от псевдозадачи управления задачами), паспортная информация ( от Инициатора-Терминатора).

Получив управление от задачи ЖУРНАЛ, ИТ сообщает задаче АРХИВ о построении контрольной точки для данной задачи. АРХИВ приводит в согласованное состояние файл-журнал и модифицированные файлы той задачи, для которой строится контрольная точка(см. 3.3.8). После этого ИТ возобновляет выполнение задачи пользователя - выдает команды "Продолжить задачу" для псевдозадачи управления задачами и "Продолжить работу" для задачи АРХИВ.

Механизм контрольных точек используется при разрешении конфликтов по нехватке массовой памяти. ИТ выбирает одну из задач, попавших в тупик из-за нехватки массовой памяти, и устанавливает для нее контрольную точку. После построения контрольной точки задача ликвидируется и освобождается массовая и оперативная память.

Продолжение выполнения с контрольной точки происходит после отказов ОМ и ОС, либо после разрешения конфликта по массовой памяти. ИТ запрашивает оперативную память под задачу (ее размер имеется в файле-журнале), создает задачу и запускает задачу ЖУРНАЛ для действий, обратных построению контрольной точки. Журнал сообщает задачам ОБМЕНМД, ОБМЕНМП и АРХИВ информацию, характеризующую задачу пользователя; информирует псевдозадачу управления задачами о состоянии задачи, времени выполнения, состоянии каналов связи; заполняет в соответствии с содержимым файла-журнала память, в которой хранятся копии регистров, и собственно саму оперативную память задачи.

Получив управление от задачи ЖУРНАЛ, ИТ продолжает выполнение задачи пользователя - выдает команды: "Продолжить задачу" для псевдозадачи управления задачами и "Продолжить работу" для задач ОБМЕНМД, ОБМЕНМП и АРХИВ.

3.3. Файловая система

Функциями файловой системы (ФС) ОС ОМ являются:

3.3.1. Внешняя память ОМ

Объекты файловой системы хранятся на внешней памяти ОМ. Внешняя память ОМ состоит из дисковой и массовой памяти.

Дисковая память состоит из совокупности несъемных дисков, управляемых контроллерами (или дисковыми серверами), которые подключены к основной машине через каналы (пропускная способность 10 Мгб/сек).

Память на дисках представляет собой последовательность блоков по 512 64-х разрядных слов. Контроллер дисковой памяти (или дисковый сервер) реализует команды обмена между оперативной памятью основной машины и блоками диска. Одной операцией обмена (записи или чтения) можно задать обмен с совокупностью смежных блоков на диске.

Наблюдается существенный дисбаланс в соотношении скорости процессора основной машины и темпом обмена с дисками.

Для того, чтобы сбалансировать процессор с внешней памятью, используется массовая интегральная память емкостью до 256 Мгб, темпом обмена 0,64 мксек/слово, которая подключена через каналы с пропускной способностью 200 Мгб/сек.

Таким образом, внешняя память ОМ является двухуровневой: первичная внешняя паямть - интегральная массовая память и вторичная - дисковая память.

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

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

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

3.3.2. Архитектура файловой системы

.

При проектировании и реализации такой большой и сложной системы, какой является ФС ОМ, применялся метод декомпозиции системы на отдельные замкнутые компоненты.

Базовые объекты ОС - задачи являются одновременно и элементами структуризации. Файловая система ОС ОМ состоит из системной задачи АРХИВ, псевдозадач ОБМЕНМД и ОБМЕНМП и программ, реализующих методы доступа к файлам - кластеров, выполняющихся в адресном пространстве задачи пользователя.

Выбор такой структуры ФС объясняется функциональными особенностями ФС, аппаратными особенностями ОМ, стремлением уменьшить накладные расходы по операциям ввода/вывода.

Расположение части ФС в задаче пользователя (кластеров, реализующих доступ к файлу и содержащих в своем теле буфер для обмена с внешними устройствами) объясняется стремлением снизить накладные расходы по доступу к отдельной записи файла. Вынесение кластера из задачи пользователя приводило бы к переключению задач при каждом обращении к файлу.

Реализация задач ОБМЕНМД и ОБМЕНМП со статусом псевдозадачи объясняется тем, что для задания обменов по каналам требуется привилегированный режим. Задача АРХИВ выполняется в отдельном адресном пространстве, поскольку число обращений к задаче АРХИВ по сравнению с числом обращений к задаче ОБМЕН за один сеанс работы с файлом мало и накладные расходы сравнительно невелики.

3.3.3. Структура ФС на внешней памяти

ФС на логическом уровне является классической. Совокупность объектов ФС на внешней памяти составляет дерево. Узлами дерева являются справочники, листьями - файлы или пустые справочники. Корнем дерева является корневой справочник файловой системы. Каждый элемент дерева имеет имя. Имя уникально относительно предыдущего узла. Любой объект дерева однозначно именуется полным составным именем относительно корня архива. Специальные объекты ФС -синонимы позволяют преобразовывать имена. Синоним позволяет заменить имя в справочнике альтернативным, которое может быть как простым, так и составным.

Справочник состоит из элементов. Каждый элемент описывает либо объект ФС более низкого уровня по дереву, чем данный справочник, либо синоним. Объекты первого типа называются элементами типа ссылки, второго - элементами типа связи.

Элемент справочника типа связи содержит имя элемента - входное имя синонима, тип, выходное (альтернативное) имя синонима.

Элемент справочника типа ссылки содержит имя элемента, тип - файл или справочник, уникальный идентификатор объекта, таблицу отображения описываемого объекта на внешнюю память, описание прав доступа, имя владельца объекта, поля атрибутов файла, открытых для изменения пользователем, дополнительную информацию (дату создания, модификации и т.п.).

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

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

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

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

Перемещение объектов с одного уровня внешней памяти на другой осуществляется задачей АРХИВ в результате команд открытия соответствующих объектов.

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

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

Если файл открывается на диске, то после определения местонахождения файла на диске задача ОБМЕНМД настраивается на те области на диске, где находится требуемый файл.

При открытии файла по полному составному имени задача АРХИВ, начиная от корня, просматривает всю последовательность справочников, выбирая на следующем шаге соответствующий элемент по имени.

Существует возможность работать по коротким именам. Эту возможность поддерживает в ФС среда поиска. Каждому заданию соответствует отдельная среда поиска, которая задается последовательностью имен справочников. При обращении по короткому имени поиск осуществляется в той последовательности справочников, какую задает среда поиска. В начале выполнения задания для него формируется стандартная среда поиска, которую можно сменить явным обращением к задаче АРХИВ.

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

3.3.4. Распределение дисковой памяти

Распределение дисковой памяти выполняется задачей АРХИВ автоматически при помощи таблиц распределения памяти. Каждый диск имеет собственную таблицу распределения памяти. Таблица создается при начальной генерации системы. В целях повышения надежности по отношению к сбоям таблица распределения на диске хранится в двух экземплярах (см. 3.3.7.). Одним из элементов таблицы распределения является карта памяти. Карта памяти представляется в виде шкалы, в которой отмечаются единицей все занятые блоки и нулем все свободные.

При запуске ОС задача АРХИВ переносит карты распределения памяти с дисков в массовую память.

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

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

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

Возвращаемые области либо помечаются свободными (если нет свободных братьев), либо вкупе со свободным братом образуют удвоеннную область, которая возвращается на более высокий уровень. Братьями являются только те области, которые получились делением более крупной области.

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

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

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

Данный алогоритм более эффективен при решении проблемы уплотнения по сравнению с другими известными алгоритмами (первый подходящий, наиболее подходящий).

3.3.5. Распределение массовой памяти.

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

Объекты ФС отображаются на одну или две области массовой памяти (вторая область - фрагмент приращения). Отображения располагаются в таблице активных файлов задачи ОБМЕНМП.

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

пись исходного фрагмента приращений в новый; заменяется отображение в задаче ОБМЕНМП. Процесс будет повторен таким образом до тех пор, пока фрагмент приращений не станет сравнимым с начальным файлом, после чего будет запрошен удвоеннный размер файла, в него будет переписан исходный файл и фрагмент приращений, затем обработка будет продолжена по общей схеме.

Распределение массовой памяти происходит по такому же алгоритму, как и распределение дисковой памяти. Вся память делится на области. Минимальный размер области - блок 512 слов. Последующие размеры областей: 2*512, 4*512, ...

При наступлении фрагментации происходит уплотнение массовой памяти с модификацией отображений в таблице активных файлов задачи ОБМЕНМП.

Начальный размер фрагмента приращений равен 25% от размера файла и далее удваивается до размера файла. Для файла в 128 блоков приращения будут увеличиваться таким ступенями: 32, 64, 128. На любом этапе увеличения фрагмента приращений коэфициент использования внешней памяти будет не хуже 75%.

Следует отметить, что перепись из фрагмента в фрагмент осуществляется внутри контроллера массовой памяти, без накладных расходов по передаче по каналам и обработке прерываний.

3.3.6. Синхронизация доступа к объектам.

Существует два режима, в которых открывются файлы: совместный (файл только читается) и монопольный (в файле разрешены запись и чтение). Задача АРХИВ ведет очередь ожидания освобождения файла при его монопольном использовании.

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

Работа со справочником ведется только через задачу АРХИВ. При захватах файлов задачи могут попасть в тупик. АРХИВ распознает тупики и оповещает об этом задачу ИНИЦИАТОР - ТЕРМИНАТОР.

3.3.7. Борьба с авариями.

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

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

Результат "жестких аварий" - утрата на внешней памяти отдельных объектов или целых поддеревьев. Основным методом борьбы с "жесткими авариями" является архивное копирование файловой системы .

Файловая система ОС ОМ устойчива к "мягким авариям": согласованное состояние критической информации поддерживается ФС без привлечения дополнительных обслуживающих программ.

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

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

Остановимся подробнее на том, каким образом ФС обеспечивает устойчивость к авариям.

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

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

Сосредоточим теперь внимание на обеспечении согласованного состояния таблицы распределения свободной памяти и таблицы отображения объектов ФС на внешнюю память.

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

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

После открытия файла таблица отображения файла на диски находится в таблице активных файлов задачи ОБМЕНМД. При увеличении размера необходимо расширить таблицу отображения. Задача АРХИВ производит поиск новой области приращений через текущую таблицу распределения памяти. После получения необходимой области таблица отображения в задаче ОБМЕНМД расширяется. До закрытия файла расширение файла может происходить неоднократно по той же схеме: поиск в текущей таблице распределения - наращивание таблицы отображения в задаче ОБМЕНМД. Одновременно такая же работа может происходить и с другими файлами для других задач: все запросы на расширение файлов проходят через текущую таблицу распределения памяти.

Изменения попадают в исходную таблицу, а затем на диск при закрытии файла. Закрытие файлов происходит строго синхронно. Команды закрытия выстраиваются в очередь к задаче АРХИВ в отличие от команд открытия, выполняемых параллельно.

Закрытие файла происходит следующим образом. АРХИВ получает таблицу отображения из задачи ОБМЕНМД. Исходную таблицу отображения получаем из элемента справочника, относящегося к модифицируемому файлу. Сравнивая эти таблицы отображений, получаем все изменения, какие претерпел данный файл за время его обработки. Эти изменения заносятся в исходную таблицу распределения, и она отображается в таблицу распределения памяти на диск. На диске данная таблица хранится в двух экземплярах. Последовательные обновления таблицы распределения свободной памяти идут поочередно то в один экземпляр, то в другой. После очередного обновления таблицы распределения сохраняется и предыдущая версия таблицы. Для того, чтобы отследить хронологию, таблицы распределения помечаются уникальным идентификатором(в начале таблицы и в ее конце). Выработка уникальных идентификаторов ведется задачей АРХИВ. Уникальный идентификатор - это счетчик, устанавливающийся в нуль при генерации ФС и увеличивающийся на единицу при каждом запросе следующего идентификатора.

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

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

В случае отказов ОМ на любом из этапов работы с файлом система гарантирует согласованное состояние таблицы распределения памяти и таблицы отображения файла на диск без потери пространства на диске. Рассогласованным может оказаться лишь содержимое самого файла.

Рассмотрим более подробно те действия, которые осуществляет ФС в начале работы (после перевызова ОС).

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

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

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

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

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

Используемый механизм позволяет поддерживать в согласованном состоянии критическую системную информацию, но не содержимое файлов. Однако, ФС ОС ОМ предоставляет дополнительные возможности, преодолевающие и этот недостаток.

3.3.8. Атомарные шаги.

Работу пользователя с ФС можно представить в виде последовательности атомарных шагов. Атомарность шага состоит в том, что видимое другим пользователем состояние ФС меняется только при успешном завершении атомарного шага. Другие варианты окончания шага - "мягкие аварии", тупики - не должны менять видимое другим пользователем остояние объектов ФС. Внутри атомарного шага разрешены все операции над объектами ФС: модификация файлов, уничтожение файлов, создание новых объектов - файлов и справочников.

Кроме того, пользователь может сам дать команду ВОЗВРАТ, по которой произойдет возврат состояния объектов ФС к началу атомарного шага.

Для поддержки механизма атомарных шагов ФС представляет пользователю дополнительно три команды: НАЧАЛО, КОНЕЦ, ВОЗВРАТ.

Командой НАЧАЛО начинается атомарный шаг, который будет длиться либо до команды КОНЕЦ, либо будет закончен командой ВОЗВРАТ, по которой из объектов ФС будут изъяты все изменения, занесенные с начала атомарного шага.

Данный механизм служит основой для реализации контрольных точек в ОС ОМ. Задание, выполняемое в ОС ОМ, может целиком выполняться в рамках одного атомарного шага; отдельные шаги задания могут быть приравнены к атомарным шагам или шаг задания может быть разбит на последовательность атомарных шагов.

Атомарный режим не является единственным необходимым, поскольку есть такие применения, которые требуют в случае аварии сохранить состояние файла, наиболее близкое к моменту аварии (например, при использовании интерактивного редактора). Поэтому выбор режима - атомарный или обычный - зависит от пользователя.

Механизм атомарных шагов в ФС ОС ОМ реализуется следующим образом.

При открытии файла на модификацию внутри атомарного шага на диске или через "окно" в массовой памяти ФС выполняет следующие действия:

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

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

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

Затем происходит обработка элементов справочников модифицированных файлов, которая заключается в замене таблиц отображения: исходная таблица отображения заменяется на дубль. Все области, описанные в исходной таблице отображений, освобождаются и в текущей таблице распределения, и в исходной таблице распределения. Области, описанные в таблице -дубле, отмечаются как занятые в исходной таблице распределения.

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

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

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

Создание файлов сводится к модификации файла с пустой исходной таблицей отображения. Более интересно уничтожение.

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

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

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

3.3.9. Контроль прав доступа.

Контроль прав доступа предназначен для защиты справочников и файлов от несанкционированного доступа.

При поиске объекта задача АРХИВ контролирует права доступа ко всем справочникам, находящимся на пути к файлу, и к самому файлу. Права доступа задаются при создании файла или справочника и хранятся в элементе справочника, описывающем этот объект. Права доступа к корню хранятся в задаче АРХИВ.

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

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

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

3.3.10. Обнаружение тупиков.

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

Использование дисковой памяти регламентируется бюджетом.

В задаче АРХИВ периодически запускается процедура определения тупика. Эта процедура анализирует состояние очередей к массовой памяти, файлам, общий объем массовой памяти, которой владеют задачи, и обнаруживает тупик, если он существует.

Тупик может быть полным (конфликт по файлам) или частичным (конфликт из-за нехватки массовой памяти).

Обнаружив тупик и его вид, задача АРХИВ сообщает об этом задаче ИНИЦИАТОР-ТЕРМИНАТОР. Кроме того, в случае частичного тупика сообщается относительная стоимость его разрешения - то есть время, требуемое для выталкивания файлов из массовой памяти на диски.

ИНИЦИАТОР-ТЕРМИНАТОР принимает решение о разрешении тупика на основании его вида, стоимости разрешения, приоритетов задач.

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

Разрешением полного тупика может быть только откат к контрольной точке.

3.4. Реализация методов доступа

3.4.1. Кластеры в ОС ОМ.

В данном разделе мы будем понимать файл в упрощенном смысле как поименованную область на внешней памяти, состоящей из набора записей данных.

Единицей обмена между программой и ФС является экземпляр записи. За одно обращение к ФС можно занести в файл экземпляр записи или извлечь его из файла. Каким образом записи располагаются внутри файла, то есть структура файла, определяется методом доступа к записи в файле (или просто методом доступа к файлу).

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

Итак, при реализации методов доступа необходимо обеспечить:

1) независимость программ от операционной среды выполнения;

2) гибкие средства для введения новых методов в систему и новых реализаций уже существующих методов.

Для решения поставленных проблем в систему программирования ОМ (СП ОМ) был введен механизм абстракций.

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

объект по отношению к структуре, элементом которой он является,

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

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

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

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

Конкретный объект определяется в момент компоновки программы из модулей и называется экземпляром кластера или просто кластером. Реализация кластера скрыта от использующей его программы.

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

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

Кластер объединяет набор операций, реализующих некоторый объект, и содержит внутри себя всю информацию, характеризующую данный объект - локальную память и локальные кластеры (то есть кластеры, которые недоступны вне модулей, в которых они определены). Для программ, использующих данный кластер, он выступает как набор операций над объектом данного класса.

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

Например, программа может содержать следующее описание:

СLАSS	ПФ
ЕNТRУ	ОТК,ЗАК,ЗП,ЧТ
.
.
ОТК LAB
.
.
ЗАК LAB
.
.
ЗП  LAB
.
.
ЧТ  LAB
.
.
ЕND

СLАSS ПФ вводит абстрактное понятие ПФ - последовательный файл. Внутри класса содержатся структуры данных, реализующие последовательный файл (указатели, буфера), а также множество операций над ним: ОТК - открытие файла, ЗАК - закрытие файла, ЗП - запись в файл, ЧТ - чтение.

После того, как описаны такие абстрактные объекты, в программе можно использовать нововведенное понятие для работы с конкретным объектом - экземпляром кластера. Для этого необходимо объявить экземпляр кластера. Для объявления нового экземпляра используется конструкция DЕFINЕ.

Например, конструкция ПФ DЕFINЕ Ф1 объявляет экземпляр кластера с именем Ф1. После порождения экземпляра становятся определенными операции над кластером:

/Ф1/ОТК - открытие кластера Ф1

/Ф1/ЗАК - закрытие кластера Ф1

/Ф1/ЗП - запись в кластер Ф1

/Ф1/ЧТ - чтение из кластера Ф1

В программе можно определить произвольное число экземпляров некоторого класса. Например:

СLАSS   ПФ   описание класса
.
.
.
ЕND
ПФ  DЕFINЕ  Ф1	объявление двух экземпляров
ПФ  DЕFINЕ  Ф2	Ф1 и Ф2 по классу ПФ.
IDENT   ПРОГ
.
.
R	/Ф1/ОТК  открытие кластера Ф1
R	/Ф2/ОТК  открытие кластера Ф2
.
.
.
R	/Ф1/ЧТ   чтение из файла Ф1
R	/Ф2/ЗП   запись в файл Ф2
.
.
.
R	/Ф1/ЗАК  закрытие файлов
R	/Ф2/ЗАК
.
.
END 

Из примера видно, что программа состоит из двух разделов. Первый раздел состоит из описания класса и объявления экземпляров кластеров. Второй раздел, в котором сосредоточена вся содержательная работа, - использование кластеров. Оба этих раздела можно разнести и по времени (раздельно транслировать), и по пространству (хранить в разных библиотеках). Во втором разделе - то есть собственно в программе - абстрактный объект выступает как набор процедур.

Раздельность описания, объявления и использования кластеров, а также существование эквивалентных классов дает максимальный эффект использования кластерной техники.

Эквивалентными классами называются такие классы, по которым в результате объявления порождаются экземпляры кластеров с одинаковым набором имен операций и одинаковым набором параметров по соответствующим операциям.

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

Более того, в терминах работы с последовательным файлом можно организовать работу с программой на внешней машине. Интерпретация команды открытия для такого файла есть установление связи, закрытия - разрыв связи. Запись в такой файл - это передача информации программе на внешней машине, чтение - прием информации с внешней машины. Вся информация, необходимая для установления связи (номер внешней машины, имя программы на внешней машине и т.д.) передается в качестве параметров для экземпляра кластера, поскольку в абстрактном последовательном файле такие параметры не предусмотрены в процедуре открытия.

Используя абстрактные объекты, можно писать программы, которые не зависят от внешнего окружения, от реализации других абстрактных объектов.

В ОС ОМ существует возможность объявлять экземпляры внешнего окружения (операционной среды) на языке управления заданиями, тем самым обеспечивая независимость программ от внешней среды.

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

3.4.2. Реализация методов доступа в процессоре массовой памяти.

Особенностью рассматриваемой ФС является наличие программируемого процессора массовой памяти.

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

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

Разработка новых произвольных методов доступа к файлам может происходить в два этапа. На первом этапе метод доступа реализуется в виде отдельного кластера в оперативной памяти. После "обкатки" нового метода доступа он может быть перенесен в процессор массовой памяти. Кластер теперь будет использоваться только для связи с методом доступа в массовой памяти. Более того, может одновременно существовать несколько реализаций одного метода доступа.

Для обеспечения требуемой гибкости в системе управления массовой памятью используется, как и в ОС ОМ, кластерная технология.

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

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

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

Адрес локальных данных и тип файла хранятся в таблице активных файлов в задаче ОБМЕНМП для каждого открытого файла. Увязывание объекта с программой происходит при каждом обращении к операции: первым параметром операции всегда является адрес локальных данных.

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

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

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

Реализация при помощи кластерной техники позволяет добиться желаемой гибкости при добавлении новых методов доступа, а также при модификации существующих, без изменения задачи ОБМЕНМП и кластеров, выполняющихся в адресном пространстве задачи пользователя (и тем более самих программ пользователя).

3.5. Кластеры файловой системы.

ФС ОС ОМ состоит из системной задачи АРХИВ, псевдозадачи ОБМЕНМД, псевдозадачи ОБМЕНМП и программ, реализующих методы доступа к файлам, выполняющихся в адресном пространстве задачи пользователя (см. рис.3).

Расположение программ доступа в пространстве пользователя позволяет снизить накладные расходы по доступу к отдельной записи файла. Для реализации программ методов доступа в файловой системе ОС ОМ используется кластерная техника.

При декомпозиции ФС на отдельные замкнутые компоненты элементами структуризации являются задачи ОС - АРХИВ, ОБМЕНМД, ОБМЕНМП, классы методов доступа. Такая декомпозиция позволяет представить ФС в виде многоуровневой иерархии элементов (см. рис.17).

Существует три основных уровня, на которые расслаивается файловая система: уровень структурированных файлов, уровень базового файла и физический уровень работы с файлами.

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

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

Задачи АРХИВ, ОБМЕНМД и ОБМЕНМП реализуют физический уровень работы с файлами, открывающихся в дисковой и массовой памяти. Эти компоненты ФС решают вопросы отображения объектов на внешнюю память, обеспечения секретности, синхронизации, сохранности, именования, обменов, распределения внешней памяти, хранения атрибутов. Данный уровень выполняет операции открытия, закрытия, создания, уничтожения объектов, записи или чтения группы блоков, расширения пространства в рамках максимального размера, записи или чтения атрибутов.

Уровень базового файла реализуется классом управления базовым файлом прямого доступа с длиной записи в один блок. Базовый файл реализует соответствующие обращения к задачам АРХИВ, ОБМЕНМД, ОБМЕНМП, управляет наращиванием файла в рамках максимального размера. Класс включает операции открытия, закрытия, создания, ликвидации, записи, чтения, записи и чтения атрибутов.

Классы управления структурированными файлами реализуют определеннную структуру представления в рамках базового файла и обеспечивает необходимый набор операций.

Стандартными структурированными файлами являются последовательные, прямые и ключевые файлы. Кроме того файлы подразделяются на файлы с постоянной и с переменной длиной записи, на файлы, размер записи которых вычисляются с точностью до байта либо до слова.

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

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

Ключевые файлы помимо стандартных операций имеют операции занесения записи по ключу, выборки записи по ключу, записи или чтения атрибутов файла.

На каждом уровне представления файла в файловой системе файл имеет соответствующие атрибуты. На уровне задач АРХИВ, ОБМЕНМД, ОБМЕНМП такими атрибутами является таблица отображения файла на внешние устройства, права доступа, режим синхронизации.

Атрибутами базового файла являются текущий и максимальный размер файла.

Атрибутом последовательного файла является размер записи и адрес последней записи.

Часть атрибутов защищена (карта памяти), доступна только для тех компонентов, которые являются их владельцами (АРХИВ, ОБМЕНМД, ОБМЕНМП). Некоторые атрибуты могут меняться специальными командами (смена прав доступа, наращивание размера файла). Для остальных атрибутов обеспечивается их хранение и выборка по ключам. При создании файла соответсвующий кластер заносит характеризующие его атрибуты в область атрибутов файла со свойственным его классу ключом. При последующих открытиях кластер выбирает атрибуты по ключу. Отсутствие атрибута с данным ключом будет означать, что кластер не может обрабатывать структуру открытого файла (то есть файл создавался кластером другого класса). Замена класса в иерархии на эквивалентный (см. рис.17) не отразится на компоненте, использующем этот класс. Например, в файловой системе существуют типы базового файла для файлов на диске и в массовой памяти. Эти типы эквивалентны. Структурированные файлы одинаковым образом работают с такими файлами. Тип базового файла, с которым работает последовательный, задается как параметр при объявлении экземпляра последовательного файла на этапе компоновки.

3.6. Транспортная служба локальной сети ЭВМ.

Транспортная служба ОС ОМ (будем в дальнейшем обозначать ее ТС) разработана для высокоскоростной локальной сети ЭВМ "Электроника ССБИС", в которую входят основные машины (ОМ), внешние машины (ВМ), управляющие машины (УМ). Каждой входящей в сеть ЭВМ поставлен в соответствие свой уникальный сетевой номер. Средством комплексирования является высокоскоростной асинхронный канал ввода-вывода. Локальная сеть ЭВМ "Электроника ССБИС" - это сеть с топологической схемой "точка-точка", то есть высокоскоростным каналом ввода-вывода связана каждая пара ЭВМ, между которыми могут возникать потоки полезной информации.

Наличие в операционной системе основной машины транспортного сервиса предполагает существование в ней псевдозадачи ОС ОМ, отвечающей за транспортные функции, которую в дальнейшем будем называть транспортной задачей или станцией.

Транспортная станция:

Взаимодействие ТС с другими задачами, выполняющимися в ОМ, осуществляется через аппарат сообщений, поддерживаемый ядром ОС ОМ. Любой заказ на пользование услугами ТС оформляется как сообщение для ТС. Ответ по исполнении заказа транспортной службой - ответное сообщение. Согласно логике построения аппарата сообщений, на каждое заданное сообщение выдача ответного обязательна.

3.6.1. Услуги транспортной службы.

Основная цель ТС - обеспечить ее пользователей (будем их называть абонентами ТС), расположенных на разных ЭВМ сети, средствами прозрачной и надежной передачи информации.

Требование прозрачности означает, что ТС не ограничивает содержимое, формат или кодирование пользовательской информации.

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

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

3.6.2. Услуги фазы установления соединения.

Транспортное соединение может быть установлено между двумя абонентами, находящимися на соседних ЭВМ локальной сети, то есть на таких ЭВМ, которые связаны между собой асинхронным каналом ввода-вывода. Абоненты, находящиеся на ЭВМ, напрямую не соединенных между собой таким каналом, устанавливать между собой транспортное соединение не могут.

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

3.6.3. Услуги фазы переноса данных.

Транспортное соединение - это ассиметричный путь следования информации. Взаимодействие абонентов по установленному соединению - это взаимодействие типа "удаленного вызова процедуры". Оно происходит по инициативе одной стороны (активная сторона), посылающей свою информацию. Другая сторона (пассивная) может выполнять пересылку лишь в ответ на инициативу активной стороны. Активной стороной при обмене информацией по соединению является та же сторона, что и при установлении соединения. Протокольная единица данных, посылаемых от активной стороны к пассивной, называется сообщением-вопросом или просто вопросом. Протокольная единица данных, посылаемых пассивной стороной, называется ответом (сообщением-ответом). Сообщение-ответ может быть отправлено лишь в ответ на ранее полученное соответствующее ему сообщение-вопрос. Вопрос может состоять из произвольного числа фрагментов, выдаваемых абонентом последовательно. Ответ передается одним обращением к транспортной задаче и является одновременно и подтверждением получения пассивной стороной соответствующего вопроса. Все сообщения, отправляемые по транспортному соединению, считаются равноприоритетными и не могут при передаче обгонять друг друга. Прием сообщений от партнера по соединению ведется не в специальные буфера ТС, а в собственные буфера пользователя, ранее им для этой цели предоставленные. Транспортная служба не гарантирует доставку сообщений. Сообщения при передаче могут пропадать. Решение о повторении обмена сообщениями принимает абонент - активная сторона.

3.6.4. Услуги фазы терминации соединения.

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

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

3.6.5. Порт и точка доступа.

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

Каждый абонент ТС имеет право работать с произвольным числом портов. Каждому выбранному для работы порту абонент присваивает произвольный номер от 0 до 255.

При оформлении заказов на пользование услугами ТС по установлению соединения порт идентифицируется присвоенным ему номером.

При оформлении заказов на пользование услугами ТС по переносу данных , терминации соединения, порт идентифицируется номером точки доступа. Этот номер транспортная служба сообщает абоненту при установлении транспортного соединения.

3.6.6. Примитивы транспортной службы.

Услуги ТС с точки зрения пользователя есть некоторый базовый набор выполняемых ею функций, к каждой из которых можно обратиться заданием отдельного примитива (средство, с помощью которого транспортные услуги становятся доступными абоненту ТС).

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

Примитивы установления соединения.

Активные операции по установлению транспортного соединения предполагают указание абонентом ключа желаемого партнера (примитив "Запрос соединения"). Положительный ответ ТС на этот примитив означает, что соединение с желаемым партнером установлено.

Пассивные операции могут быть двух типов:

  1. Аналогичные активным (примитив "Только ты!").
  2. Партнер заранее неизвестен (примитив "Кто там?").

Положительный ответ ТС на второй примитив означает, что есть подходящий партнер-активная сторона. Теперь абонент может согласиться на установление соединения с этим партнером (примитив "Ответ соединения", положительный ответ ТС на который означает, что соединение установлено ) или не согласиться (примитив "Отказ соединения", положительный ответ на который извещает о новом подходящем партнере и необходимости принятия решения об установлении соединения с ним).

При установлении соединения партнеры идентифицируются по ключу, состоящему из трех полей: номер ЭВМ в сети, идентификатор задания и номер порта.

Примитивы переноса данных

Положительный ответ ТС на примитив "Передай фрагмент" означает, что фрагмент вопроса передан. Положительный ответ ТС на примитив "Передай последний фрагмент и прими ответ" означает, что на данный вопрос получен ответ.

Положительный ответ на примитив "Возьми буфер" означает, что буфер принят на учет ТС. Первоначально все буфера для приема фрагментов на пассивной стороне имеются. Положительный ответ на примитив " Жду фрагмента" означает, что в ранее предоставленный буфер принят фрагмент вопроса. Примитивов "Жду фрагмента" можно одновременно задавать не больше, чем имеется буферов на учете ТС. При выдаче положительного ответа на примитив "Жду фрагмента" буфер снимается с учета ТС. Положительный ответ на примитив "Передай ответ" означает, что ответ отправлен по соединению.

Примитив терминации соединения

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

3.7. Обработка исключительных ситуаций в ОС ОМ.

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

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

Следующие 31 группа ( с 1 по 31 ) относятся к ошибочным ситуациям, возникающим при некорректной работе с различными компонентами ОС, работающими в пространстве задачи пользователя и вне его (кластеры, системные задачи).

Последние 32 группы (с 32 по 63) - исключительные ситуации, объявляемые при работе пользовательских программ.

В каждой группе исключительные ситуации имеют внутреннюю (для группы) нумерацию. В последних 32 группах (пользовательских) пользователь сам определяет нумерацию.

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

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

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

На самом нижнем уровне находится подпрограмма ОС, которая устанавливает реакцию на все группы исключительных ситуаций.

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

1) После обработки исключительной ситуации в подпрограмме не продолжать прерванную программу.

2) После обработки исключительной ситуации можно продолжить выполнение прерванной программы либо с предопределенной точки, либо с точки возврата из подпрограммы, сгенерировавшей данную ситуацию.

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

В подпрограмме обработки исключительных ситуаций можно выдать стандартную диагностику ОС по данной исключительной ситуации в стандартный файл выдачи.

Для генерации исключительной ситуации у другой задачи существует примитив "Послать плохой ответ" (смотри "Примитивы сообщений в ОС ОМ").

3.7.1. Примитивы исключительных ситуаций

УСТУР (ШКАЛА, ПОДПРОГРАММА, БУФ) (НОМУР)
Установка уровня реакции на исключительные ситуации. ШКАЛА - шкала реакций на группы исключительных ситуаций состоит из 1-й ячейки. Наличие "1" в разряде шкалы означает, что реакция на соответствующую группу исключительных ситуаций будет установлена. ПОДПРОГРАММА - подпрограмма для обработки ошибочных ситуаций в случае, если заказана реакция. БУФЕР - буфер уровня имеет фиксированный размер, равный пяти словам. НОМУР - номер вашего уровня - выходной параметр.

В момент начала работы пользовательской или системной подпрограммы обработки исключительных ситуаций буфер будет заполнен следующим образом:

  1. Номер группы исключительной ситуации
  2. В00 при исключительной ситуации
  3. Счетчик адреса команд при исключительной ситуации
  4. Адрес дополнительной информации
  5. Длина дополнительной информации

СНЯТЬ (НОМУР)
Снятие уровней до указанного. НОМУР - номер вашего уровня. Если необходимо снять уровни до вашего включительно, то нужно воспользоваться номером уровня из ответного параметра при установке уровня. Если необходимо снять уровни, не включая ваш, то надо к вашему уровню прибавить 1.

ГЕНИС (НОМГР, ДОПИНФ, ДЛИНА)
Генерация исключительной ситуации.

НОМГР - номер группы исключительной ситуации. Например, если исключительную ситуацию генерирует программа, относящаяся к вводу/выводу, то значением этого параметра будет 2. ДОПИНФ - дополнительная информация об исключительной ситуации. ДЛИНА - длина дополнительной информации.

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

3.8. Функциональный протокол пересылки заданий

Локальная сеть "Электроника СС БИС" неоднородна. В нее входят одна или несколько основных машин и разнообразные внешние машины. Каждая из внешних машин работает под управлением своей собственной операционной системы. Языки управления заданиями в этих операционных системах несовместимы. Поэтому задача построения общесетевой службы управления заданиями с общей очередью и общим языком управления не ставилась. В противном случае была бы очень затруднена адаптация внешних машин к условиям работы в локальной сети суперЭВМ.

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

Таким образом, всякое задание в основной машине является обобщенным шагом задания, инициируемого на внешней машине. Запуск этого задания производится средствами внешней машины, как пересылка пакета файлов задания в основную машину.

Файлы задания имеют свою собственную структуру, состоят из элементов разных типов, но при пересылке заданий структура файла не имеет значения, он передается прозрачно, как набор битов.

Таким образом, пакет задания состоит из последовательности поименованных файлов.Весь пакет однозначно идентифицируется. Для этого внешняя машина вырабатывает идентификатор задания. Этот идентификатор состоит из двух полей. В первом поле находится номер внешней машины по сети. Длина этого поля один байт. Во втором поле, занимающем 5 байтов, идентификатор задания в рамках внешней машины.

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

3.8.1. Используемые средства транспортного уровня.

Будем называть задачу на внешней машине, созданную с целью реализации службы ввода заданий в основную машину, задачей ввода внешней машины (ЗВВМ), задачу в основной машине, созданную с той же целью, - задачей ввода основной машины (ЗВОМ). Задачу в основной машине, созданную с целью вывода результатов выполнения задания на основной машине, назовем задачей вывода основной машины (ЗВЫОМ), а аналогичную задачу на внешней машине - задачей вывода внешней машины (ЗВЫВМ). Данные задачи взаимодействуют между собой, используя транспортный уровень сетевого программного обеспечения. Формально ЗВВМ и ЗВЫВМ могут быть и не задачами в смысле ОС ВМ, а, например, процессами, но они будут абонентами транспортной службы, поэтому будем называть их задачами.

Для пересылки пакетов, содержащих файлы задания, в основную машину устанавливается транспортное соединение между портами ЗВВМ и ЗВОМ. Активной стороной этого транспортного соединения является ЗВВМ. Число ЗВВМ на каждой внешней машине протоколом не устанавливается. Число ЗВОМ или число портов у ЗВОМ, через которые будут устанавливаться транспортные соединения для ввода заданий, тоже протоколом не оговаривается. При установлении соединения ЗВВМ не знает, устанавливается соединение с единственным портом ЗВОМ или с одним из многих. Но ЗВВМ должна быть спроектирована таким образом, чтобы она могла самостоятельно решать конфликт при попытке установить соединение с занятым портом. Транспортная служба инициативу на установление транспортного соединения будет не отбрасывать (без сообщения об этом транспортной службе активной стороны), а отвергать специальным служебным сообщением. Поэтому ЗВВМ должна при неудаче в установлении соединения повторять свои попытки, устанавливая тайм-аут.

ЗВОМ будет образовываться при попытке установить соединение с ее портом.

Для вывода результатов выполнения задания на основной машине устанавливается транспортное соединение между ЗВЫОМ и ЗВЫВМ. Активной стороной этого транспортного соединения является ЗВЫОМ. По умолчанию вывод результатов происходит на ту внешнюю машину, откуда поступило задание. Направление вывода можно изменить средствами языка управления заданиями основной машины. Число ЗВЫОМ протоколом не определяется, но их не больше одной для каждой внешней машины. Распараллеливать поток вывода на одну внешнюю машину не имеет смысла, так как узким местом этого вывода будет оперативная и внешняя память внешней машины, которые должны будут делить свою производительность между потоками вывода. Поэтому в основной машине будет организована очередь вывода на каждую внешнюю машину.

По установленному транспортному соединению пакеты с заданиями (или результатами) передаются как фрагменты сообщения-вопроса, сообщения-ответы используются для подтверждения приема пакета или извещения о сбое.

Инициатором терминации транспортного соединения в случае отсутствия сбоев является активная сторона. При обнаружении сбоя соединение может терминировать пассивная сторона.

3.8.2. Протокольные единицы данных пересылки заданий.

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

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

Протокольная единица данных "Ответ" содержит служебное сообщение о результате пересылки пакета (см. рис.20). "Ответ" состоит из двух полей:

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

3.8.3. Выполнение функций пересылки заданий.

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

3.8.4. Запрос на ввод задания в основную машину.

Этот запрос выставляется пользователем службы пересылки заданий на внешней машине (например, интерпретатором командного языка или задачей пользователя). Параметрами этого запроса являются:

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

3.8.5. Уведомление о получении пакета результатов.

Уведомление выставляется службой пересылки заданий после прихода из основной машины пакета результатов выполнения задания. Это уведомление может быть организовано как объявление события ожидающему процессу, как подкачка отложенного процесса или как образование процесса (задачи) из предопределенного или соответствующего данному заданию файла. Способ уведомления зависит от реализации.

Параметры уведомления: идентификатор задания и описатель пакета результатов. Структура описателя пакета результатов аналогична описателю пакета задания.

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

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

Действия задач вывода аналогичны.

3.9. Протокол пересылки файлов.

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

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

В локальной сети "Электроника ССБИС" было принято решение обеспечить работу с удаленным файлом путем предварительного размещения этого файла в файлохранилище соответствующей ЭВМ. Таким образом, задача пересылки файлов между основной и внешней машинами разбивается на 4 подзадачи:

  1. пересылка файла из архива внешней машины в архив основной машины по инициативе задачи, выполняемой на внешней машине;
  2. пересылка файла из архива основной машины в архив внешней машины по инициативе задачи, решаемой на внешней машине;
  3. пересылка файла из архива внешней машины в архив основной машины по инициативе задачи, выполняемой на основной машине;
  4. пересылка файла из архива основной машины в архив внешней машины по инициативе задачи, выполняемой на основной машине.

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

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

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

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

3.9.1. Используемые средства транспортного уровня.

Для пересылки файлов используются практически все примитивы установления соединения (как с активной, так и с пассивной стороны), примитивы передачи и приема фрагментов сообщения -вопроса и сообщения-ответа, примитивы терминации соединения. Эти примитивы и семантика их использования описаны в разделе описания транспортного протокола. Здесь будут описаны только средства транспортного уровня, обеспечивающие идентификацию портов, между которыми устанавливается транспортное соединение.

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

1) поле "номер ЭВМ", занимающее 1 байт;

2) поле "идентификатор абонента", занимающее 6 байтов;

3) поле "номер порта абонента", занимающее 1 байт.

Поле "номер ЭВМ" определяет машину сети, в которой находится данный порт.

Значение поля "идентификатор абонента" должно быть таково, чтобы исключить возможность установления ошибочных соединений. Таким свойством обладает идентификатор задания. Уникальность его обеспечивается средствами внешней машины, откуда исходит задание. Транспортной службе идентификатор задания и номер внешней машины, откуда поступило задание, сообщается при регистрации шага задания в транспортной службе. Эта регистрация производится средствами ОС. При выполнении примитивов установления соединения транспортная служба помещает в поле "номер ЭВМ" идентификатора своего порта номер своей ЭВМ, а в поле "идентификатор абонента" - идентификатор задания. Значение этих полей не может изменяться пользователем.

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