А.Н. Томилин - Операционные системы супер-ЭВМ (1156254), страница 7
Текст из файла (страница 7)
При обращении к какой-либо функции из базового набора транспортной службе должны передаваться некоторые параметры, которые в дальнейшем будем называть параметрами примитивов. По исполнении примитива транспортной службой абоненту выдаются ответные параметры.
Примитивы установления соединения.
Активные операции по установлению транспортного соединения предполагают указание абонентом ключа желаемого партнера (примитив "Запрос соединения"). Положительный ответ ТС на этот примитив означает, что соединение с желаемым партнером установлено.
Пассивные операции могут быть двух типов:
-
Аналогичные активным (примитив "Только ты!").
-
Партнер заранее неизвестен (примитив "Кто там?").
Положительный ответ ТС на второй примитив означает, что есть подходящий партнер-активная сторона. Теперь абонент может согласиться на установление соединения с этим партнером (примитив "Ответ соединения", положительный ответ ТС на который означает, что соединение установлено ) или не согласиться (примитив "Отказ соединения", положительный ответ на который извещает о новом подходящем партнере и необходимости принятия решения об установлении соединения с ним).
При установлении соединения партнеры идентифицируются по ключу, состоящему из трех полей: номер ЭВМ в сети, идентификатор задания и номер порта.
Примитивы переноса данных
Положительный ответ ТС на примитив "Передай фрагмент" означает, что фрагмент вопроса передан. Положительный ответ ТС на примитив "Передай последний фрагмент и прими ответ" означает, что на данный вопрос получен ответ.
Положительный ответ на примитив "Возьми буфер" означает, что буфер принят на учет ТС. Первоначально все буфера для приема фрагментов на пассивной стороне имеются. Положительный ответ на примитив " Жду фрагмента" означает, что в ранее предоставленный буфер принят фрагмент вопроса. Примитивов "Жду фрагмента" можно одновременно задавать не больше, чем имеется буферов на учете ТС. При выдаче положительного ответа на примитив "Жду фрагмента" буфер снимается с учета ТС. Положительный ответ на примитив "Передай ответ" означает, что ответ отправлен по соединению.
Примитив терминации соединения
Положительный ответ на этот примитив означает, что соединение терминировано ( или терминирован процесс установления соединения). Примитив необходимо задавать на обоих концах соединения.
3.7. Обработка исключительных ситуаций в ОС ОМ.
Исключительной ситуацией в ОС ОМ называется возникновение во время выполнения программы такой ситуации, в результате которой дальнейшее выполнение программы либо невозможно, либо требуется специальная реакция программы на эту ситуацию.
Исключительные ситуации разбиты на группы. К нулевой группе относятся исключительные ситуации, определяемые аппаратурой. Это могут быть: ошибка памяти, передача управления за адресное пространство задачи, попытка обратиться за операндами вне адресного пространства задачи и т.д. Возникновение этих исключительных ситуаций приводит к прерываниям в задаче, т.е. к прекращению выполнения программы и передаче управления ядру ОС. К аппаратным исключительным ситуациям примыкает и исчерпание времени, заказанного для выполнения задания.
Следующие 31 группа ( с 1 по 31 ) относятся к ошибочным ситуациям, возникающим при некорректной работе с различными компонентами ОС, работающими в пространстве задачи пользователя и вне его (кластеры, системные задачи).
Последние 32 группы (с 32 по 63) - исключительные ситуации, объявляемые при работе пользовательских программ.
В каждой группе исключительные ситуации имеют внутреннюю (для группы) нумерацию. В последних 32 группах (пользовательских) пользователь сам определяет нумерацию.
В задаче можно определить подпрограмму, в которой будут обрабатываться исключительные ситуации. Если такая подпрограмма определена, то при возникновении исключительной ситуации на нее будет передано управление и сообщено о характере ошибки. Определение подпрограммы, реагирующей на исключительные ситуации, называется установкой уровня реакции. Этому соответствует примитив управления исключительными ситуациями. Одной такой установкой уровня реакции можно определить реакцию на совокупность групп исключительных ситуаций.
Существует обратная операция: снятие уровня реакции. Этой операции также соответствует примитив управления исключительными ситуациями. После обращения к этому примитиву заданная в установке уровня реакции процедура обработки исключительных ситуаций перестает реагировать на исключительные ситуации.
Внутри задачи может быть определено несколько уровней реакций на исключительные ситуации. Установка уровня реакции образует новый уровень с номером на единицу больше предыдущего. Этот номер можно получить в обратном параметре примитива установки уровня реакции. При возникновении исключительных ситуаций управление будет передано на подпрограмму, указанную в уровне с максимальным номером, реагирующем на данную группу исключительных ситуаций.
На самом нижнем уровне находится подпрограмма ОС, которая устанавливает реакцию на все группы исключительных ситуаций.
В подпрограмме, перехватившей исключительную ситуацию, можно организовать три типа обработки исключительных ситуаций:
1) После обработки исключительной ситуации в подпрограмме не продолжать прерванную программу.
2) После обработки исключительной ситуации можно продолжить выполнение прерванной программы либо с предопределенной точки, либо с точки возврата из подпрограммы, сгенерировавшей данную ситуацию.
3) В зависимости от какого-либо условия в подпрограмме обработки исключительных ситуаций можно пойти либо по первому пути, либо по второму.
В подпрограмме обработки исключительных ситуаций можно выдать стандартную диагностику ОС по данной исключительной ситуации в стандартный файл выдачи.
Для генерации исключительной ситуации у другой задачи существует примитив "Послать плохой ответ" (смотри "Примитивы сообщений в ОС ОМ").
3.7.1. Примитивы исключительных ситуаций
УСТУР (ШКАЛА, ПОДПРОГРАММА, БУФ) (НОМУР)
Установка уровня реакции на исключительные ситуации. ШКАЛА - шкала реакций на группы исключительных ситуаций состоит из 1-й ячейки. Наличие "1" в разряде шкалы означает, что реакция на соответствующую группу исключительных ситуаций будет установлена. ПОДПРОГРАММА - подпрограмма для обработки ошибочных ситуаций в случае, если заказана реакция. БУФЕР - буфер уровня имеет фиксированный размер, равный пяти словам. НОМУР - номер вашего уровня - выходной параметр.
Таблица соответствия.
N разряда в шкале | номер группы | соответствия |
0 1 2 3 4 5 6 7-30 31 32-63 | 0 1 2 3 4 5 6 7-30 31 32-63 | аппаратные (ОС) по передаче сообщений (ОС) по вводу/выводу (ОС) по примитивам искл.сит (ОС) снята задача (ОС) по транспортной служ. (ОС) управление ОЗУ резервные п/п стандартных функций пользовательские |
В момент начала работы пользовательской или системной подпрограммы обработки исключительных ситуаций буфер будет заполнен следующим образом:
-
Номер группы исключительной ситуации
-
В00 при исключительной ситуации
-
Счетчик адреса команд при исключительной ситуации
-
Адрес дополнительной информации
-
Длина дополнительной информации
СНЯТЬ (НОМУР)
Снятие уровней до указанного. НОМУР - номер вашего уровня. Если необходимо снять уровни до вашего включительно, то нужно воспользоваться номером уровня из ответного параметра при установке уровня. Если необходимо снять уровни, не включая ваш, то надо к вашему уровню прибавить 1.
ГЕНИС (НОМГР, ДОПИНФ, ДЛИНА)
Генерация исключительной ситуации.
НОМГР - номер группы исключительной ситуации. Например, если исключительную ситуацию генерирует программа, относящаяся к вводу/выводу, то значением этого параметра будет 2.
ДОПИНФ - дополнительная информация об исключительной ситуации.
ДЛИНА - длина дополнительной информации.
Для того, чтобы сгенерировать исключительную ситуацию в другой задаче, необходимо воспользоваться примитивом "Послать плохой ответ." При этом ответ должен быть задан в следующем виде: в первом слове ответа задается номер группы исключительной ситуации, остальные слова - дополнительная информация.
3.8. Функциональный протокол пересылки заданий.
Локальная сеть "Электроника СС БИС" неоднородна. В нее входят одна или несколько основных машин и разнообразные внешние машины. Каждая из внешних машин работает под управлением своей собственной операционной системы. Языки управления заданиями в этих операционных системах несовместимы. Поэтому задача построения общесетевой службы управления заданиями с общей очередью и общим языком управления не ставилась. В противном случае была бы очень затруднена адаптация внешних машин к условиям работы в локальной сети суперЭВМ.
Был избран следующий подход. Задание, подготовленное к выполнению в локальной сети, состоит из набора шагов, часть из которых выполняется на одной машине сети, часть на других. Причем для каждой группы шагов пользователь явно указывает, на какой машине сети она выполняется. Описание каждой группы шагов производится на языке управления заданиями соответствующей машины. Переход задания из одной машины сети в другую происходит при помощи обращения к службе пересылки заданий. Содержанием такого обращения служит номер машины сети, где должна выполняться группа шагов, и пакет задания группы шагов, содержащий описание этой группы шагов на языке управления заданиями соответствующей машины, и наборы данных, необходимых для выполнения этих шагов. Такой пакет формируется пользователем. Возврат результатов описывается как последний шаг задания на удаленной машине. При таком подходе группа шагов задания, выполняемая на удаленной машине, рассматривается как обобщенный шаг задания, аналогичный выполнению обобщенной удаленной процедуры. Возврат результатов этой процедуры производится как последний шаг группы шагов, выполняемых на удаленной машине. Возвращаемые результаты накапливаются по ходу выполнения в выводных файлах, что отражается в справочнике вывода.
Таким образом, всякое задание в основной машине является обобщенным шагом задания, инициируемого на внешней машине. Запуск этого задания производится средствами внешней машины, как пересылка пакета файлов задания в основную машину.
Файлы задания имеют свою собственную структуру, состоят из элементов разных типов, но при пересылке заданий структура файла не имеет значения, он передается прозрачно, как набор битов.
Таким образом, пакет задания состоит из последовательности поименованных файлов.Весь пакет однозначно идентифицируется. Для этого внешняя машина вырабатывает идентификатор задания. Этот идентификатор состоит из двух полей. В первом поле находится номер внешней машины по сети. Длина этого поля один байт. Во втором поле, занимающем 5 байтов, идентификатор задания в рамках внешней машины.
Пакет с результатами выполнения задания имеет такую же структуру: набор поименованных файлов. Идентификатор этого пакета равен идентификатору входного пакета обобщенного шага задания.
3.8.1. Используемые средства транспортного уровня.
Будем называть задачу на внешней машине, созданную с целью реализации службы ввода заданий в основную машину, задачей ввода внешней машины (ЗВВМ), задачу в основной машине, созданную с той же целью, - задачей ввода основной машины (ЗВОМ). Задачу в основной машине, созданную с целью вывода результатов выполнения задания на основной машине, назовем задачей вывода основной машины (ЗВЫОМ), а аналогичную задачу на внешней машине - задачей вывода внешней машины (ЗВЫВМ). Данные задачи взаимодействуют между собой, используя транспортный уровень сетевого программного обеспечения. Формально ЗВВМ и ЗВЫВМ могут быть и не задачами в смысле ОС ВМ, а, например, процессами, но они будут абонентами транспортной службы, поэтому будем называть их задачами.
Для пересылки пакетов, содержащих файлы задания, в основную машину устанавливается транспортное соединение между портами ЗВВМ и ЗВОМ. Активной стороной этого транспортного соединения является ЗВВМ. Число ЗВВМ на каждой внешней машине протоколом не устанавливается. Число ЗВОМ или число портов у ЗВОМ, через которые будут устанавливаться транспортные соединения для ввода заданий, тоже протоколом не оговаривается. При установлении соединения ЗВВМ не знает, устанавливается соединение с единственным портом ЗВОМ или с одним из многих. Но ЗВВМ должна быть спроектирована таким образом, чтобы она могла самостоятельно решать конфликт при попытке установить соединение с занятым портом. Транспортная служба инициативу на установление транспортного соединения будет не отбрасывать (без сообщения об этом транспортной службе активной стороны), а отвергать специальным служебным сообщением. Поэтому ЗВВМ должна при неудаче в установлении соединения повторять свои попытки, устанавливая тайм-аут.
ЗВОМ будет образовываться при попытке установить соединение с ее портом.
Для вывода результатов выполнения задания на основной машине устанавливается транспортное соединение между ЗВЫОМ и ЗВЫВМ. Активной стороной этого транспортного соединения является ЗВЫОМ. По умолчанию вывод результатов происходит на ту внешнюю машину, откуда поступило задание. Направление вывода можно изменить средствами языка управления заданиями основной машины. Число ЗВЫОМ протоколом не определяется, но их не больше одной для каждой внешней машины. Распараллеливать поток вывода на одну внешнюю машину не имеет смысла, так как узким местом этого вывода будет оперативная и внешняя память внешней машины, которые должны будут делить свою производительность между потоками вывода. Поэтому в основной машине будет организована очередь вывода на каждую внешнюю машину.
По установленному транспортному соединению пакеты с заданиями (или результатами) передаются как фрагменты сообщения-вопроса, сообщения-ответы используются для подтверждения приема пакета или извещения о сбое.
Инициатором терминации транспортного соединения в случае отсутствия сбоев является активная сторона. При обнаружении сбоя соединение может терминировать пассивная сторона.
3.8.2. Протокольные единицы данных пересылки заданий.
При взаимодействии задач ввода внешней и основной машин передается пакет файлов задания. При взаимодействии задач вывода основной и внешней машин передается пакет результатов. В ответ на эти пакеты передаются служебные пакеты задач вводавывода. Никакие более сложные структуры из пакетов, как из элементов, не рассматриваются. В протоколе пересылки заданий есть два типа протокольных единиц данных:
-
пакет,
-
ответ.
Синтаксически "Пакет" представляет собой одно сообщение-запрос, пересылаемое по установленному транспортному соединению от активного порта к пассивному. Примитивы транспортной службы предусматривают передачу сообщения-вопроса по-фрагментно. При передаче сохраняется порядок следования фрагментов (в порядке подачи соответствующих примитивов), обнаружение пропажи фрагмента в результате аппаратного сбоя и извещение приемной стороны о пропаже. Поэтому фрагмент можно использовать как синтаксическую границу между элементами структуры "Пакета".
Протокольная единица данных "Ответ" содержит служебное сообщение о результате пересылки пакета (см. рис.20). "Ответ" состоит из двух полей:
-
код ответа,
-
дополнительная информация.
Значением кода ответа может быть ноль, если пакет доставлен целиком и без ошибок (сообщение-вопрос не отбраковано на транспортном уровне) и записан на внешнюю память. Если сообщение-вопрос, содержащее пакет, отбраковано транспортным уровнем (в результате сбоя аппаратуры) или не смогло быть помещено на внешнюю память, в поле "код ответа" помещается код сбоя. Дополнительная информация представляет собой запись последовательного байтового файла основной машины, содержащюю текстовую строку, характеризующую произошедший сбой.
3.8.3. Выполнение функций пересылки заданий.
Интерфейс с задачей ввода внешней машины и задачей вывода внешней машины существенно зависит от операционной системы внешней машины и от целого ряда решений, определяющих, насколько сильно адаптируется операционная система внешней машины для работы в локальной сети. В минимальном варианте в операционную систему вводится только реализация транспортных протоколов, а все функциональные протоколы реализуются в пользовательских задачах. В случаях более полной адаптации могут быть расширены языки управления заданием. Здесь можно перечислить только услуги, выполняемые службой пересылки заданий. Конкретный интерфейс с этими услугами и способы представления параметров зависят от реализации.
3.8.4. Запрос на ввод задания в основную машину.
Этот запрос выставляется пользователем службы пересылки заданий на внешней машине (например, интерпретатором командного языка или задачей пользователя). Параметрами этого запроса являются:
-
идентификатор задания;
-
номер машины сети, куда нужно переслать задание;
-
описатель пакета с заданием.
Значение первых двух параметров очевидно. Описатель пакета задания содержит информацию, определяющую принятым в данной операционной системе способом каждый файл, входящий в пакет. Службой не контролируется, но это следует учитывать: в пакете с заданием, отправляемым в основную машину, первый файл должен содержать программу выполнения этого задания на языке управления заданием основной машины.
3.8.5. Уведомление о получении пакета результатов.
Уведомление выставляется службой пересылки заданий после прихода из основной машины пакета результатов выполнения задания. Это уведомление может быть организовано как объявление события ожидающему процессу, как подкачка отложенного процесса или как образование процесса (задачи) из предопределенного или соответствующего данному заданию файла. Способ уведомления зависит от реализации.