ГОСТ Р ИСО/МЭК 9804-96
Группа П85
ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ
Информационная технология
ВЗАИМОСВЯЗЬ ОТКРЫТЫХ СИСТЕМ
Определение услуг для сервисного элемента
"совмещение, исполнение и восстановление"
Information Processing System. Open Systems Interconnection.
Service definition for the Commitment, Councurrency and Recovery service element
ОКС 35.100.70
ОКСТУ 4002
Дата введения 1997-01-01
Предисловие
1 РАЗРАБОТАН Московским научно-исследовательским центром (МНИЦ) Комитета при Президенте Российской Федерации по политике информатизации
ВНЕСЕН Комитетом при Президенте Российской Федерации по политике информатизации
2 УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Постановлением Госстандарта России от 23.05.96 N 328
Настоящий стандарт содержит полный аутентичный текст международного стандарта ИСО/МЭК 9804-94 "Информационная технология. Взаимосвязь открытых систем. Определение услуг для сервисного элемента "совмещение, исполнение и восстановление"
3 ВВЕДЕН ВПЕРВЫЕ
Введение
Введение
Настоящий стандарт - один из совокупности стандартов, разработанных для обеспечения взаимосвязи систем обработки информации. Взаимосвязь настоящего стандарта с другими стандартами указанной совокупности определена эталонной моделью взаимосвязи открытых систем (ВОС) (ГОСТ 28906). Эталонная модель подразделяет всю область стандартизации ВОС на ряд уровней спецификации, имеющих приемлемые с точки зрения управляемости размеры.
Цель ВОС состоит в том, чтобы при минимуме технических согласований вне стандартов по ВОС обеспечить взаимосвязь систем обработки информации:
- поставляемых от различных производителей;
- использующих различные методы административного управления;
- имеющих различные уровни сложности;
- использующих различные технологии.
Настоящий стандарт учитывает, что по широкому ряду причин некоторым прикладным процессам может потребоваться взаимодействие с любым другим прикладным процессом. Однако для любого взаимодействия требуются определенные услуги независимые от причин взаимодействия. В стандарте определен сервисный элемент прикладного уровня, который обеспечивает такие услуги.
Стандарт определяет возможности сервисного элемента прикладного уровня по совмещению, исполнению и восстановлению (СИВ). СИВ обеспечивает услуги для одиночной ассоциации. Ссылающаяся на настоящий стандарт спецификация использует такие услуги для запуска и окончания определенной последовательности операций распределенного прикладного процесса несмотря на появление сбоев на прикладном уровне или на безуспешный обмен данными.
1 НАЗНАЧЕНИЕ
Настоящий стандарт предназначен для ссылок на него со стороны других спецификаций, требующих функциональных возможностей совмещения, исполнения и восстановления. На него могут ссылаться всякий раз, когда два или более привлечений логического объекта прикладного уровня (ПЛОП) в распределенном прикладном процессе должны быть организованы в виде атомарного действия.
Стандарт определяет услуги, используемые в одиночной ассоциации для управления двух ПЛОП, участвующих в атомарном действии. Вопрос о том, какое ПЛОП должно участвовать в атомарном действии, не входит в предмет рассмотрения настоящего стандарта.
Настоящий стандарт устанавливает общие принципы координированного использования услуг СИВ при привлечении более двух ПЛОП для одного атомарного действия или при необходимости восстановления после неисправности. Управление несколькими ассоциациями и соответствующими привлечениями логического объекта прикладного уровня, которые образуют атомарное действие, обеспечивается ссылающейся спецификацией в сочетании с настоящим стандартом.
Настоящий стандарт применим только к тем распределенным прикладным процессам, спецификация которого ссылается на него.
Стандарт не определяет конкретной реализации или изделий. Он не налагает никаких ограничений на способ реализации логических объектов и интерфейсов в вычислительных системах.
Здесь не определяются требования к соответствию настоящему стандарту.
Настоящий стандарт содержит требования к согласованности, относящиеся к ссылающейся спецификации.
В стандарте определены услуги СИВ, требующие использования версии 1 или 2 протокола СИВ. Отличия для каждой версии приведены в тексте.
2 НОРМАТИВНЫЕ ССЫЛКИ
Настоящий стандарт содержит ссылки на следующие стандарты.
2.1 Идентичные стандарты/рекомендации
ГОСТ 28906-91 (ИСО 7498-84, ИСО 7498-84, Доп.1-84)/Рекомендация Х.200 МККТТ (1988) Системы обработки информации. Взаимосвязь открытых систем. Базовая эталонная модель
ГОСТ 34.971-91 (ИСО 8822-88)/Рекомендация Х.216 МККТТ (1988) Системы обработки информации. Взаимосвязь открытых систем. Определение услуг уровня представления в режиме с установлением соединения.
ГОСТ 34.981-91 (ИСО 8649-88)/Рекомендация Х.217 МККТТ (1992) Информационная технология. Взаимосвязь открытых систем. Определение услуг для сервисного элемента управления ассоциацией
ГОСТ Р ИСО 8326-95/Рекомендация Х.215 МККТТ (1988) Системы обработки информации. Взаимосвязь открытых систем. Определение базовых услуг сеансового уровня в режиме с установлением соединения.
ИСО/МЭК 9545-93/Рекомендация Х.207 МСЭ-Т (1993) Информационная технология. Взаимосвязь открытых систем. Структура прикладного уровня
ИСО/МЭК 9805-93/Рекомендация Х.852 МККТТ (1993) Информационная технология. Взаимосвязь открытых систем. Спецификация протокола сервисного элемента "совмещение, исполнение и восстановление"
ИСО 7498-3-89*/Рекомендация Х.650 МККТТ (1992) Системы обработки информации. Взаимосвязь открытых систем. Базовая эталонная модель. Часть 3. Присвоение имен и адресация
_________________
* До прямого применения данного документа в качестве государственного стандарта распространение его осуществляет секретариат ТК 22 "Информационная технология".
2.2 Парные стандарты и рекомендации, эквивалентные в техническом отношении
ИСО/МЭК ПМС 10731 Информационная технология. Взаимосвязь открытых систем. Базовая эталонная модель. Соглашения по определению услуг уровней ВОС
Рекомендация Х.210 МСЭ-Т (1993) Соглашения по определению услуг уровней ВОС
3 ОПРЕДЕЛЕНИЯ
3.1 Определения из стандарта по эталонной модели
3.1.1 Определения из стандарта по базовой эталонной модели
Определение услуг основано на концепциях, установленных в ГОСТ 28906. Настоящий стандарт использует следующие определенные в нем термины:
a) логический объект прикладного уровня;
b) прикладной уровень;
c) прикладной процесс;
d) сервисный элемент прикладного уровня;
e) соединение уровня представления;
f) соединение сеансового уровня;
g) услуга сеансового уровня;
h) услуга уровня представления.
3.1.2 Определения из стандарта по присвоению имен и адресации
Настоящий стандарт использует следующее понятие, определенное в ИСО 7498-3:
заголовок логического объекта прикладного уровня.
3.2 Определения из соглашений по услугам
Настоящий стандарт использует следующие понятия, определенные в ИСО/МЭК 8509:
а) запрос (примитив);
b) индикация (примитив);
c) неподтверждаемая услуга;
d) ответ (примитив);
e) подтверждаемая услуга;
f) подтверждение (примитив);
g) пользователь услуг;
h) поставщик услуг;
i) примитив;
j) услуга, инициируемая поставщиком.
3.3 Определения из стандарта по услугам уровня представления
Настоящий стандарт использует следующие понятия, определенные в ГОСТ 34.971:
a) абстрактный синтаксис;
b) абстрактное синтаксическое имя;
c) значение данных уровня представления;
d) контекст уровня представления;
e) определенный набор контекстов;
f) функциональный блок [уровня представления].
3.4 Определения из стандарта по услугам СЭУА
Настоящий стандарт использует следующие понятия, определенные в ГОСТ 34.981:
a) инициатор ассоциации;
b) ответчик ассоциации;
c) разъединение.
3.5 Определения из стандарта по структуре прикладного уровня
Настоящий стандарт использует следующие понятия, определенные в ГОСТ Р ИСО/МЭК 9545:
a) объект отдельной ассоциации;
b) прикладной контекст;
c) привлечение логического объекта прикладного уровня;
d) функция управления групповой ассоциацией;
e) функция управления одиночной ассоциацией.
3.6 Определения, относящиеся к услугам СИВ
3.6.1 Атомарное действие - конкретный набор операций распределенного прикладного процесса, который характеризуется свойствами атомарности, согласованности, изолированности и живучести.
3.6.2 Атомарность - свойство совокупности соответствующих операций, означающее, что они либо все выполняются, либо ни одна из них не выполняется.
3.6.3 Безуспешность обмена данными - непредвиденное освобождение поддерживающей ассоциации.
3.6.4 Ветвь атомарного действия; ветвь - взаимосвязь между двумя пользователями услуг, представляющая неотъемлемую часть атомарного действия. Такая взаимосвязь может сохраняться как при безуспешном обмене данными, так и при сбое на прикладном уровне. Она начинается с использования услуг СИВ и заканчивается либо после использования услуг СИВ, либо в результате сбоя на прикладном уровне или безуспешного обмена данными.
3.6.5 Возврат ветви атомарного действия; возврат - завершение ветви атомарного действия со сбросом граничных данных в начальное состояние.
3.6.6 Восстановление ветви атомарного действия; восстановление - процедуры, используемые пользователем услуг СИВ для завершения прерванной ветви атомарного действия, ответственность за восстановление которой он несет.
3.6.7 Побочный пользователь услуг СИВ - пользователь услуг СИВ, который может быть только младшим. Он может быть младшим относительно главного или промежуточного пользователя услуг СИВ. Он не может быть младшим относительно самого себя.
3.6.8 Главный пользователь услуг СИВ; главный - пользователь услуг СИВ, который может быть старшим. Как создатель дерева атомарного действия, он не может быть старшим, но он может быть старшим у одного или нескольких промежуточных и/или побочных пользователей услуг СИВ.
3.6.9 Граничные данные - данные, которые доступны пользователю услуг СИВ и обрабатываются им как часть атомарного действия. Их состояние определяется правилами СИВ. Граничные данные сохраняются при сбое на прикладном уровне и безуспешном обмене данных и существуют за пределами ветви атомарного действия.
3.6.10 Данные атомарного действия - информация состояния и управления атомарного действия и его ветвей. Данные атомарного действия необходимы для восстановления в случае сбоя на прикладном уровне или безуспешном обмене данных.
3.6.11 Дерево атомарного действия - иерархическая взаимосвязь между пользователями услуг СИВ, участвующими в операции атомарного действия.
3.6.12 Запросчик - пользователь услуг СИВ, который выдает примитив запроса для конкретной услуги СИВ. Для подтверждаемой услуги он получает также примитив подтверждение.
3.6.13 Идентификатор атомарного действия - значение, присваиваемое главным для идентификации атомарного действия в функциональной среде ВОС.
3.6.14 Идентификатор ветви атомарного действия; идентификатор ветви - значение, присваиваемое старшим для идентификации ветви в пределах атомарного действия.
3.6.15 Изолированность - такое свойство совокупности соответствующих операций, что частичные результаты выполнения этих операций недоступны за исключением их доступности только для операций этой совокупности. Такое определение предполагает наличие различных совокупностей соответствующих операций, которые обладают этим свойством и коллективно используют граничные данные в последовательном режиме.
3.6.16 Исполнение ветви атомарного действия; исполнение - завершение выполнения ветви атомарного действия со сбросом граничных данных в конечное состояние.
3.6.17 Компенсационное действие - операции, используемые для установки либо в начальное, либо в конечное состояние из смешанного состояния, которое возникло в результате конфликта между эвристическим(и) решением(ями) и решением главного.
3.6.18 Конечное состояние - состояние граничных данных, возникающее в результате завершения выполнения операций атомарного действия на прикладном уровне.
3.6.19 Младший исполнитель ветви атомарного действия; младший - пользователь услуг СИВ, который получает запрос начать ветвь, предлагает исполнение и получает команду на исполнение.
3.6.20 Начальное состояние - состояние граничных данных в момент первого их использования атомарным действием.
3.6.21 Смешанная эвристическая ситуация - ситуация состояния граничных данных, возникшая в результате эвристического(их) решения(ий), когда пользователь услуг СИВ освобождает граничные данные, находясь в состоянии, отличном от главного.
3.6.22 Основная взаимодействующая услуга - ссылающаяся спецификация, которая содержит семантики СИВ в своих собственных примитивах услуг и переносит синтаксис передачи СИВ в своих протокольных блоках данных.
3.6.23 Ответственность за восстановление ветви атомарного действия; ответственность за восстановление - свойство пользователя услуг СИВ, определяющего необходимость попытки восстановления. Пользователь услуг СИВ приобретает это свойство в результате использования определенных услуг СИВ. Он сохраняет это свойство до завершения ветви атомарного действия.
3.6.24 Период неустойчивости - для пользователя услуг СИВ (не главного) это период атомарного действия, который начинается, когда он решает предложить исполнение своему старшему и заканчивается, когда он получит команду на исполнение или возврат. Главный пользователь СИВ не имеет периода неустойчивости.
3.6.25 Подтверждение исполнения - уведомление, передаваемое младшим старшему о том, что младший выполнил локальные процедуры исполнения.
3.6.26 Получатель - пользователь услуг СИВ, который получает примитив индикации конкретной услуги СИВ. При выполнении услуги подтверждения он выдает также примитив ответа.
3.6.27 Пользователь услуг СИВ - та часть привлечения логического объекта прикладного уровня, которая использует услуги СИВ для координации выполнения одной или нескольких ветвей дерева атомарного действия.
3.6.28 Команда на исполнение ветви атомарного действия; команда на исполнение - указание старшего младшему начать исполнение ветви атомарного действия.
3.6.29 Поставщик услуг СИВ - два равноправных сервисных элемента прикладного уровня (СЭП) СИВ, участвующих в одной ветви атомарного действия.
3.6.30 Предложение на исполнение ветви атомарного действия; предложение на исполнение - сообщение младшего старшему о том, что младший готов либо для исполнения, либо для возврата.
3.6.31 Предполагаемый возврат - механизм восстановления, используемый СИВ. Условно он позволяет пользователю услуг СИВ рассматривать сбой на прикладном уровне или безуспешный обмен данных как возврат. Такое происходит, если он не зарегистрировал данных атомарного действия. Кроме того, пользователь услуг СИВ, действующий как младший, может предположить возврат в следующей ситуации. Он зарегистрировал данные для ветви, но во время восстановления обнаружил, что старший не сделал этого.
3.6.32 Прерванная ветвь - ветвь атомарного действия, поддерживающая ассоциация которой была сброшена из-за сбоя на прикладном уровне или безуспешном обмене данных.
3.6.33 Живучесть - такое свойство полного набора взаимосвязанных операций, что на результаты этих операций не влияют никакие сбои.
3.6.34 Промежуточный пользователь услуг СИВ; промежуточный - пользователь услуг СИВ, который выполняет роль как младшего, так и старшего. Он может быть младшим относительно главного пользователя услуг СИВ или другого промежуточного пользователя услуг СИВ. Он может быть старшим относительно одного или нескольких других промежуточных и/или побочных пользователей услуг СИВ.
3.6.35 Промежуточное состояние - одно из состояний граничных данных, возникающее во время обработки граничных данных, которое не является ни начальным, ни конечным состоянием.
3.6.36 Процедура локального возврата - повторное установление начального состояния всех граничных данных, аннулирование управления совмещением и освобождение всех ресурсов, использовавшихся при выполнении атомарного действия.
3.6.37 Процедуры локального исполнения - установление конечного состояния всех граничных данных, аннулирование управления совмещением и освобождение всех ресурсов, использовавшихся при выполнении атомарного действия.
3.6.38 Распределенный прикладной процесс - сеанс обработки информации, который выполняется с использованием двух или более привлечений логического объекта прикладного уровня в функциональной среде ВОС.
Примечание - Этот термин будет исключен из этого подраздела, когда это определение будет введено в другом, указанном в ссылках, стандарте.
3.6.39 Сбой на прикладном уровне - безуспешность привлечения логического объекта прикладного уровня, которая влияет на соблюдение его нормальной спецификации.
3.6.40 Согласованность - свойство совокупности соответствующих операций, результаты которых являются точными, правильными и подтверждаемыми относительно прикладных семантик.
3.6.41 Старший исполнитель ветви атомарного действия; старший - пользователь услуг СИВ, который запрашивает начало ветви, получает предложение на исполнение и выдает команду на исполнение.
3.6.42 Управление совмещением - реальный механизм открытой системы, который управляет модификацией граничных данных, используемых конкурирующими атомарными действиями, при этом гарантируется свойство изолированности атомарного действия.
3.6.43 Фаза 1 - для пользователя услуг СИВ, который не является главным, это период атомарного действия, который заканчивается, когда он решает предложить исполнение старшему. Для главного пользователя услуг СИВ фаза 1 заканчивается, когда он решает исполнить атомарное действие. Настоящий стандарт не определяет, когда начинается фаза 1.
3.6.44 Фаза 2 - для пользователя услуг СИВ, который не является главным, это период атомарного действия, который начинается, когда старший дает ему указание на исполнение. Для главного пользователя услуг СИВ фаза 2 начинается при принятии им решения исполнить атомарное действие. Для любого пользователя услуг СИВ фаза 2 заканчивается при завершении выполнения всех ветвей и привлечений с окончаниями атомарных действий.
3.6.45 Эвристическое решение - решение пользователя услуг СИВ о том, что он выдал старшему предложение на исполнение и выполнит сброс всех или части граничных данных до того, как он получит от старшего указание на исполнение или возврат.
3.6.46 Ссылающаяся спецификация - стандарт прикладного уровня или другая спецификация, которая определяет использование услуг СИВ. Услуги СИВ всегда используются совместно со ссылающейся спецификацией.
4 СОКРАЩЕНИЯ
ВОС | Взаимосвязь открытых систем |
инд | Индикация (примитив) |
зпр | Запрос (примитив) |
ЛОП | Логический объект прикладного уровня |
ООА | Объект одиночной ассоциации |
отв | Ответ (примитив) |
птд | Подтверждение (примитив) |
ПАСИВ | Протокольный автомат СИВ |
ПЛОП | Привлечение логического объекта прикладного уровня |
ПсСИВ | Поставщик услуг совмещения, исполнения и восстановления |
СИВ | Сервисный элемент прикладного уровня "совмещение, исполнение и восстановление" |
СЭУА | Сервисный элемент управления ассоциацией |
ФСВОС | Функциональная среда взаимосвязи открытых систем |
ФУГА | Функция управления групповой ассоциации |
ФУОА | Функция управления одиночной ассоциации |
5 СОГЛАШЕНИЯ
Настоящий стандарт определяет услуги СИВ в соответствии с соглашениями, определенными в ИСО/МЭК ПМС 10731.
В разделе 7 определение каждой услуги СИВ содержит таблицу, в которой перечислены параметры услуги. Для заданного примитива наличие каждого параметра описывается одним из следующих значений:
О наличие обязательно
Пл факультативная возможность пользователя
Пробел не используется
У условное.
В этих таблицах обозначение (=) указывает, что значение параметра семантически аналогично значению, приведенному слева в таблице.
6 ОСНОВНЫЕ ПРИНЦИПЫ
6.1 Использование СИВ в распределенной прикладной среде
Услуги СИВ определены для одиночной ассоциации. Они не имеют отношения к организации и топологии распределенных прикладных процессов и не рассматривают эти вопросы. Ссылающаяся спецификация всегда требуется для управления использованием услуг СИВ. Однако использование услуг СИВ требует понимания распределенной прикладной среды.
6.1.1 Среда атомарного действия
6.1.1.1 Свойства атомарного действия
Атомарное действие - это конкретная совокупность соответствующих операций распределенных прикладных процессов, которые характеризуются следующими свойствами.
a) Атомарность - свойство совокупности соответствующих операций, которые либо все выполняются, либо ни одна из них не выполняется.
b) Согласованность - свойство совокупности соответствующих операций, которые выполняются точно, правильно и с подтверждением правильности в соответствии с прикладными семантиками.
c) Изолированность - свойство совокупности соответствующих операций, результаты выполнения которых доступны только операциям этого набора. Такое определение предполагает наличие различных совокупностей соответствующих операций, которые обладают этим свойством и которые совместно используют граничные данные в последовательном режиме.
d) Живучесть - свойство совокупности соответствующих операций, на результаты выполнения которых не влияют никакие сбои.
В идеальном случае все эти свойства атомарного действия поддерживаются пользователем услуг СИВ. Однако степень обеспечения этих свойств зависит от уровня соответствия правилам пользователя услуг СИВ (см. приложение А) и его локальным стратегиям.
Принятие эвристического решения служит примером локальной стратегии, которая может нарушить свойства атомарного действия (см. 6.3). Эвристическое решение не гарантирует атомарности атомарного действия. Другой пример - использование механизма совмещения, которое позволяет наблюдать промежуточные состояния граничных данных, находясь вне атомарного действия.
6.1.1.2 Дерево атомарного действия
Пользователи услуг СИВ, участвующие в атомарном действии, образуют взаимосвязь, которая имеет структуру дерева. В настоящем стандарте такая взаимосвязь моделируется в виде дерева атомарного действия, приведенного на рисунке 1. Дерево атомарного действия состоит из пользователей услуг СИВ и ветвей атомарного действия.
Рисунок 1 - Дерево атомарного действия
Рисунок 1 - Дерево атомарного действия
ПЛОП может представлять одного или нескольких пользователей услуг СИВ одного и того же или различных деревьев атомарного действия.
Примечание - Ветви атомарного действия между пользователями услуг СИВ одного и того же ПЛОП не входят в предмет рассмотрения настоящего стандарта.
Ветвь атомарного действия - взаимосвязь между двумя логически смежными пользователями услуг СИВ.
Дерево атомарного действия динамически строится путем формирования его ветвей. Дерево атомарного действия и его ветви существуют только в период существования атомарного действия.
Дерево атомарного действия начинается, когда пользователь услуг СИВ начинает первую вервь. Пользователь услуг СИВ назначает этому атомарному действию идентификатор атомарного действия, значение которого уникальным образом определяет это действие в функциональной среде ВОС (ФСВОС). Это значение распространяется на все атомарное действие. Пользователь услуг СИВ использует его для управления совмещением, в т.ч. для восстановления прерванных ветвей атомарного действия после сбоя на прикладном уровне или безуспешного обмена данными.
На основе требований ссылающейся спецификации пользователь услуг СИВ может включить любого пользователя услуг СИВ в дерево атомарного действия. Это вызывает добавление новой ветви в дерево атомарного действия.
Дерево атомарного действия может быть упорядочено иерархически, начиная с любого пользователя услуг СИВ. Такое упорядочение, которое начинается с того, что пользователь услуг СИВ инициирует атомарное действие, определяет начальное дерево атомарного действия. На рисунке 1 показано дерево атомарного действия, в котором упорядочение начинается пользователем услуг СИВ А. Стрелка в каждой ветви показывает направление, в котором она инициирована.
При возникновении ошибки используются средства восстановления СИВ, гарантирующие, что процедуры завершения ветви правильно применены по всему атомарному действию. Заканчивается дерево атомарного действия выполнением всех отдельных ветвей.
6.1.2 Ветвь атомарного действия
Ветвь атомарного действия - это взаимоотношение между двумя логически смежными пользователями услуг СИВ. Это взаимоотношение представляет собой часть работы, выполняемой атомарным действием. Ветвь запрашивается одним пользователем услуг СИВ, а другие принимают запрос. А иерархии дерева атомарного действия пользователь услуг СИВ, принимающий запрос, располагается уровнем ниже пользователя услуг СИВ, инициирующего ветвь.
Пользователь услуг СИВ, инициирующий ветвь, использует соответствующий идентификатор атомарного действия. Он назначает идентификатор ветви, значение которого уникально в пределах области распространения атомарного действия. Этот идентификатор ветви используется для идентификации конкретной ветви дерева атомарного действия во время восстановления после сбоя на прикладном уровне или безуспешного обмена данными.
Ветвь поддерживается ассоциацией. В случае сбоя на прикладном уровне или безуспешного обмена данными ветвь может не пострадать и продолжить существование с другой ассоциацией (см. 6.2.2.2).
6.1.3 Граничные данные
Операции атомарного действия охватывают специфичные для пользователя услуг СИВ данные в соответствии с требованиями ссылающейся спецификации. В спецификации настоящего стандарта такие данные, находящиеся под управлением атомарного действия, называются граничными данными.
Модификации, выполняемые операциями атомарного действия, изменяют граничные данные от начального состояния до конечного. Модификации неделимы и либо все они применимы (вводя граничные данные в конечное состояние), либо ни одна из них неприменима (оставляя граничные данные в начальном состоянии).
Во время атомарного действия промежуточное состояние граничных данных ненаблюдаемо за пределами атомарного действия. Любые модификации осуществляются изолированно от совмещенных операций, выполняемых за пределами атомарного действия.
6.1.4 Данные атомарного действия
В настоящем стандарте понятие "данные атомарного действия" относится к информации состояния и контроля атомарного действия и его ветвей. Данные атомарного действия, необходимые для восстановления, должны быть в наличии в случае сбоя на прикладном уровне или безуспешного обмена данными.
6.1.5 Операции атомарного действия
Основной целью атомарного действия является обмен прикладными семантиками для скоординированного установления конечного состояния всех граничных данных. С этой целью СИВ предусматривает двухфазовый механизм исполнения. В фазе 1 собираются предложения на исполнение. В фазе 2 исполнение упорядочивается и подтверждается.
В пределах атомарного действия каждый пользователь услуг СИВ может предложить исполнение в одной ветви или он может не предлагать исполнение. Следовательно, атомарное действие может быть представлено в виде иерархического дерева, упорядоченного на базе предложений на исполнение, что и является деревом исполнения атомарного действия.
6.1.6 Роли в атомарном действии
Предложение на исполнение в ветви выдается только пользователем услуг СИВ, который получает из ветви примитив Си-НАЧАТЬ индикация.
Следовательно, можно определить различные роли пользователя услуг СИВ относительно ветви:
a) старший (ветви) - пользователь услуг СИВ, который запрашивает начало ветви, получает предложение на исполнение и выдает команду на исполнение;
b) младший (ветви) - пользователь услуг СИВ, который получает запрос начать ветвь, предлагает исполнение и получает команду на исполнение.
В атомарном действии существует три типа пользователя услуг СИВ:
а) главный - роль старшего. Как создатель дерева атомарного действия он не является старшим, но он может быть старшим у одного или нескольких промежуточных и/или побочных пользователей услуг СИВ;
b) промежуточный - может быть в роли младшего и старшего. Он является младшим у главного или другого промежуточного пользователя услуг СИВ и старшим у одного или нескольких других промежуточных и/или побочных пользователей услуг СИВ;
с) побочный - может быть только в роли младшего. Он является младшим у главного или промежуточного пользователя услуг СИВ, но не может быть младшим у самого себя.
6.1.7 Двухфазовое исполнение
СИВ обеспечивает механизм двухфазового исполнения. В фазе 1 собираются предложения на исполнение. В настоящем стандарте не определяется, когда начинается фаза 1.
Пользователь услуг СИВ предлагает исполнение своему старшему после того, как тот получил предложения на исполнение от всех своих младших и завершил выполнение всех операций. В этот момент он может ввести граничные данные в начальное или конечное состояние.
Главный покидает фазу 1 и переходит в фазу 2 после принятия решения об исполнении атомарного действия. Делает он это после получения предложений на исполнение от всех своих младших. Он может также ввести граничные данные в конечное состояние. Затем главный дает своим младшим команду на исполнение. Главный покидает фазу 2 после получения подтверждения об исполнении от всех своих младших, которым он выдал команду.
Пользователь услуг СИВ, не являющийся главным, покидает фазу 1 и входит в период неустойчивости после того, как он решил предложить своему старшему исполнение. Он покидает период неустойчивости и входит в фазу 2 после получения от своего старшего команды на исполнение. После этого промежуточный пользователь выдает команду на исполнение своему младшему. И, наконец, он покидает фазу 2 после передачи своему старшему подтверждения об исполнении.
6.1.8 Процедура исполнения
Исполнение - это процедура посредством которой пользователи услуг СИВ, участвующие в атомарном действии, сбрасывают свои данные в конечное состояние.
Исполнение происходит только после того, как все участвующие пользователи услуг СИВ (кроме главного) получат предложение на исполнение. Главный инициирует исполнение. Когда главный решит исполнить, он входит в фазу 2. Поскольку каждый пользователь исполняет, он сбрасывает свои граничные данные в конечное состояние и дает своим младшим команду на исполнение.
6.1.9 Процедура возврата
Возврат - это процедура, используемая для принудительного завершения некоторой или всех ветвей атомарного действия. Выполнение процедуры приводит к сбросу соответствующих граничных данных в начальное состояние. Возврат может относиться ко всему атомарному действию. Он может также относиться к поддереву дерева атомарного действия, корнем которого является промежуточный или побочный пользователь.
Пользователь услуг СИВ, который не является главным, может инициировать возврат до выдачи предложения на исполнение. Главный может инициировать возврат до выдачи команды на исполнение.
При возврате пользователь услуг СИВ сбрасывает свои граничные данные в начальное состояние. Он принудительно завершает выполнение ветвей к своим младшим, распространяя на них воздействие возврата. При инициировании возврата он принудительно завершает выполнение ветвей, направленных к своему старшему.
До выдачи предложения на исполнение (т.е. до входа в период неустойчивости) пользователь услуг СИВ может потребовать от своего младшего выполнить возврат, даже если он сам не выполняет возврат или не сбрасывает свои граничные данные. Выполнение ветвей с этим младшим завершается. Пользователь услуг СИВ остается в атомарном действии.
После выдачи предложения на исполнение пользователь услуг СИВ, который не принимал эвристического решения, может выполнить возврат только при получении от своего старшего команды на выполнение возврата (см. 6.3).
6.1.10 Управление совмещением
Управление совмещением - это механизм реальной открытой системы. Он управляет модификациями граничных данных, используемых совмещенными атомарными действиями. Механизм управления совмещением гарантирует такое свойство атомарного действия, как изолированность.
Примечание - Механизм управления совмещением обеспечивает наличие по меньшей мере одной порядковой последовательности в заданном наборе атомарных действий, результат выполнения которой над общими граничными данных тот же, что при операции совмещения (параллельной) тех же атомарных действий над теми же граничными данными. Таким образом, совмещенное выполнение атомарного действия осуществляется последовательно.
Для управления атомарным действием СИВ требует управления совмещением. Однако средства выполнения совмещения не входят в предмет рассмотрения настоящего стандарта.
6.2 Средства СИВ
Средства СИВ обеспечивают начало и завершение одиночной ветви. Основное назначение ветви - обмен прикладными семантиками, необходимыми при модификации граничных данных согласованным способом.
6.2.1 Выполнение ветви
Выполнение ветви происходит в два этапа:
a) создание ветви и обмен прикладными семантиками между двумя пользователями услуг СИВ для образования конечного состояния граничных данных;
b) исполнение, при котором конечное состояние граничных данных становится постоянным (т.е. исполняется) или осуществляется возврат, при котором граничные данные возвращаются в начальное состояние.
В любой момент до запуска процедуры исполнения любой пользователь услуг СИВ может осуществить возврат ветви.
Ветвь может быть прервана сбоем на прикладном уровне или безуспешным обменом данными. Пользователь услуг СИВ, ответственный за восстановление, пытается восстановить прерванную ветвь, используя другую ассоциацию. Пользователь услуг СИВ принимает ответственность за восстановление ветви прежде, чем использовать конкретные услуги СИВ (см. 6.2.2.2). Оба пользователя услуг СИВ могут нести ответственность за восстановление ветви.
Настоящий стандарт определяет услуги СИВ для создания и управления отдельной ветви. Он определяет также правила управления обменом прикладных семантик в ветви.
Примечание - Обмен прикладными семантиками в пределах ветви определяется ссылающейся спецификацией.
6.2.2 Восстановление
СИВ анализирует ошибку и осуществляет последующее восстановление на уровне ветви.
6.2.2.1 Сбои
В ПЛОП, участвующих в атомарном действии, в любое время может возникнуть сбой. Однако функциональные возможности и применимость СИВ предполагают сохранность граничных данных и данных атомарного действия при таких сбоях. Потеря данных вызывает потерю функциональных возможностей и применимости, и свойства атомарного действия больше не гарантируются.
При возникновении сбоя на прикладном уровне или при безуспешном обмене данными для восстановления может потребоваться другая ассоциация. Это делается в целях сохранности свойств атомарного действия и для ввода граничных данных в согласующееся состояние. В частности, пользователь услуг СИВ может вызвать средства восстановления в другой ассоциации для восстановления обмена семантик, которые могли быть утеряны.
Пользователь услуг СИВ обращается к данным атомарного действия при активизации средств восстановления СИВ. Данные атомарного действия и средства восстановления СИВ позволяют пользователю услуг СИВ завершить ветвь.
Примечание - При возникновении сбоя на прикладном уровне для восстановления могут потребоваться механизмы локального восстановления. Такие механизмы могут быть использованы позже и могут предполагать вмешательство оператора.
6.2.2.2 Механизм восстановления
Механизм восстановления определяет, когда пользователи услуг СИВ принимают ответственность за восстановление ветви. При возникновении сбоя пользователь услуг СИВ, ответственный за восстановление, пытается восстановить эту ветвь.
СИВ использует механизм восстановления предполагаемого возврата (иногда называемого "предполагаемое прерывание"). При использовании этого механизма младший принимает ответственность за восстановление ветви после того, как он решил предложить исполнение. Старший принимает ответственность за восстановление ветви после того, как он решил выдать команду на исполнение. Оба сохраняют ответственность за восстановление до завершения ветви.
Примечание - Для главного механизм восстановления предполагаемого возврата не требует записи данных атомарного действия до тех пор, пока он не решит исполнить атомарное действие. Для побочного или промежуточного пользователя услуг СИВ записи данных атомарного действия не происходит до тех пор, пока он не решит предложить исполнение. Это уменьшает объем записывающихся данных атомарного действия в начале ветви.
Механизм восстановления СИВ для отдельной ветви предъявляет к пользователю услуг СИВ три основных требования:
a) обеспечение данных атомарного действия;
b) способность установки граничных данных в начальное и конечное состояния;
c) инициализация восстановления при обладании ответственностью за восстановление.
Пользователь услуг СИВ использует данные атомарного действия для того, чтобы определить, обладает ли он ответственностью за восстановление.
До исполнения пользователь услуг СИВ не несет ответственности за восстановление. В случае сбоя на прикладном уровне или при безуспешном обмене данными пользователь услуг СИВ должен быть способен возвратить свои граничные данные в начальное состояние.
В период неустойчивости ответственность за восстановление несет пользователь услуг СИВ. В случае сбоя на прикладном уровне или безуспешном обмене данными пользователь услуг СИВ должен быть способен устанавливать свои граничные данные в начальное и конечное состояния.
После сбоя на прикладном уровне механизм локального восстановления возобновляет операцию пользователя услуг СИВ. После этого пользователь услуг СИВ пытается использовать новую ассоциацию для восстановления любой ветви, ответственность за восстановление которой он несет.
После безуспешного обмена данными пользователь услуг СИВ пытается использовать другую ассоциацию для восстановления ветви, если он несет ответственность за восстановление.
Ответственность восстановления определяется данными атомарного действия.
6.3 Эвристические решения
Настоящий стандарт в явном виде не обеспечивает ни возможностей передачи эвристических решений, ни средств для снижения влияния таких решений. Этот вопрос рассматривается здесь по той причине, что ссылающаяся спецификация может определить условия, при которых эвристическое решение может повлиять на использование услуг СИВ.
6.3.1 Обоснование эвристического решения
После того, как пользователь услуг СИВ предложит исполнение, он входит в период неустойчивости. Он сохраняет способность исполнения или возврата при получении от старшего команды на выполнение соответствующего действия. На практике такой подход может оказаться неприемлемым. Может возникнуть продолжительный сбой или в исключительных случаях может иметь место длительная задержка в передаче решения об исполнении или возврате.
В подобных ситуациях пользователь услуг СИВ может принять эвристическое решение. Он вводит часть или все свои граничные данные в начальное, конечное или какое-то промежуточное состояние. Делает он все это, находясь в состоянии неустойчивости.
При эвристическом решении пользователь услуг СИВ рассматривает компромисс между:
a) сохранением способности исполнения или возврата (т.е. сохранение блокировки необходимых данных); и
b) принятием эвристического решения, которое возможно нарушит свойства атомарного действия, и последующим копированием с результатом этого нарушения.
6.3.2 Принятие эвристического решения
Любой пользователь услуг СИВ, который уже предложил исполнение, может принимать эвристическое решение. Сюда относится и пользователь услуг СИВ, участвующий в ветви, прерванной в результате сбоя на прикладном уровне или безуспешного обмена данными. Пользователь услуг СИВ может принять несколько эвристических решений для данного атомарного действия.
Ссылающаяся спецификация может налагать ограничения на принятие эвристического решения. К ним относится и запрет на принятие эвристического решения.
Если эвристическое решение, принятое пользователем услуг СИВ, отличается от принятого главным, это приводит к смешанной ситуации.
Смешанные ситуации разрешаются компенсационными действиями. Такие компенсационные действия зависят от прикладной программы, а также от ситуации. Компенсационные действия не входят в предмет рассмотрения настоящего стандарта.
6.3.3 Определение эвристической смешанной ситуации
Использование услуг СИВ гарантирует, что любой пользователь услуг СИВ, который принял эвристическое решение, в конечном счете определит, принято ли это решение в соответствии с решением главного, либо имеет место смешанная ситуация.
6.3.4 Уведомление об эвристической смешанной ситуации
При обнаружении смешанной ситуации ссылающаяся спецификация несет ответственность за информирование о способности логического объекта разрешить эту ситуацию.
Ссылающаяся спецификация может использовать параметр "данные пользователя" некоторых примитивов услуг СИВ, чтобы проинформировать о наличии эвристического решения или эвристической смешанной ситуации. Такое информирование может оказаться ненадежным.
7 ОПРЕДЕЛЕНИЕ УСЛУГ
В этом разделе определены все услуги СИВ. В разделе 8 описаны разрешенные последовательности примитивов услуг СИВ, используемые в одной ветви атомарного действия. В приложении А определены правила пользователя услуг СИВ, которые должна содержать ссылающаяся спецификация.
Услуги, обеспечиваемые СИВ, позволяют двум пользователям услуг СИВ обмениваться данными друг с другом. Использование услуг СИВ зависит от роли (младшего или старшего) в которой выступает пользователь услуг СИВ.
Старший может активизировать следующие услуги:
a) Си-НАЧАТЬ - начать ветвь;
b) Си-ПОДГОТОВКА - запросить младшего о предложении на исполнение;
c) Си-ИСПОЛНЕНИЕ - выдать младшему команду на исполнение;
d) Си-ВОЗВРАТ - выдать младшему команду на возврат;
е) Си-ВОССТАНОВЛЕНИЕ - выполнить восстановление после сбоя на прикладном уровне или безуспешного обмена данными.
Младший может активизировать следующие услуги:
a) Си-ГОТОВНОСТЬ - передать старшему предложение на исполнение;
b) Си-ВОЗВРАТ - проинформировать старшего о том, что имел место возврат;
c) Си-ВОССТАНОВЛЕНИЕ - выполнить восстановление после сбоя на прикладном уровне или безуспешного обмена данными.
После создания ветви услугой Си-НАЧАТЬ происходит обмен прикладной семантикой, определяемый ссылающейся спецификацией для развития ветви.
Выполнение ветви осуществляется либо:
a) двухфазовым исполнением с использованием услуг Си-ПОДГОТОВКА, Си-ГОТОВНОСТЬ, Си-ИСПОЛНЕНИЕ и, возможно, Си-ВОССТАНОВЛЕНИЕ или;
b) возвратом с использованием услуги Си-ВОЗВРАТ и, возможно, Си-ВОССТАНОВЛЕНИЕ.
В таблице 1 перечислены услуги СИВ, типы услуг (подтверждаемая, подтверждаемая факультативно и неподтверждаемая) и запросчик услуг.
Таблица 1 - Услуги СИВ
Отправитель | Тип | Запросчик |
Си-НАЧАТЬ | Подтверждаемая факультативно | Старший |
Си-ПОДГОТОВКА | Неподтверждаемая | Старший |
Си-ГОТОВНОСТЬ | Неподтверждаемая | Младший |
Си-ИСПОЛНЕНИЕ | Подтверждаемая | Старший |
Си-ВОЗВРАТ | Подтверждаемая | Старший или младший |
Си-ВОССТАНОВЛЕНИЕ | Подтверждаемая | Старший |
подтверждаемая факультативно | Младший |
7.1 Услуга Си-НАЧАТЬ
7.1.1 Назначение и использование
7.1.1.1 Пользователь услуг СИВ, называемый старшим, использует примитив Си-НАЧАТЬ запрос для запроса инициализации ветви с другим пользователем услуг СИВ, называемым младшим. Услуга Си-НАЧАТЬ используется при установлении ассоциации. Младший привлекается в то же атомарное действие, что и старший.
7.1.1.2 Младший может факультативно использовать примитив Си-НАЧАТЬ ответ до передачи первых прикладных семантик для этой новой ветви. В этом случае передача прикладных семантик до получения примитива Си-НАЧАТЬ ответ не является частью этой новой ветви.
7.1.1.3 Использование услуги Си-НАЧАТЬ влияет на установлении младшей точки синхронизации нижерасположенного сеансового соединения, обеспечивающего ветвь. Старший должен обладать полномочием младшей синхронизации.
7.1.1.4 Услуга Си-НАЧАТЬ может быть выдана вместе с услугами Си-ИСПОЛНЕНИЕ и Си-ВОЗВРАТ (см. 7.4 и 7.5 соответственно).
7.1.2 Параметры услуги Си-НАЧАТЬ
В таблице 2 приведены параметры услуги Си-НАЧАТЬ. Описание каждого параметра приведено ниже.
Таблица 2 - Параметры Си-НАЧАТЬ
Наименование параметра | зпр | инд | отв | пдт |
Идентификатор атомарного действия - имя главного | О | О(=) | ||
Идентификатор атомарного действия - суффикс | О | О(=) | ||
Идентификатор ветви - имя старшего | О | О(=) | ||
Идентификатор ветви - суффикс | О | О(=) | ||
Данные пользователя | Пл | У(=) | Пл | У(=) |
7.1.2.1 Идентификатор атомарного действия
7.1.2.1.1 Идентификатор атомарного действия однозначно идентифицирует атомарное действие, которому принадлежит эта ветвь. Его значение присваивает главный, когда начинается первая ветвь атомарного действия. В дальнейшем это значение используется младшим каждой ветви.
7.1.2.1.2 Идентификатор атомарного действия содержит параметр "имя главного" вместе с параметром "суффикс".
7.1.2.1.3 Значением параметра "имя главного" является заголовок ЛОП главного. Это значение однозначно идентифицирует главного атомарного действия.
7.1.2.1.4 Главный присваивает значение параметра "суффикс" таким образом, чтобы однозначно идентифицировать атомарное действие среди других с тем же именем главного.
7.1.2.2 Идентификатор ветви
7.1.2.2.1 Идентификатор ветви однозначно идентифицирует ветвь атомарного действия в поле значения идентификатора атомарного действия. Он содержит параметр "имя старшего" вместе с параметром "суффикс".
7.1.2.2.2 Значением параметра "имя старшего" служит заголовок ЛОП старшего. Это значение однозначно идентифицирует старшего ветви.
Примечание - Услуга Пк-АССОЦИАЦИЯ СЭУА обеспечивает средства обмена значениями заголовков ЛОП (см. ГОСТ 34.981).
7.1.2.2.3 Спецификация услуг для идентификации старшего требует использования либо параметра "заголовок вызывающего ЛОП" либо "заголовок отвечающего ЛОП" услуги Пк-АССОЦИАЦИЯ.
7.1.2.2.4 Старший присваивает значение параметра "суффикс" таким образом, чтобы однозначно идентифицировать ветвь среди других ветвей атомарного действия с тем же именем старшего.
7.1.2.3 Данные пользователя
Этот параметр может передавать информацию неограниченного объема в соответствии с ссылающейся спецификацией. Он может содержать одно или несколько значений данных уровня представления из контекста уровня представления в определяемом наборе контекста при выдаче примитива Си-НАЧАТЬ запрос.
Примечание - Ссылающаяся спецификация определяет использование этого параметра. Например, она может указывать минимальные требования для исполнения, предпочтительные знаковые наборы для диагностики или дополнительную информацию о состоянии этой ветви.
7.2 Услуга Си-ПОДГОТОВКА
7.2.1 Назначение и использование
7.2.1.1 Си-ПОДГОТОВКА является неподтверждаемой услугой. Старший может факультативно привлечь услугу Си-ПОДГОТОВКА, если он не получал предложения на исполнение от младшего. Старший запрашивает младшего завершить выполнение ветви и выдать предложение на исполнение. Старший не должен передавать младшему никаких последующих прикладных семантик, которые изменяют граничные данные этого атомарного действия.
7.2.1.2 Услуга Си-ПОДГОТОВКА не требуется, когда обмен прикладной семантикой ветви обеспечивает выдачу от старшего эквивалентного запроса подготовки.
7.2.1.3 Если младший не может предложить исполнение, он выполняет возврат ветви (см. 7.5).
7.2.2 Параметры услуги Си-ПОДГОТОВКА
В таблице 3 приведены параметры услуги Си-ПОДГОТОВКА.
Таблица 3 - Параметры Си-ПОДГОТОВКА
Наименование параметра | зпр | инд |
Данные пользователя | Пл | (=) |
Примечание - Этот параметр устанавливается при выдаче примитива Си-ПОДГОТОВКА запрос |
7.2.2.1 Данные пользователя
Старший может использовать этот параметр для передачи информации неограниченного объема в соответствии с ссылающейся спецификацией. Он может содержать одно или несколько значений данных уровня представления в определенном контексте уровня представления.
Примечание - Ссылающаяся спецификация определяет использование этого параметра.
7.3 Услуга Си-ГОТОВНОСТЬ
7.3.1 Назначение и использование
7.3.1.1 Си-ГОТОВНОСТЬ является неподтверждаемой услугой, которую привлекает младший, чтобы предложить исполнение. Младший выдает примитив запроса только в том случае, если он уверен, что граничные данные могут быть сброшены в начальное или конечное состояние.
7.3.1.2 Младший несет ответственность за восстановление в этой ветви. Поэтому он должен делать попытки восстановления после сбоя на прикладном уровне или безуспешного обмена данными (см. 7.6).
7.3.1.3 Младший не должен передавать старшему никаких последующих прикладные семантики, которые изменяют граничные данные этого атомарного действия.
7.3.2 Параметры услуги Си-ГОТОВНОСТЬ
В таблице 4 приведены параметры услуги Си-ГОТОВНОСТЬ.
Таблица 4 - Параметры Си-ГОТОВНОСТЬ
Наименование параметра | зпр | инд |
Данные пользователя | Пл | (=) |
7.3.2.1 Данные пользователя
Младший может использовать этот параметр для передачи информации неограниченного объема в соответствии со ссылающейся спецификацией. Он может содержать одно или несколько значений данных уровня представления из контекстов уровня представления в совокупности определяемого контекста при выдаче примитива Си-ГОТОВНОСТЬ запрос.
Примечание - Ссылающаяся спецификация определяет использование этого параметра. Например, она может передавать предупреждающие сообщения об изменении запрошенных действий.
7.4 Услуга Си-ИСПОЛНЕНИЕ
7.4.1 Назначение и использование
7.4.1.1 Си-ИСПОЛНЕНИЕ является подтверждаемой услугой, которую старший привлекает для выдачи команды на исполнение.
7.4.1.2 Старший выдает примитив запроса только в следующих случаях:
a) младший предложил исполнение (см. 7.3);
b) старший имеет свои граничные данные в конечном состоянии. Старший несет ответственность за восстановление в этой ветви. Поэтому он должен делать попытки восстановления после сбоя на прикладном уровне или безуспешного обмена данными (см. 7.6).
7.4.1.3 Младший выдает примитив ответа для завершения выполнения ветви. Перед выдачей этого примитива младший должен сбросить все свои ресурсы (т.е. установить граничные данные в конечное состояние). Младший больше не несет ответственности за восстановление в этой ветви. Поэтому он не должен пытаться восстанавливать после сбоя на прикладном уровне или безуспешного обмена данными.
7.4.1.4 Для старшего выполнение ветви заканчивается, как только он получит примитив подтверждения. Он больше не несет ответственности за восстановление в этой ветви. Поэтому он не должен пытаться восстанавливать после сбоя на прикладном уровне или безуспешного обмена данными.
7.4.1.5 При использовании версии 1 протокола СИВ использование услуги Си-ИСПОЛНЕНИЕ влияет на установлении старшей точки синхронизации нижерасположенного сеансового соединения, обеспечивающего эту ветвь. Старший должен обладать полномочием старшая синхронизация/активность.
7.4.1.6 При использовании версии 2 протокола СИВ использование услуги Си-ИСПОЛНЕНИЕ влияет на установлении младшей точки синхронизации нижерасположенного сеансового соединения, обеспечивающего эту ветвь. Старший должен обладать полномочием младшей синхронизации.
7.4.1.7 Старший может выдать примитив Си-НАЧАТЬ запрос вместе с примитивом Си-ИСПОЛНЕНИЕ запрос.
7.4.2 Параметры услуги Си-ИСПОЛНЕНИЕ.
Таблица 5 - Параметры услуги Си-ИСПОЛНЕНИЕ
Наименование параметра | зпр | инд | отв | пдт |
Данные пользователя | Пл | У(=) | Пл | У(=) |
7.4.2.1 Данные пользователя
Этот параметр может передавать информацию неограниченного объема в соответствии с ссылающейся спецификацией. Он может содержать одно или несколько значений данных уровня представления из контекстов уровня представления в наборе определяемого контекста при выдаче примитива Си-ИСПОЛНЕНИЕ запрос.
Примечание - Ссылающаяся спецификация определяет использование этого параметра.
7.5 Услуга Си-ВОЗВРАТ
7.5.1 Назначение и использование
7.5.1.1 Си-ВОЗВРАТ является подтверждаемой услугой, которую может привлечь старший или младший, чтобы принудительно закончить выполнение ветви. Эта услуга может привести к потере прикладных семантик при передаче нижерасположенному сеансовому соединению, обеспечивающему эту ветвь.
7.5.1.2 Старший привлекает эту услугу, чтобы потребовать от младшего выполнить возврат. Он может выдать примитив Си-ВОЗВРАТ запрос в любой момент времени перед привлечением услуги Си-ИСПОЛНЕНИЕ.
7.5.1.3 Младший привлекает эту услугу для информирования старшего о своем отказе продолжать выполнение данной ветви. В частности, младший выдает примитив Си-ВОЗВРАТ запрос, чтобы сообщить старшему об отказе исполнения. Младший может выдать примитив Си-ВОЗВРАТ запрос в любое время перед привлечением услуги Си-ГОТОВНОСТЬ. Как часть завершения выполнения ветви младший должен сбросить все ресурсы в исходное состояние (т.е. установить граничные данные в начальное состояние).
7.5.1.4 Возможен конфликт двух примитивов Си-ВОЗВРАТ запрос. По этой причине доставка примитива индикация пользователю услуг СИВ, который был инициатором ассоциации, не гарантируется. Однако оба пользователя услуг СИВ будут осведомлены о том, что для данной ветви выполнен возврат.
7.5.1.5 Использование услуги Си-ВОЗВРАТ предполагает повторную синхронизацию нижерасположенного сеансового соединения, поддерживающего эту ветвь. При использовании версии 1 протокола СИВ это может привести к тому, что на уровне представления будет отражено изменение определенного набора контекста нижерасположенного соединения уровня представления, поддерживающего эту ветвь.
7.5.1.6 Старший может выдать примитив Си-НАЧАТЬ запрос вместе с примитивом Си-ВОЗВРАТ запрос или Си-ВОЗВРАТ ответ.
7.5.2 Параметры услуги Си-ВОЗВРАТ
В таблице 6 приведены параметры услуги Си-ВОЗВРАТ.
Таблица 6 - Параметры Си-ВОЗВРАТ
Наименование параметра | зпр | инд | отв | пдт |
Данные пользователя | Пл | У(=) | Пл | У(=) |
7.5.2.1 Данные пользователя
Этот параметр может переносить информацию неограниченного объема в соответствии с ссылающейся спецификацией. Он может содержать одно или несколько значений данных уровня представления из контекстов уровня представления в наборе определяемого контекста при выдаче примитива Си-ВОЗВРАТ запрос.
Примечание - Доставка параметра "данные пользователя" не гарантируется из-за возможного конфликта.
7.6 Услуга Си-ВОССТАНОВЛЕНИЕ
7.6.1 Назначение и использование
7.6.1.1 При сбое старший или младший может привлечь услугу Си-ВОССТАНОВЛЕНИЕ. В зависимости от запросчика эта услуга может быть подтверждаемой или неподтверждаемой.
7.6.1.2 Если запросчиком является старший, услуга Си-ВОССТАНОВЛЕНИЕ - подтверждаемая.
7.6.1.3 Если запросчиком является младший, услуга Си-ВОССТАНОВЛЕНИЕ - подтверждаемая факультативно. Получатель (т.е. старший) может среагировать передачей примитива Си-ВОССТАНОВЛЕНИЕ ответ, продолжая тем самым выполнение этой услуги. Как вариант старший может ответить примитивом Си-ВОССТАНОВЛЕНИЕ запрос, заканчивая тем самым выполнение этой услуги и начиная второе выполнение услуги Си-ВОССТАНОВЛЕНИЕ. При втором выполнении услуги Си-ВОССТАНОВЛЕНИЕ старший является запросчиком.
7.6.1.4 Ассоциация, используемая запросчиком, не должна использоваться для другого восстановления или другой ветви. Однако это требование не действует, если запросчиком является старший и он выдает примитив Си-ВОССТАНОВЛЕНИЕ запрос как ответ на примитив Си-ВОССТАНОВЛЕНИЕ индикация.
7.6.1.5 Запросчик должен обладать полномочием младшей синхронизации для нижерасположенного сеансового соединения, обеспечивающего эту ветвь. Однако это требование не действует, если запросчиком является старший и он выдает примитив Си-ВОССТАНОВЛЕНИЕ запрос как ответ на примитив Си-ВОССТАНОВЛЕНИЕ индикация.
7.6.2 Параметры услуги Си-ВОССТАНОВЛЕНИЕ
В таблице 7 приведены параметры услуги Си-ВОССТАНОВЛЕНИЕ. Описание каждого параметра приведено ниже.
Таблица 7 - Параметры Си-ВОССТАНОВЛЕНИЕ
Наименование параметра | зпр | инд | отв | пдт |
Состояние восстановления | О | О(=) | О | О(=) |
Идентификатор атомарного действия | О | О(=) | О | О(=) |
Идентификатор ветви | О | О(=) | О | О(=) |
Данные пользователя | Пл | У(=) | Пл | У(=) |
7.6.2.1 Состояние восстановления
7.6.2.1.1 Запросчик использует этот параметр для получения информации о состоянии идентифицируемой ветви. Получатель использует этот параметр для передачи своего ответа. В таблице 8 приведены значения этого параметра, когда запросчиком является младший или старший.
Таблица 8 - Значения параметра "состояние восстановления"
Запросчик - получатель | Значение запроса | Значение ответа |
Младший - старший | Готовность | Неизвестно или отложенная попытка |
Старший - младший | Исполнение | Выполнено |
7.6.2.1.2 Значения этого параметра имеют следующий смысл:
a) "готовность" используется младшим для информирования старшего о том, что он перед этим выдал предложение на исполнение. Следующая информация о младшем является истинной:
1) его граничные данные не могут быть установлены ни в конечное, ни в начальное состояние;
2) он несет ответственность за восстановление этой ветви. Поэтому он должен делать попытки восстановления после сбоя на прикладном уровне или безуспешного обмена данными (см. 7.6);
3) он не должен передавать старшему никаких последующих прикладных семантик, которые изменяют граничные данные этого атомарного действия;
b) "исполнение" используется старшим для информирования младшего о том, что он перед этим выдал команду на исполнение. Следующая информация о младшем является истинной:
1) его граничные данные находятся в конечном состоянии;
2) он несет ответственность за восстановление этой ветви. Поэтому он должен делать попытки восстановления после сбоя на прикладном уровне или безуспешного обмена данными (см. 7.6);
c) "неизвестно" используется старшим для информирования о том, что он не имеет данных атомарного действия для этой ветви;
d) "отложенная попытка" используется получателем для информирования о том, что в данный момент он не может работать с восстановлением. В этом случае запросчик выдает примитив Си-ВОССТАНОВЛЕНИЕ запрос позже.
Примечание - В общем случае значение "отложенная попытка" используется, когда младший получает примитив Си-ВОССТАНОВЛЕНИЕ индикация и не может установить ассоциацию ни с одним из своих младших.
е) "выполнено" указывает, что младший закончил исполнение.
7.6.2.2 Идентификатор атомарного действия
Этот параметр указывает атомарное действие, ветвь которого подлежит восстановлению. Он имеет тот же формат и значение, что и соответствующий параметр услуги Си-НАЧАТЬ (см. 7.1.2.1).
7.6.2.3 Идентификатор ветви
Этот параметр указывает ветвь, которая подлежит восстановлению. Он имеет тот же формат и значение, что и соответствующий параметр услуги Си-НАЧАТЬ (см. 7.1.2.2).
7.6.2.4 Данные пользователя
Этот параметр может переносить информацию неограниченного объема в соответствии со ссылающейся спецификацией. Он может содержать одно или несколько значений данных уровня представления из контекста уровня представления в определяемом наборе контекста при выдаче примитива Си-ВОССТАНОВЛЕНИЕ запрос.
Примечание - Использование этого параметра определяет ссылающаяся спецификация. Например, он может повторить информацию, содержавшуюся в примитиве Си-ВОССТАНОВЛЕНИЕ запрос, но утерянную при сбое, или факультативно предусмотреть время повторения в случае, когда параметр "состояние восстановления" имеет значение "отложенная попытка".
8 УПОРЯДОЧЕНИЕ ИНФОРМАЦИИ
Разрешенные последовательности примитивов услуг СИВ для ассоциации определены в этом разделе в виде таблиц состояний. Таблицы состояний представлены в понятиях событий и состояний.
8.1 Общее описание
8.1.1 В этом разделе определяются последовательности, относящиеся к пользователю, который действует либо в роли старшего, либо в роли младшего. Эти последовательности относятся к одиночной ассоциации для одной ветви атомарного действия. Однако возможно перекрытие двух ветвей, если примитив Си-НАЧАТЬ запрос выдается вместе с примитивом Си-ИСПОЛНЕНИЕ запрос или Си-ВОЗВРАТ запрос.
8.1.2 В таблицах 9 и 10 определены элементы, используемые в таблице состояний.
В таблице 9 определены сокращенное наименование и описание каждого события.
Таблица 9 - Состояния
Состояние | Описание |
I | Холостое состояние |
А1 | Си-НАЧАТЬ запрос выдан |
А2 | Си-НАЧАТЬ запрос подтвержден |
A3 | Си-НАЧАТЬ запрос и Си-ПОДГОТОВКА запрос выданы |
А4 | Си-НАЧАТЬ запрос подтвержден, Си-ПОДГОТОВКА запрос выдан |
А5 | Си-ГОТОВНОСТЬ индикация получен |
А6 | Си-ИСПОЛНЕНИЕ запрос выдан |
А7 | Си-ГОТОВНОСТЬ индикация не получен, Си-ВОЗВРАТ запрос выдан |
А8 | Си-ГОТОВНОСТЬ индикация получен, Си-ВОЗВРАТ запрос выдан |
А9 | Си-ВОЗВРАТ индикация получен |
А10 | Си-ИСПОЛНЕНИЕ запрос и Си-НАЧАТЬ запрос выданы |
A11 | Си-ГОТОВНОСТЬ индикация не получен, Си-ВОЗВРАТ запрос и Си-НАЧАТЬ запрос выданы |
A12 | Си-ВОЗВРАТ индикация получен после выдачи Си-ВОЗВРАТ запрос и Си-НАЧАТЬ запрос |
A13 | Си-ГОТОВНОСТЬ индикация получен, а Си-ВОЗВРАТ запрос и Си-НАЧАТЬ запрос выданы |
B1 | Си-НАЧАТЬ индикация получен |
B2 | Си-НАЧАТЬ индикация получен и Си-НАЧАТЬ ответ выдан |
B3 | Си-НАЧАТЬ индикация и Си-ПОДГОТОВКА индикация получены |
B4 | Си-НАЧАТЬ индикация и Си-ПОДГОТОВКА индикация получены, Си-НАЧАТЬ ответ выдан |
B5 | Си-ГОТОВНОСТЬ запрос выдан, Си-ПОДГОТОВКА индикация не получен |
B6 | Си-ГОТОВНОСТЬ запрос выдан, Си-ПОДГОТОВКА индикация получен |
B7 | Си-ИСПОЛНЕНИЕ индикация получен |
B8 | Си-ВОЗВРАТ индикация получен |
B9 | Си-ВОЗВРАТ запрос выдан |
B10 | Си-ИСПОЛНЕНИЕ индикация и Си-НАЧАТЬ индикация получены |
B11 | Си-ВОЗВРАТ и Си-НАЧАТЬ индикация получены |
X1 | Си-ВОССТАНОВЛЕНИЕ (исполнение) запрос выдан |
X2 | Си-ВОССТАНОВЛЕНИЕ (готовность) индикация получен |
Y1 | Си-ВОССТАНОВЛЕНИЕ (исполнение) индикация получен |
Y2 | Си-ВОССТАНОВЛЕНИЕ (готовность) запрос выдан |
В таблице 10 определены события.
Таблица 10 - События
Сокращенное имя | Отправитель | Имя и описание |
Си-НАЧАТЬ зпр | Старший | Примитив Си-НАЧАТЬ запрос |
Си-НАЧАТЬ инд | ПсСИВ | Примитив Си-НАЧАТЬ индикация к младшему |
Си-НАЧАТЬ отв | Младший | Примитив Си-НАЧАТЬ ответ |
Си-НАЧАТЬ пдт | ПсСИВ | Примитив Си-НАЧАТЬ подтверждение к старшему |
Си-ПОДГОТОВКА зпр | Старший | Примитив Си-ПОДГОТОВКА запрос |
Си-ПОДГОТОВКА инд | ПсСИВ | Примитив Си-ПОДГОТОВКА индикация к младшему |
Си-ГОТОВНОСТЬ зпр | Младший | Примитив Си-ГОТОВНОСТЬ запрос |
Си-ГОТОВНОСТЬ инд | ПсСИВ | Примитив Си-ГОТОВНОСТЬ индикация к старшему |
Си-ИСПОЛНЕНИЕ зпр | Старший | Примитив Си-ИСПОЛНЕНИЕ запрос |
Си-ИСПОЛНЕНИЕ инд | ПсСИВ | Примитив Си-ИСПОЛНЕНИЕ индикация к младшему |
Си-ИСПОЛНЕНИЕ отв | Младший | Примитив Си-ИСПОЛНЕНИЕ ответ |
Си-ИСПОЛНЕНИЕ пдт | ПсСИВ | Примитив Си-ИСПОЛНЕНИЕ подтверждение к старшему |
Си-ВОЗВРАТ зпр | Старший или младший | Примитив Си-ВОЗВРАТ запрос |
Си-ВОЗВРАТ инд | ПсСИВ | Примитив Си-ВОЗВРАТ индикация к младшему или старшему |
Си-ВОЗВРАТ отв | Старший или младший | Примитив Си-ВОЗВРАТ ответ |
Си-ВОЗВРАТ пдт | ПсСИВ | Примитив Си-ВОЗВРАТ подтверждение к младшему или старшему |
Си-ИСПОЛНЕНИЕ + Си-НАЧАТЬ зпр | Старший | Примитив Си-ИСПОЛНЕНИЕ запрос с примитивом Си-НАЧАТЬ запрос |
Си-ИСПОЛНЕНИЕ + Си-НАЧАТЬ инд | ПсСИВ | Примитив Си-ИСПОЛНЕНИЕ индикация с примитивом Си-НАЧАТЬ индикация к младшему |
Си-ВОЗВРАТ + Си-НАЧАТЬ зпр | Старший | Примитив Си-ВОЗВРАТ запрос с примитивом Си-НАЧАТЬ запрос |
Си-ВОЗВРАТ + Си-НАЧАТЬ инд | ПсСИВ | Примитив Си-ВОЗВРАТ индикация с примитивом Си-НАЧАТЬ индикация к младшему или старшему |
Си-ВОССТАНОВЛЕНИЕ (исполнение) зпр | Старший | Примитив Си-ВОССТАНОВЛЕНИЕ (исполнение) запрос (состояние восстановления = исполнение) |
Си-ВОССТАНОВЛЕНИЕ (исполнение) инд | ПсСИВ | Примитив Си-ВОССТАНОВЛЕНИЕ (исполнение) индикация к младшему (состояние восстановления = исполнение) |
Си-ВОССТАНОВЛЕНИЕ | Младший | Примитив Си-ВОССТАНОВЛЕНИЕ (готовность) запрос (состояние восстановления = готовность) |
Си-ВОССТАНОВЛЕНИЕ (готовность) инд | ПсСИВ | Примитив Си-ВОССТАНОВЛЕНИЕ (готовность) индикация к старшему (состояние восстановления = готовность) |
Си-ВОССТАНОВЛЕНИЕ (выполнено) отв | Младший | Примитив Си-ВОССТАНОВЛЕНИЕ (выполнено) запрос (состояние восстановления = выполнено) |
Си-ВОССТАНОВЛЕНИЕ | ПсСИВ | Примитив Си-ВОССТАНОВЛЕНИЕ (выполнено) подтверждение к старшему (состояние восстановления = выполнено) |
Си-ВОССТАНОВЛЕНИЕ (отложенная попытка) отв | Старший или младший | Примитив Си-ВОССТАНОВЛЕНИЕ (отложенная попытка) ответ (состояние восстановления = отложенная попытка) |
Си-ВОССТАНОВЛЕНИЕ (отложенная попытка) пдт | ПсСИВ | Примитив Си-ВОССТАНОВЛЕНИЕ (отложенная попытка) подтверждение к младшему или старшему (состояние восстановления = отложенная попытка) |
Си-ВОССТАНОВЛЕНИЕ (неизвестно) отв | Старший | Примитив Си-ВОССТАНОВЛЕНИЕ (неизвестно) ответ (состояние восстановления = неизвестно) |
Си-ВОССТАНОВЛЕНИЕ | ПсСИВ | Примитив Си-ВОССТАНОВЛЕНИЕ (неизвестно) подтверждение (состояние восстановления = не известно) |
8.1.3 В таблицах 11-14 определены состояния. Для удобства и ясности таблицы представлены раздельно. Они используют сокращения и обозначения таблиц 9 и 10.
В таблице 11 представлены состояния и события для СЭП СИВ, используемого старшим вплоть до завершения ветви либо до сбоя на прикладном уровне или безуспешного обмена данными в зависимости от того, что произошло раньше.
Таблица 11 - Состояния для старшего. Нормальное выполнение
Событие | Предыдущее состояние | |||||||||||||
I | А1 | А2 | A3 | А4 | А5 | А6 | А7 | А8 | А9 | А10 | A11 | А12 | А13 | |
Си-НАЧАТЬ зпр | А1 | |||||||||||||
Си-НАЧАТЬ пдт | А2 | А4 | ||||||||||||
Си-ПОДГОТОВКА зпр | A3 | А4 | ||||||||||||
Си-ГОТОВНОСТЬ инд | А5 | А5 | А5 | А5 | ||||||||||
Си-ИСПОЛНЕНИЕ зпр | А6 |
| ||||||||||||
Си-ИСПОЛНЕНИЕ инд | I | А1 | ||||||||||||
Си-ВОЗВРАТ зпр | А7 | А7 | А7 | А7 | А5 | |||||||||
Си-ВОЗВРАТ пдт | I | I | А1 | А1 | ||||||||||
Си-ВОЗВРАТ инд | А9 | А9 | А9 | А9 | А9 | А12 | ||||||||
Си-ВОЗВРАТ отв | I | А1 | ||||||||||||
Си-ИСПОЛНЕНИЕ + Си-НАЧАТЬ зпр | А10 | |||||||||||||
Си-ВОЗВРАТ + Си-НАЧАТЬ зпр | А11 | А11 | А11 | А11 | А13 |
В таблице 12 представлены состояния и события для СЭП СИВ, используемого младшим вплоть до завершения ветви либо до сбоя на прикладном уровне или безуспешного обмена данными в зависимости от того, что произошло раньше.
Таблица 12 - Состояния для младшего. Нормальное выполнение
| Предыдущее состояние | |||||||||||
I | В1 | В2 | В3 | В4 | В5 | В6 | В7 | В8 | В9 | В10 | В11 | |
Си-НАЧАТЬ инд | В1 | |||||||||||
Си-НАЧАТЬ зпр | В2 | В4 | ||||||||||
Си-ПОДГОТОВКА инд | В3 | В4 | В6 | |||||||||
Си-ГОТОВНОСТЪ зпр | В5 | В5 | В6 | В6 | ||||||||
Си-ИСПОЛНЕНИЕ инд | В7 | В7 | ||||||||||
Си-ИСПОЛНЕНИЕ отв | I | В1 | ||||||||||
Си-ВОЗВРАТ инд | В8 | В8 | В8 | В8 | В8 | В8 | В8 | |||||
Си-ВОЗВРАТ отв | I | В1 | ||||||||||
Си-ВОЗВРАТ зпр | В9 | В9 | В9 | В9 | ||||||||
Си-ВОЗВРАТ пдт | I | |||||||||||
Си-ИСПОЛНЕНИЕ + Си-НАЧАТЬ инд | В10 | В10 | ||||||||||
Си-ВОЗВРАТ + Си-НАЧАТЬ инд | В11 | В11 | В11 | В11 | В11 | В11 | В11 |
В таблице 13 представлены состояния и события для СЭП СИВ, используемые старшим при попытке восстановления ветви.
Таблица13 - Состояния для старшего. Восстановление
Событие | Предыдущее состояние | ||
I | X1 | Х2 | |
Си-ВОССТАНОВЛЕНИЕ (исполнение) зпр | XI | ||
Си-ВОССТАНОВЛЕНИЕ (выполнено) пдт | I | ||
Си-ВОССТАНОВЛЕНИЕ (отложенная попытка) пдт | I | ||
Си-ВОССТАНОВЛЕНИЕ (готовность) инд | Х2 | ||
Си-ВОССТАНОВЛЕНИЕ (неизвестно) отв | I | ||
Си-ВОССТАНОВЛЕНИЕ (отложенная попытка) отв | I |
В таблице 14 представлены состояния и события для СЭП СИВ, используемые младшим при попытке восстановления ветви.
Таблица 14 - Состояния для младшего. Восстановление
Событие | Предыдущее состояние | ||
I | Y1 | Y2 | |
Си-ВОССТАНОВЛЕНИЕ (исполнение) инд | Y1 | ||
Си-ВОССТАНОВЛЕНИЕ (выполнено) отв | I | ||
Си-ВОССТАНОВЛЕНИЕ (отложенная попытка) отв | I | ||
Си-ВОССТАНОВЛЕНИЕ (готовность) зпр | Y2 | ||
Си-ВОССТАНОВЛЕНИЕ (неизвестно) пдт | I | ||
Си-ВОССТАНОВЛЕНИЕ (отложенная попытка) пдт | I |
8.2 События
8.2.1 В таблице состояний приведены следующие события:
a) примитив запроса или ответа, выданный для СЭП СИВ пользователем услуг СИВ;
b) примитив индикации или подтверждения, выданный СЭП СИВ пользователю услуг СИВ;
c) совместная выдача двух примитивов запроса пользователем услуг СИВ для СЭП СИВ;
d) совместная выдача двух примитивов индикации СЭП СИВ пользователю услуг СИВ.
8.2.2 События перечислены в таблице 10. Совместная выдача примитивов услуги СИВ не представляется как событие, а рассматривается в виде последовательного появления отдельных событий этой таблицы.
8.3 Состояния
8.3.1 Состояния, определенные в таблице 9, представлены нотацией Zn, где Z - заглавные буквы (J, А, В, С, Х или Y); n - ноль или целое число.
8.4 Интерпретация таблицы состояний
8.4.1 Для старшего и младшего СЭП СИВ инициализируется в холостое состояние "I". Это происходит, когда СЭП СИВ впервые используется в ассоциации. Если поддерживающая ассоциация нормально или ненормально освобождена, СЭП СИВ прекращает свое существование.
8.4.2 В таблице состояний пересечение события (строка) и состояния (столбец) образует клетку. Непустая клетка представляет комбинацию события и состояния, определенную для данного СЭП СИВ. При появлении такого пересечения СЭП СИВ переходит в состояние, указанное в этой клетке.
8.4.3 Пустая клетка представляет комбинацию события и состояния, не определенную для данного СЭП СИВ.
8.5 Завершение выполнения ветви
8.5.1 Для старшего выполнение ветви завершается одним из следующих событий:
a) Си-ИСПОЛНЕНИЕ подтверждение;
b) Си-ВОЗВРАТ подтверждение;
c) Си-ВОЗВРАТ ответ;
d) Си-ВОССТАНОВЛЕНИЕ (выполнено) подтверждение;
e) сбоем на прикладном уровне или безуспешным обменом данными до выдачи примитива Си-ИСПОЛНЕНИЕ запрос.
8.5.2 Для младшего выполнение ветви завершается одним из следующих событий:
a) Си-ИСПОЛНЕНИЕ ответ;
b) Си-ВОЗВРАТ ответ;
c) Си-ВОЗВРАТ подтверждение;
d) Си-ВОССТАНОВЛЕНИЕ (выполнено) ответ;
e) Си-ВОССТАНОВЛЕНИЕ (неизвестно) подтверждение;
f) сбоем на прикладном уровне или безуспешным обменом данными до выдачи примитива Си-ГОТОВНОСТЬ запрос.
8.6 Услуги конфликтов и разрушений
8.6.1 При прохождении по нижерасположенному соединению сеансового уровня прикладная семантика может быть потеряна в случае использования услуги Си-ВОЗВРАТ, если соответствующий примитив индикации или подтверждения еще не был выдан.
8.6.2 Ни одна из услуг СИВ, кроме Си-ВОЗВРАТ, не является разрушающей.
8.6.3 Требование к запросчику услуг Си-НАЧАТЬ и Си-ВОЗВРАТ сохранять полномочия младшей синхронизации предотвращает конфликт между этими услугами.
8.6.4 На примитив Си-ВОССТАНОВЛЕНИЕ (готовность) индикация старший может ответить примитивом Си-ВОССТАНОВЛЕНИЕ (исполнение) запрос, не обладая полномочием младшей синхронизации, но конфликт здесь невозможен.
9 ИСПОЛЬЗОВАНИЕ СИВ
9.1 Общее описание
9.1.1 Для определенной ассоциации услуги СИВ могут использоваться в любое время при наличии последовательности любых других услуг СЭП или услуг уровня представления кроме указанных ниже.
9.1.2 Чтобы отличить свои семантики от семантик других СЭП, использующих ту же ассоциацию, СЭП СИВ использует свой собственный контекст уровня представления. Параметры СИВ "данные пользователя" (при их наличии) передаются в виде одного или нескольких значений данных уровня представления, которые передаются непосредственно услугам уровня представления или из этих услуг.
9.2 Использование СИВ основной взаимодействующей услугой
9.2.1 СИВ может быть введен в ссылающуюся спецификацию, если он предусматривает в своих примитивах услуг параметр для передачи семантик СИВ. Такая ссылающаяся спецификация называется основной взаимодействующей услугой. В приложении В ГОСТ Р ИСО/МЭК 9805 определены функциональные характеристики использования СИВ основной взаимодействующей услугой.
9.2.2 Ограничения, налагаемые на использование полномочий, определенное в настоящем стандарте, могут не иметь отношения к основной взаимодействующей услуге. Однако ссылающаяся спецификация несет ответственность за предотвращение конфликтных ситуаций, которые не охватываются правилами упорядочения СИВ (см. раздел 8).
9.3 Использование услуг повторной синхронизации в версии 1 протокола СИВ
9.3.1 Услуги СИВ не могут использоваться ссылающейся спецификацией, которая использует точки синхронизации и повторной синхронизации сеансового уровня способом, не имеющим отношения к семантикам СИВ.
9.3.2 Ссылающаяся спецификация может использовать точки синхронизации и повторной синхронизации сеансового уровня для проверки указываемых средств. Это может быть наблюдаемо или ненаблюдаемо со стороны примитивов услуг такой ссылающейся спецификации.
9.4 Использование услуг синхронизации и повторной синхронизации сеансового уровня в версии 2 протокола СИВ
9.4.1 Услуги СИВ не могут использоваться ссылающейся спецификацией, которая использует повторную синхронизацию сеансового уровня способом, не относящимся к семантикам СИВ. В частности, ссылающаяся спецификация может использовать повторную синхронизацию сеансового уровня только при обстоятельствах, при которых невозможна повторная синхронизация без разрушения любых процедур услуг СИВ, кроме примитивов Си-ГОТОВНОСТЬ запрос, Си-ПОДГОТОВКА запрос и Си-НАЧАТЬ ответ.
Примечание - Например, ссылающаяся спецификация может использовать услуги Пр-ПОВТОРНАЯ-СИНХРОНИЗАЦИЯ (повторный пуск) или Пр-ПОВТОРНАЯ-СИНХРОНИЗАЦИЯ (установка) до окончания фазы 1.
9.4.2 Ссылающаяся спецификация может использовать точки синхронизации (младшей или старшей) сеансового уровня. Однако ссылающаяся спецификация должна быть осведомлена о том, что услуги СИВ также используют точки синхронизации сеансового уровня.
9.5 Использование СИВ с активностью сеансового уровня
9.5.1 Услуги СИВ не могут использоваться вне активности сеансового уровня, если для поддерживающей ассоциации был выбран функциональный блок "административное управление активностью" сеансового уровня.
9.6 Использование услуги срочной передачи в версии 1 протокола СИВ
9.6.1 При использовании услуги срочной передачи на сеансовом уровне пользователь услуг СИВ должен:
a) отвечать на примитив Си-НАЧАТЬ индикация примитивом Си-НАЧАТЬ ответ;
b) не выдавать примитив Си-ВОЗВРАТ запрос, пока не будет получен примитив Си-НАЧАТЬ подтверждение.
9.6.2 Эти ограничения не действуют, если услуга срочной передачи сеансового уровня не используется.
Примечание - Использование услуги повторной синхронизации сеансового уровня для Си-ВОЗВРАТ может вызвать аннулирование данных пользователя вне атомарного действия. Если услуга срочной передачи транспортного уровня используется сеансовым уровнем и перечисленные выше ограничения не соблюдаются, услуга Си-НАЧАТЬ и предшествующие ей данные пользователя могут быть аннулированы. Предполагается, что будущие изменения стандартов по сеансовому уровню смогут исключить такую вероятность и снять указанные ограничения.
9.7 Использование услуг уровня представления в версии 2 протокола СИВ
Примитив Си-НАЧАТЬ запрос не может быть выдан, если примитив Пр-ИЗМЕНЕНИЕ-КОНТЕКСТА подтверждение задержан и выбран функциональный блок "восстановление контекста" уровня представления.
9.8 Начало ветви в версии 1 протокола СИВ
Если примитив запроса ссылающейся спецификации привлек функцию, выполнение которой (успешное или безуспешное) указано соответствующим примитивом подтверждения (или индикации), то примитив Си-НАЧАТЬ запрос не может быть выдан между примитивами запроса и подтверждения (или индикации) ссылающейся спецификации. Это ограничение исключает неоднозначное понимание конкретного момента времени начала ветви.
ПРИЛОЖЕНИЕ А (обязательное). ПРАВИЛА ПОЛЬЗОВАТЕЛЯ УСЛУГ СИВ
ПРИЛОЖЕНИЕ А
(обязательное)
А.1 Введение
В данном приложении определяются правила пользователя услуг СИВ, которые должны быть введены в ссылающуюся спецификацию. Кроме этих правил, ссылающаяся спецификация может содержать некоторые ограничивающие правила при условии, что они не противоречат правилам, определенным в этом приложении.
А.1.1 Категории правил
В этом приложении определяются следующие четыре категории правил пользователя услуг СИВ:
a) правила использования примитива услуги СИВ - ограничение на использование примитива услуги СИВ для ветви атомарного действия. Эти правила определены в А.3;
b) правила манипуляции данными атомарного действия - условия, необходимые пользователю услуг СИВ для записи или игнорирования данных атомарного действия для ветви. Эти правила определены в А.4;
c) правила манипуляции граничными данными - ограничения, налагаемые на пользователя услуг СИВ при обработке им граничных данных. Эти правила определены в А.5;
d) правила передачи данных пользователя услуг СИВ - ограничения, налагаемые на пользователя услуг СИВ при использовании им примитивов услуги передачи данных уровня представления, которые требуют обработки граничных данных. Эти правила определены в А.6.
А.1.2 Рассмотрение эвристического решения
А.1.2.1 Если пользователь услуг СИВ принимает эвристическое решение (см. 6.3), то настоящий стандарт смягчает требования к числу правил пользователя услуг СИВ, необходимых для обеспечения атомарности.
А.1.2.2 При наличии эвристического решения смягчаются следующие правила обслуживания граничных данных:
правило А.3.5-b;
правило А.3.7;
правило А.3.10-b.
А.1.2.3 При наличии эвристического решения смягчаются следующие правила последовательности групповой ветви:
правило А.3.4.1-а;
правило А.3.5-а;
правило А.3.6.1-b;
правило А.3.9.1-a;
правило А.3.10-a.
А.1.2.4 Все другие, не указанные выше, правила должны всегда соблюдаться, даже если атомарность не требуется. Единственным исключением является случай использования СИВ основной взаимодействующей услугой (см. А.3).
А.2 Соответствие
А.2.1 Чтобы соответствовать настоящему стандарту, ссылающаяся спецификация должна предусматривать приведенные ниже положения а) и b) или она должна потребовать от соответствующих ей ссылающихся спецификаций обеспечить эти положения.
А.2.2 К положениям о соответствии относятся:
a) включение путем ссылок или прямое введение правил пользователя услуг СИВ, определенных в данном приложении;
b) включение требований соответствия к правилам пользователя услуг СИВ, определенным в данном приложении, во все требования, которым должна удовлетворять реализация, претендующая на соответствие спецификации.
А.З Правила использования примитивов услуги СИВ
Эти правила налагают ограничения на использование примитивов услуги СИВ для ветви атомарного действия.
Ниже приведено пять типов правил использования примитивов услуги СИВ:
a) правила упорядочения мультиветви - это ограничение основано на предыдущей выдаче или получении примитивов услуги СИВ в другой ветви этого атомарного действия для данного пользователя услуг СИВ;
b) правило восстановления мультиветви - это ограничение основано либо на предыдущей записи или игнорировании данных атомарного действия для ветви атомарного действия данного пользователя услуг СИВ. Данные атомарного действия используются при восстановлении;
c) правило восстановления одиночной ветви - это ограничение основано либо на предыдущей записи или игнорировании данных атомарного действия для этой ветви. Данные атомарного действия используются при восстановлении;
d) правило граничных данных - это ограничение действует на сброс данных и конечное или начальное состояние;
с) правило использования ассоциации - это ограничение действует на обладание полномочием сеансового уровня для нижерасположенного соединения сеансового уровня. Это правило неприменимо, если СИВ используется основной взаимодействующей услугой.
А.3.1 Примитив Си-НАЧАТЬ запрос
Этот примитив, используемый для начала ветви в дереве атомарного действия, не может быть выдан, если:
a) примитив Си-ГОТОВНОСТЬ запрос выдан старшему, который является побочным или промежуточным (правило упорядочения мультиветви - правило А.3.1-а);
b) примитив Си-ВОЗВРАТ запрос выдан старшему для побочного или промежуточного (правило упорядочения мультиветви - правило А.3.1-b);
c) примитив Си-ИСПОЛНЕНИЕ запрос выдан младшему для главного или промежуточного (правило упорядочения мультиветви - правило А.3.1-с);
d) идентификатор ветви атомарного действия уже использован для другой ветви в том же атомарном действии (правило упорядочения мультиветви - правило А.3.1-d);
e) пользователь услуг СИВ не обладает полномочием младшей синхронизации до тех пор, пока примитив не выдан вместе с примитивом Си-ИСПОЛНЕНИЕ запрос для другого атомарного действия (правило использования ассоциации - правило А.3.1-е).
А.3.2 Примитив Си-ПОДГОТОВКА запрос
Этот примитив не имеет правил пользователя услуг СИВ, управляющих его пользованием.
А.3.3 Примитив Си-ГОТОВНОСТЬ запрос
Этот примитив может быть выдан только в том случае, если:
a) пользователь услуг СИВ получил примитив Си-ГОТОВНОСТЬ индикация или Си-ВОССТАНОВЛЕНИЕ (готовность) индикация от всех своих младших в дереве атомарного действия, которые могут не подвергнуться возврату (правило упорядочения мультиветви - правило А.3.3-а);
b) данные атомарного действия были зарегистрированы, что требуется для выдачи предложения на исполнение, как определено в А.4.1 (правило восстановления мультиветви и одиночной ветви - правило А.3.3-b);
с) граничные данные могут быть сброшены в начальное или конечное состояние (правило граничных данных - правило А.3.3-с).
Примечание - выражение "могут не подвергнуться возврату" охватывает ситуации, когда пользователь услуг СИВ определяет, что младший будет подвергнут возврату, но он еще не получил команду на возврат.
А.3.4 Примитив Си-ИСПОЛНЕНИЕ запрос
А.3.4.1 Этот примитив может быть выдан только в том случае, если:
a) промежуточный пользователь услуг СИВ получил от старшего примитив Си-ИСПОЛНЕНИЕ индикация или Си-ВОССТАНОВЛЕНИЕ (готовность) индикация (правило упорядочения мультиветви - правило А.3.4.1-а);
b) пользователь услуг СИВ получил примитив Си-ГОТОВНОСТЬ индикация или Си-ВОССТАНОВЛЕНИЕ (готов) индикация от всех своих младших в дереве атомарного действия, которые не будут подвергнуты возврату со стороны главного (правило упорядочения мультиветви - правило А.3.4.1-b);
c) были записаны данные атомарного действия, необходимые для │команды на исполнение, как определено в А.4.3.2 (правило восстановления мультиветви - правило А.3.4.1-с);
d) для главного граничные данные могут быть сброшены в начальное или конечное состояние (правило граничных данных - правило А.3.4.1-d);
e) пользователь услуг СИВ обладает полномочием старшая синхронизация/активность при использовании версии 1 протокола СИВ, или полномочием младшей синхронизации при использовании версии 2 протокола СИВ (правило использования ассоциации - правило А.3.4.1-е).
А.3.5 Примитив Си-ИСПОЛНЕНИЕ ответ
Этот примитив может быть выдан только в том случае, если:
a) пользователь услуг СИВ записал данные атомарного действия, означающие команду на исполнение для всех своих младших в дереве атомарного действия, относительно которых он не получал примитива Си-ИСПОЛНЕНИЕ подтверждение или Си-ВОССТАНОВЛЕНИЕ (выполнено) подтверждение (комбинация правила упорядочения мультиветви и правила восстановления мультиветви - правило А.3.5-а);
b) граничные данные были сброшены в конечное состояние (правило граничных данных - правило А.3.5-b);
c) данные атомарного действия для этой ветви были проигнорированы (правило восстановления одиночной ветви - правило А.3.5-с);
d) данные атомарного действия для всех младших были проигнорированы или данные атомарного действия были изменены, чтобы указать команду на исполнение (правило восстановления мультиветви - правило A.3.5-d).
А.3.6 Примитив Си-ВОЗВРАТ запрос
А.3.6.1 Этот примитив может быть выдан промежуточным младшему только в том случае, если:
a) примитив Си-ГОТОВНОСТЬ запрос или Си-ВОССТАНОВЛЕНИЕ (готовность) запрос не был выдан старшему (правило упорядочения мультиветви - правило А3.6.1-а);
b) примитив Си-ВОЗВРАТ индикация или примитив Си-ВОССТАНОВЛЕНИЕ (неизвестно) подтверждение получен от старшего (правило упорядочения мультиветви - правило А.3.6.1-b).
А.3.6.2 При выдаче промежуточным или побочным старшему примитива Си-ВОЗВРАТ запрос граничные данные должны быть сброшены в начальное состояние (правило граничных данных - правило А.3.6.2).
А.3.7 Примитив Си-ВОЗВРАТ индикация
При получении от старшего примитива Си-ВОЗВРАТ индикация граничные данные должны быть сброшены в начальное состояние (правило граничных данных - правило А.3.7).
А.3.8 Примитив Си-ВОССТАНОВЛЕНИЕ (готовность) запрос
Этот примитив может быть выдан только в том случае, если:
a) пользователь услуг СИВ получил примитив Си-ГОТОВНОСТЬ индикация или Си-ВОССТАНОВЛЕНИЕ (готов) индикация от всех своих младших в дереве атомарного действия, которые не будут подвержены возврату (правило упорядочения мультиветви - правило А.3.8-а);
b) были записаны данные атомарного действия, необходимые для команды на исполнение, как определено в А.4.1 (правило восстановления мультиветви и одиночной ветви - правило А.3.8-b);
c) граничные данные могут быть сброшены в начальное или конечное состояние (правило граничных данных - правило А.3.8-с);
d) пользователь услуг СИВ обладает полномочием младшей синхронизации (правило использования ассоциации - правило A.3.8-d).
А.3.9 Примитив Си-ВОССТАНОВЛЕНИЕ (исполнение) запрос
А.3.9.1 Этот примитив может быть выдан только в том случае, если:
a) промежуточный пользователь услуг СИВ получил от старшего примитив Си-ИСПОЛНЕНИЕ индикация или Си-ВОССТАНОВЛЕНИЕ (исполнение) индикация (правило упорядочения мультиветви - правило А.3.9.1-а);
b) главный пользователь услуг СИВ получил примитив Си-ГОТОВНОСТЬ индикация или Си-ВОССТАНОВЛЕНИЕ (готовность) индикация от всех своих младших в дереве атомарного действия, которые не будут подвержены возврату (правило упорядочения мультиветви - правило А.3.9.1-b);
c) для главного данные атомарного действия, требуемые для выполнения восстановления, были записаны для всех младших ветвей, которые не будут подвержены возврату со стороны главного (правило восстановления мультиветви - правило А.3.9.1-с);
d) граничные данные могут быть сброшены главным в конечное состояние (правило граничных данных - правило A.3.9.1-d);
e) пользователь услуг СИВ обладает полномочием младшей синхронизации, если только от младшего не получен ответ на примитив Си-ВОССТАНОВЛЕНИЕ (готовность) индикация (правило использования ассоциации - правило А.3.9.1-е).
А.3.9.2 Если главный выдал примитив Си-ВОССТАНОВЛЕНИЕ запрос, он должен сбросить граничные данные в конечное состояние (правило граничных данных - правило А.3.9.2).
А.3.10 Примитив Си-ВОССТАНОВЛЕНИЕ (выполнено) ответ
Этот примитив может быть выдан только в том случае, если:
а) пользователь услуг СИВ записал данные, означающие команду на исполнение для всех своих младших в дереве атомарного действия, для которых он не получал примитива Си-ИСПОЛНЕНИЕ подтверждение или Си-ВОССТАНОВЛЕНИЕ (выполнено) подтверждение (комбинация правила упорядочения мультиветви и правила восстановления мультиветви - правило А.3.10-а);
b) граничные данные были сброшены в конечное состояние (правило граничных данных - правило А.3.10-b);
c) данные атомарного действия для этой ветви не были записаны (правило восстановления одиночной ветви - правило А.3.10-с);
d) данные атомарного действия для всех младших не были записаны или были изменены, чтобы указать команду на исполнение (правило восстановления мультиветви - правило А.3.10-d).
А.4 Правила обслуживания данных атомарного действия
Эти правила являются совокупностью условий, необходимых пользователю услуг СИВ, для записи или игнорирования данных атомарного действия для ветви. Пользователь услуг СИВ использует данные атомарного действия для сохранения информации ответственности за восстановление ветви.
А.4.1 Запись данных атомарного действия, означающих предложение на исполнение
Данные атомарного действия, указывающие предложение на исполнения, могут быть записаны только в том случае, если:
a) соблюдается правило А.3.3-а;
b) соблюдается правило А.3.3-с.
Следующие данные атомарного действия записываются пользователем услуг СИВ для выдачи предложения на исполнение:
a) данные атомарного действия, необходимые для восстановления всех своих младших, которые не будут подвержены возврату;
b) данные атомарного действия, необходимые при выполнении восстановления со стороны старшего.
А.4.2 Игнорируемые данные атомарного действия, указывающие предложение на исполнение
Данные атомарного действия, указывающие предложение на исполнение, могут игнорироваться только в том случае, если:
а) от старшего получен примитив Си-ВОЗВРАТ индикация или примитив Си-ВОССТАНОВЛЕНИЕ (неизвестно) подтверждение;
b) от старшего получен примитив Си-ИСПОЛНЕНИЕ индикация или примитив Си-ВОССТАНОВЛЕНИЕ (исполнено) индикация и от всех младших получен примитив Си-ИСПОЛНЕНИЕ подтверждение или примитив Си-ВОССТАНОВЛЕНИЕ (выполнено) подтверждение.
А.4.3 Запись данных атомарного действия, указывающих команду на исполнение
А.4.3.1 Данные атомарного действия, указывающие команду исполнения, могут быть записаны только в том случае, если:
a) соблюдается правило А.3.4.1-а;
b) соблюдается правило А.3.4.1-b;
c) соблюдается правило A.3.4.1-d.
А.4.3.2 Следующие данные атомарного действия записываются старшим пользователем услуг СИВ для команды на исполнение:
- данные атомарного действия, необходимые для выполнения восстановления для всех младших, которые не будут подвержены возврату.
А.4.4 Игнорируемые данные атомарного действия, указывающие команду на исполнение
Данные атомарного действия, указывающие команду на исполнения, могут игнорироваться только при получении от каждого младшего примитива Си-ИСПОЛНЕНИЕ подтверждение или Си-ВОССТАНОВЛЕНИЕ (выполнено) подтверждение.
А.5 Правило обслуживания граничных данных
Это правило служит ограничением, налагаемым на пользователя услуг СИВ при обслуживании граничных данных.
А.5.1 Изменяемые граничные данные для выработки конечного состояния
Изменения граничных данных для выработки конечного состояния путем нормального распространения атомарного действия требуют, чтобы:
a) данные атомарного действия, указывающие команду на исполнение, не записывались;
b) данные атомарного действия, указывающие предложение на исполнение, не записывались.
А.5.2 Сброс граничных данных в начальное состояние как часть возврата
Этот сброс требует, чтобы:
a) от старшего был получен примитив Си-ВОЗВРАТ индикация или примитив Си-ВОССТАНОВЛЕНИЕ (неизвестно) подтверждение, если для промежуточного или побочного пользователя услуг СИВ было записано предложение на исполнение;
b) данные атомарного действия, указывающие предложение на исполнение, не записывались.
А.5.3 Сброс граничных данных в конечное состояние как часть исполнения
Этот сброс требует, чтобы:
a) пользователь услуг СИВ получил от старшего примитив Си-ВОЗВРАТ индикация или Си-ВОССТАНОВЛЕНИЕ (исполнение) индикация, если он является промежуточным или побочным;
b) были записаны данные атомарного действия, необходимые для восстановления всех ветвей младших, которые не будут подвержены возврату со стороны главного;
с) данные атомарного действия отражают либо предложение на исполнение, либо команду на исполнение.
А.5.4 Сброс граничных данных как часть эвристического решения
Этот сброс требует, чтобы данные атомарного действия отражали решение о готовности.
А.6 Правила передачи данных пользователя услуг СИВ
Эти правила служат ограничением, налагаемым на пользователя услуг СИВ при использовании им примитивов услуги передачи данных уровня представления, которые необходимы для обслуживания граничных данных.
А.6.1 Примитивы запроса и ответа услуги передачи данных
Эти примитивы, которые требуют обслуживания граничных данных в составе атомарного действия, могут быть выданы в ассоциации только для той ветви, в которой:
a) пользователь услуг СИВ не получил примитива Си-ГОТОВНОСТЬ (индикация) или Си-ВОЗВРАТ индикация;
b) пользователь услуг СИВ не выдавал примитива Си-ГОТОВНОСТЬ запрос, Си-ГОТОВНОСТЬ запрос или Си-ВОЗВРАТ запрос.
А.6.2 Примитивы индикации и подтверждения услуги передачи данных
Эти примитивы, которые требуют обслуживания граничных данных в составе атомарного действия, могут быть получены в ассоциации только для той ветви, в которой:
a) пользователь услуг СИВ не получил примитива Си-ГОТОВНОСТЬ (индикация), Си-ПОДГОТОВКА (индикация) или Си-ВОЗВРАТ индикация;
b) пользователь услуг СИВ не выдавал примитива Си-ВОЗВРАТ запрос;
c) пользователь услуг СИВ не записывал данных атомарного действия для предложения на исполнение.
ПРИЛОЖЕНИЕ В (обязательное). ВЗАИМООТНОШЕНИЯ МЕЖДУ СИВ И СТРУКТУРОЙ ПРИКЛАДНОГО УРОВНЯ
ПРИЛОЖЕНИЕ В
(обязательное)
Материалы этого приложения согласуются с требованиями ГОСТ Р ИСО/МЭК 9545.
Примечание - Рисунок B.1 этого приложения носит только иллюстративный характер для текстового описания.
Рисунок В1 - Архитектура дерева атомарного действия
Рисунок В1 - Архитектура дерева атомарного действия
B.1 Поставщик услуг СИВ
Поставщик услуг СИВ моделируется в виде двух равноправных СЭП СИВ, участвующих в одной и той же ветви атомарного действия. Каждый СЭП СИВ рассматривается в контексте объекта одиночной ассоциации (ООА) поддерживающей ассоциации.
В.2 Пользователь услуг СИВ
B.2.1 Пользователь услуг СИВ в ПЛОП состоит из двух частей:
a) ООА;
b) функция управления групповой ассоциацией (ФУГА).
B.2.2 ООА состоит из ФУОА и одного или нескольких СЭП, которые используют услуги СЭП СИВ. Такой СЭП называется сервисным элементом прикладного уровня пользователя (СЭПП).
B.2.3 ФУГА пользователя услуг СИВ представляет функцию координации групповой ассоциации, которая является частью соответствующей активности СИВ.
Примечание - ФУГА необходима для атомарного действия, состоящего только из одной ветви. В рассматриваемом случае ФУГА необходима при сбое на прикладном уровне или безуспешном обмене данными.
В.3 Дерево атомарного действия
Рисунок B.1 служит примером дерева атомарного действия, основанного на этой архитектуре. На нем представлены главный, промежуточный и побочный пользователи услуг СИВ.
Примечание - Промежуточный пользователь услуг СИВ выступает в двух ролях: младшего и одного или нескольких старших. Эта двойственность ненаблюдаема со стороны поставщика услуг СИВ.
ПРИЛОЖЕНИЕ С (информационное). РУКОВОДСТВО ПО СИВ
ПРИЛОЖЕНИЕ С
(информационное)
C.1 Введение
В этом руководстве описываются основные функции СИВ и их использование в распределенной среде. Оно расширяет, но в целом не повторяет концепции, представленные в разделе 6. Поэтому перед чтением этого приложения необходимо ознакомиться с понятиями и терминологией, представленными в разделе 6.
В этом руководстве упоминаются услуги СИВ, определенные в разделе 7. Необходимо знать назначение и использование каждой из шести услуг СИВ:
Си-НАЧАТЬ;
Си-ПОДГОТОВКА;
Си-ГОТОВНОСТЬ;
Си-ИСПОЛНЕНИЕ;
Си-ВОЗВРАТ;
Си-ВОССТАНОВЛЕНИЕ.
Все термины, определенные в обязательных частях настоящего стандарта, приведены повторно в 3.6. В подразделах 3.1-3.5 перечислены используемые СИВ термины, которые определены в других стандартах.
СИВ устанавливает услуги для использования в одиночной ассоциации. Поэтому СИВ всегда требует наличия ссылающейся (т.е. управляющей) спецификации. Это действительно даже при использовании СИВ только двумя пользователями услуг СИВ. В этом случае ссылающаяся спецификация необходима хотя бы для определения восстановительных действий при сбоях.
Использование СИВ может быть ограничено конкретной ссылающейся спецификацией. То есть некоторые описанные здесь возможности могут отсутствовать, если они используются конкретной ссылающейся спецификацией.
C.1.1 Что такое СИВ?
СИВ - это сервисный элемент прикладного уровня (СЭП) плюс правила использования СЭП. Также как и сам СЭП, СИВ охватывает определение услуг (настоящий стандарт) и спецификацию протокола (ГОСТ Р ИСО/МЭК 9805). Использование правил (называемых правилами пользователя услуг СИВ) приведено в приложении А.
СИВ подобен сервисному элементу управления ассоциацией (СЭУА) (ГОСТ 34.981 и ГОСТ Р 34.982) во многих отношениях:
- Средства СЭУА обеспечивают взаимосвязь между двумя пользователями услуг СЭУА при использовании ими соединения уровня представления. Эта взаимосвязь называется прикладной ассоциацией или просто ассоциацией.
- Средства СИВ обеспечивают взаимосвязь между двумя пользователями услуг СЭУА при использовании ими ассоциации. Эта взаимосвязь называется ветвью атомарного действия или просто ветвью.
- Средства СЭУА обеспечивают возможности "скобок". Услуги СЭУА устанавливают и освобождают ассоциацию и не заботятся о потоке семантик в ассоциации между фазами ее установления и освобождения.
- Средства СИВ также обеспечивают возможности "скобок". Услуги СИВ начинают и заканчивают ветвь и не заботятся о следовании потока семантик в ветви.
С другой стороны, СИВ и СЭУА различаются во многих других отношениях:
- СЭУА устанавливает соединение уровня представления, которое он использует. Это выполняется как часть услуги Пк-АССОЦИАЦИЯ, устанавливающей ассоциацию. Затем СЭУА освобождает соединение уровня представления после освобождения ассоциации.
- СИВ требует предварительного наличия ассоциации, которую он использует. То есть при привлечении услуги Си-НАЧАТЬ ассоциация должна уже существовать. С завершением ветви ассоциация продолжает существовать.
- Для СЭУА при возникновении сбоя на прикладном уровне или при безуспешном обмене данными его взаимосвязь (т.е. ассоциация) пропадает. То есть ассоциация и поддерживающее соединение уровня представления освобождаются ненормально. Ассоциация прекращает свое существование.
- Для СИВ при возникновении сбоя на прикладном уровне или при безуспешном обмене данными его взаимосвязь (т.е. ветвь) может оставаться или исчезать. Это определяется типом предполагаемого возврата, который использует СИВ, что рассматривается в 6.2.2, 7.6 и С.5.2. Если ветвь осталась, она восстанавливается и завершается при ее использовании другой ассоциацией.
- СЭУА не содержит правил использования ассоциации.
- СИВ содержит правила использования ветви. Подобно СЭУА он не заботится о семантиках, которые следуют по ветви. Однако СИВ предполагает, что его пользователь обеспечивает свойства атомарного действия для его ветвей. Этими свойствами являются:
1) атомарность;
2) согласованность;
3) изолированность;
4) живучесть.
Эти свойства рассматриваются в 6.1.1.
С.1.2 Атомарное действие
В определении СИВ распределенный прикладной процесс определяется как попытка обработки информации, осуществляемая путем привлечения двух или нескольких привлечений прикладного процесса (ППП). ПЛОП (коммуникационные аспекты ВОС ППП) взаимосвязаны в среде ВОС ассоциацией.
Атомарное действие - конкретная ограниченная последовательность операций распределенного прикладного процесса. Атомарное действие характеризуется свойствами атомарности, изолированности, согласованности и живучести. Эти свойства рассматриваются в 6.1.1.
Атомарное действие считается исполненным, если в конце атомарного действия результаты его операций имели место во всех участвующих ПЛОП. Атомарное действие осуществляет возврат, если результаты его операций не получены.
Атомарное действие не имеет ненормального завершения. Атомарное действие заканчивается возвратом (если ничего не произошло) или исполнением (что-то произошло). Возврат может быть ожидаемым результатом.
С.1.3 Назначение
СИВ обеспечивает средства, которые позволяют атомарному действию распределенного прикладного процесса осуществить исполнение или возврат. СИВ предусматривает СЭП для поддержки одной ветви (т.е. сегмента) атомарного действия. Он определяет также правила, которые должны быть введены ссылающейся спецификацией и которым должна следовать фактическая реализация.
С.1.4 Использование СИВ
В приложении В рассматривается, каким образом СИВ вписывается в структуру уровня представления, установленную ГОСТ Р ИСО/МЭК 9545.
Настоящий стандарт и ГОСТ Р ИСО/МЭК 9805 определяют СЭП СИВ. СИВ не определяет ФУЕА и ФУГА. Эти управляющие функции должно определять что-то другое. Во всех обязательных частях настоящего стандарта это "что-то другое" называется ссылающейся спецификацией. Однако в приложении А определены правила, которые должны быть включены в ФУЕА и ФУГА.
С.2 Структура дерева атомарного действия
С.2.1 Модель
Модель объединяет рассмотренные ранее концепции (распределенный прикладной процесс, атомарное действие и ветвь) и добавляет следующее:
- пользователь услуг СИВ - часть ПЛОП, использующая услуги СИВ для одной или нескольких связующих ветвей одного атомарного действия. (Подробно о "связующих ветвях" сказано ниже.);
- дерево атомарного действия - иерархическое взаимоотношение между пользователями услуг СИВ атомарного действия. Оно образуется пользователями услуг СИВ и ветвями.
На рисунке C.1 показана модель дерева атомарного действия. Окружности изображают пользователей услуг СИВ. Линии между парами пользователей услуг СИВ изображают ветви атомарного действия.
Рисунок C.1 - Дерево атомарного действия
Рисунок C.1 - Дерево атомарного действия
Ссылающаяся спецификация идентифицирует СЭП, которые должны использоваться в ветвях атомарного действия. Разные СЭП могут использоваться в различных ветвях атомарного действия.
С.2.2 Пользователь услуг СИВ
Пользователь услуг СИВ - это часть ПЛОП. Он использует услуги СИВ для координации связующих ветвей одного и того же дерева атомарного действия. "Связующими ветвями" являются:
a) для главного - ветви к младшему;
b) для промежуточного - ветви к своему старшему плюс ветви к своим младшим;
c) для побочного - одна ветвь к своему старшему.
Пользователь услуг СИВ участвует в одиночном атомарном действии.
Определенный ПЛОП может включать в себя одного или нескольких пользователей услуг СИВ. Все пользователи услуг СИВ в ПЛОП могут быть частью одного атомарного действия или разных атомарных действий.
Услуги СИВ (см. раздел 7) и правила их упорядочения применимы независимо к каждому пользователю услуг СИВ. Как упоминалось выше, ПЛОП может включать более одного пользователя услуг СИВ, участвующих в одном и том же атомарном действии. В этом случае только на основе параметров СИВ невозможно понять, какая ветвь принадлежит какому пользователю услуг СИВ. Эта взаимосвязь определяется ссылающейся спецификацией и внутренними действиями ПЛОП.
Ссылающаяся спецификация может наложить ограничения на создание пользователей услуг СИВ внутри ПЛОП. Например, ссылающейся спецификация может допускать наличие в данном ПЛОП только одного пользователя услуг СИВ одного и того же атомарного действия.
С.2.3 Ветвь и ее идентификаторы
Ветвь - это взаимосвязь между двумя логически смежными пользователями услуг СИВ. Достаточно полное обсуждение ветвей атомарного действия приведено в 6.1.2.
Ветвь имеет два идентификатора - идентификатор атомарного действия и идентификатор ветви. Идентификатор атомарного действия назначается главным атомарного действия. Идентификатор ветви назначается старшим ветви.
Идентификатор атомарного действия состоит из двух частей: заголовка ЛОП главного и суффикса, назначенного главным. Идентификатор ветви состоит из двух частей: заголовка ЛОП старшего и суффикса, назначенного старшим.
С.2.4 Примеры использования ПОЗ
Пример дерева атомарного действия с несколькими ветвями проявляется при использовании стандарта по передаче и обработке заданий (ГОСТ Р 34.1983). ПОЗ ссылается на СИВ во всех случаях передачи материалов ПОЗ (т.е. документов и отчетов). Пример атомарного действия, основанный на ПОЗ, показан на рисунке С.2.
Рисунок С.2
Рисунок С.2
На рисунке С.2а передача материалов начинается в пределах ветви атомарного действия СИВ между ПЛОП А и ПЛОП В. Инициирующий пользователь услуг СИВ А-1 является главным атомарного действия. Он действует как старший для ветви. Принимающий пользователь услуг СИВ В-1 действует как младший ветви. С этой точки зрения В-1 является единственным побочным деревом атомарного действия.
После получения и обработки материалов В-1 немедленно вызывает дальнейшую активность ПОЗ для передачи выработанных документов и отчетов ПОЗ. Эти передачи выполняются по новым ветвям того же атомарного действия. Передачи происходят между:
1) пользователем услуг СИВ В-1 и пользователем услуг СИВ А-2 в ПЛОП А;
2) пользователем услуг СИВ В-1 и пользователем услуг СИВ С-1 в ПЛОП С.
Это показано на рисунке С.2-b.
Пользователь услуг СИВ В-1 - младший первой ветви, является старшим новых ветвей. Теперь В-1 - промежуточный. Пользователи услуг СИВ А-2 и С-1 - побочные.
В случае ПОЗ пользователи услуг СИВ А-1 и А-2 могут иметь место в одном и том же или различных привлечениях одного и того же ЛОП. На рисунке С.2b они в одном и том же ПЛОП. Модель дерева атомарного действия этого примера приведена на рисунке С.2с.
Эта вторая "волна" обработки, в свою очередь, может вызвать дальнейшую передачу документов и отчетов. Тем самым к дереву атомарного действия добавляется более глубокий уровень ветвей. В случае ПОЗ это может продолжаться до любой глубины.
Этот пример иллюстрирует два ключевых свойства деревьев атомарного действия:
a) дерево атомарного действия динамически строится с продолжением действий;
b) фактическая структура дерева атомарного действия зависит от ссылающейся спецификации и от данных прикладного уровня.
С.3 Информационные ресурсы пользователя услуг СИВ
Во время атомарного действия СИВ могут быть использованы три типа данных:
a) граничные данные;
b) данные атомарного действия;
c) операционные данные.
С.3.1 Граничные данные
Граничные данные - это совокупность информационных ресурсов в открытой системе пользователя услуг СИВ. Пользователь услуг СИВ манипулирует этими информационными ресурсами во время атомарного действия. Граничные данные являются объектом исполнения и возврата. Ссылающаяся спецификация идентифицирует граничные данные для пользователя услуг СИВ конкретного атомарного действия.
Информационные ресурсы, являющиеся частью граничных данных, могут изменяться в период существования атомарного действия. Начало граничных данных главного определяется началом атомарного действия. Таким образом, начало граничных данных определяется началом первой ветви к младшему. Однако начальное состояние граничных данных может отражать еще более раннее состояние. Начало граничных данных промежуточного или побочного определяется началом его ветви к старшему.
Примечание - Возможно, что пользователь услуг СИВ может не иметь "граничных" информационных ресурсов. В этом случае граничные данные равны нулю.
При развитии новых ветвей к младшим в открытой системе старшего могут быть добавлены дополнительные информационные ресурсы в качестве граничных данных. При выполнении возврата ветви к младшему эти ресурсы могут быть исключены из граничных данных, если они не являются "граничными" и в другой ветви.
Семантические потоки передаются между пользователем услуг СИВ и его логически смежным партнерами** в ветвях атомарного действия. Поток прикладной семантики* изменяет граничные данные пользователя услуг СИВ из начального состояния на конечное.
_________________
* В данном приложении выражение "прикладная семантика" относится к семантике, обмен которой происходит как часть ветви атомарного действия, манипулирующей граничными данными.
** Текст соответствует оригиналу. - Примечание.
Примитивы Си-НАЧАТЬ запрос и Си-НАЧАТЬ индикация необходимы для определения начального состояния граничных данных на случай возможного возврата.
В операции исполнения граничные данные пользователя услуг СИВ вводятся в конечное состояние атомарного действия. В операции возврата, включая предполагаемый возврат, обусловленный сбоем, граничные данные пользователя услуг СИВ возвращаются в начальное состояние.
При сбое на прикладном уровне или безуспешном обмене данными граничные данные должны продолжать существовать (т.е. не должны теряться). Их потеря может вызвать разрушение свойств атомарного действия. Разумеется, во время функционирования реальной системы возможны непредсказуемые потери данных. Настоящий стандарт исходит из того, что потеря граничных данных происходит редко.
С.3.2 Данные атомарного действия
Эти данные используются открытой системой для получения сведений о текущем атомарном действии. Данные атомарного действия содержат информацию о состоянии и управляющую информацию относительно пользователя услуг СИВ и его ветвей. В случае сбоя на прикладном уровне или безуспешного обмена данными СИВ определяет необходимость сохранения данных.
Для СИВ данные атомарного действия являются неотъемлемой частью восстановления. Этот вопрос обсуждается в С.5.1.
При сбое на прикладном уровне и безуспешном обмене данными данные атомарного действия, необходимые при восстановлении, должны быть сохранены так же, как и граничные данные. Их потеря может привести к разрушению свойств атомарного действия. Настоящий стандарт исходит из того, что потеря данных атомарного действия происходит редко.
С.3.3 Операционные данные
Для пользователя услуг СИВ другие связанные с ветвью информационные ресурсы, не являющиеся ни граничными данными ни данными атомарного действия, oбразуют операционные данные. Эти данные подобны граничным данным в том отношении, что они сохраняются в течение атомарного действия. Однако операционные данные не являются объектом исполнения и возврата.
СИВ не определяет операционные данные и их использование. Операционные данные идентифицируются и определяются здесь для полноты и понимания различий между операционными и граничными данными.
Ссылающаяся спецификация определяет классификацию граничных и операционных данных. Например, содержимое файла, к которому осуществляется доступ, обычно рассматривается как граничные данные и является объектом исполнения и возврата. Аттрибут "данные последнего доступа" файла обычно не будет рассматриваться как граничные данные. Он не может быть объектом исполнения и возврата. Учетные данные могут быть также определены как операционные данные. Затраты на обработку и коммуникационные затраты могут учитываться при исполнении или при возврате.
В отличие от граничных данных и данных атомарного действия, требуемых при восстановлении, потеря операционных данных не влияет на свойства атомарного действия. Их потеря не учитывается СИВ.
С.4 Совмещение
Услуги СИВ не обеспечивают механизма совмещения. Однако сохранность свойств атомарного действия требует, чтобы реализация учитывала совмещение.
С.4.1 Общие положения
Управление совмещением осуществляется с точки зрения отдельных пользователей услуг СИВ. Механизм управления совмещением обеспечивает свойство изолируемости для каждого участвующего в совмещении пользователя услуг СИВ в пределах открытой системы.
Механизм совмещения, используемый в сочетании с СИВ, должен охватывать следующие свойства:
a) пользователь услуг СИВ не предлагает исполнения при модификации его граничных данных логическим объектом другого пользователя услуг СИВ;
b) информационный ресурс рассматривается как элемент граничных данных атомарного действия А. Этот информационный ресурс находится в конечном состоянии для атомарного действия А, которое еще не исполнено. Информационный ресурс может стать элементом граничных данных другого атомарного действия В. Однако пользователь услуг СИВ атомарного действия В не должен предлагать исполнение или выдавать команду на исполнение до тех пор, пока атомарное действие А не будет исполнено.
Совмещенное управление продолжается до тех пор, пока не произойдет окончательный обмен услугой Си-ИСПОЛНЕНИЕ, Си-ВОЗВРАТ или Си-ВОССТАНОВЛЕНИЕ.
С.4.2 Пример совмещения - блокирование
Один из способов осуществления управления совмещением состоит в использовании механизма блокирования. Операционная система обращается с информационным ресурсом как с ресурсом последовательной принадлежности. Операционная система обеспечивает прикладной программе возможность владения информационным ресурсом. Всем другим прикладным программам допуска к этому ресурсу нет. После того как заблокированная прикладная программа завершит использование этого ресурса, она сбрасывает ресурс (т.е. разблокирует его). С этого момента этот ресурс доступен любой прикладной программе.
Для пользователя услуг СИВ, использующего блокирование для управления совмещением, все граничные данные блокируются после первого же их использования этим пользователем до тех пор, пока не закончатся процедуры локального завершения или исполнения. Никакой другой логический объект типа другого пользователя услуг СИВ не имеет доступа к граничным данным. Такой подход обусловливает строгую последовательность выполнения атомарных действий. Возможны и другие методы реализации.
Блокирования часто сбрасываются автоматически операционной системой при сбоях как в прикладной программе так и в самой системе. Однако, если сбой произойдет после уже предложенного исполнения, управление совмещением должно сохраняться до тех пор, пока не произойдет обмен услугой Си-ВОССТАНОВЛЕНИЕ. Этот тип блокирования неизменяем, поэтому он неприемлем для СИВ.
Управление совмещением может осуществляться, если блокирование регистрируется как данные атомарного действия. Эта информация используется затем для повторного установления блокирований на время восстановления после сбоя прикладных программ или системы.
Блокирование, используемое при управлении совмещением, является "собственностью" (единичного) атомарного действия в процессе. Оно служит только для предотвращения вмешательства других логических объектов.
Примечание - Средства для более сложного управления совмещением могут стать предметом будущей стандартизации СИВ. Они могут содержать обработку атомарных поддействий в пределах атомарных действиях*.
_________________
* Текст соответствует оригиналу. - Примечание.
В ПЛОП при выполнении одной ветви может потребоваться доступ к граничным данным, модифицированных ранее другой неисполненной ветвью того же атомарного действия. Это явно допускается управлениями совмещением. Использование блокирования не должно мешать этому.
Например, рассмотрим операции с удаленным файлом. Файл, представляющий граничные данные, был модифицирован и закрыт. Пользователь услуг СИВ (младший) не предлагал исполнение.
Теперь рассмотрим операцию с тем же файлом, но как с файлом только для чтения. Если идентификатор атомарного действия показывает, что эта операция является частью того же атомарного действия, чтение данных должно быть разрешено.
Если вторая операция с файлом не является частью того же атомарного действия, тогда в доступе к файлу должно быть отказано. Отказ должен быть в форме примитива Си-ВОЗВРАТ запрос с соответствующей диагностикой "отложенная попытка" в параметре "данные пользователя". Отказ также может быть выражен семантиками диагностики в ветви. Кроме того, отказ может просто привести к ожиданию сброса блокирования.
Предположим, однако, что вторая операция файла предполагает модифицировать файл прежде, чем первая операция закроет его. Выполнению этой операции должно быть отказано (как и выше), если она не является частью первоначального атомарного действия. Однако, если вторая операция была частью первоначального атомарного действия, запрашивается нелегальное действие. Предпринимаемое действие зависит от дискретности управлений совмещением относительно данного файла. Например, примитив Си-ВОЗВРАТ запрос может быть выдан с диагностикой без повторов, указывающей ошибку.
С.5 Восстановление
Процедуры восстановления являются неотъемлемой и существенной частью СИВ. Без них не могли бы наложиться управления совмещением (например, блокирования) и никогда не сброситься, а исполнение могло не обеспечить атомарности.
СИВ обеспечивает услуги восстановления одиночной ветви атомарного действия. За управление восстановлением нескольких ветвей атомарного действия несет ответственность ссылающаяся спецификация и ее реализация.
С.5.1 Данные атомарного действия
Основой процедуры восстановления СИВ являются данные атомарного действия, обрабатываемые пользователем услуг СИВ. Данные атомарного действия содержат информацию управления и состояния относительно каждого пользователя услуг СИВ и его ветвей.
СИВ не определяет конкретной информации, которая должна быть сохранена в виде данных атомарного действия. Ответственность за это несет ссылающаяся спецификация.
Однако СИВ требует, чтобы информация, обеспечиваемая пользователем услуг СИВ, была достаточной для восстановления ветви, прерванной сбоем на прикладном уровне или безуспешным обменом данными. Данные атомарного действия должны также идентифицировать начальное и конечное состояния граничных данных.
СИВ определяет, когда данные должны быть сохранены. После сбоя на прикладном уровне или безуспешного обмена данными пользователь услуг СИВ должен уметь находить данные атомарного действия для восстановления. Наличие данных атомарного действия для ветви побуждает пользователя услуг СИВ попытаться восстановить ветвь (используя услугу Си-ВОССТАНОВЛЕНИЕ).
Действие, направленное на продолжение существования данных атомарного действия, называется записью данных атомарного действия. (Иногда запись данных атомарного действия называется регистрацией, но конкретной реализации регистрации здесь не предполагается.) Действие, не направленное на продолжение существования данных атомарного действия, называется перемещением или игнорированием данных атомарного действия (см. А.5). Проигнорированные данные атомарного действия не требуют физического удаления. Необходимо только, чтобы эти данные не привели к попытке восстановления.
В таблице C.1 приведен тип информации, которая может рассматриваться как данные атомарного действия. Эта информация содержит идентификатор атомарного действия и информацию состояния, определяющую, предложил ли пользователь услуг СИВ исполнение или выдал команду (получил команду) на исполнение.
Таблица С.1 - Примеры данных атомарного действия
Идентификатор атомарного действия: |
Информация пользователя услуг СИВ: |
Информация ветви: [повторено для каждой ветви] |
Информация граничных данных: |
В таблице C.1 приведена также информация о каждой ветви пользователя услуг СИВ. Она содержит идентификатор ветви и значения параметра Пк-АССОЦИАЦИЯ СЭУА, необходимые для передачи ассоциации партнеру пользователю услуг СИВ в случае восстановления.
И, наконец, в таблице C.1 приведена информация о граничных данных, включая определения начального и конечного состояний.
Как и в таблице С.1, данные атомарного действия могут содержать информацию о самом пользователе услуг СИВ. Однако в конкретной реализации это может проявляться, скорее, в неявном виде, чем в явном.
С.5.2 Предполагаемый возврат
Услуги СИВ использует* парадигму предполагаемого возврата (или предполагаемого прерывания). Они определяют, когда пользователь услуг СИВ принимает ответственность за восстановление ветви. Эта парадигма также определяет значимость отсутствия данных атомарного действия для идентифицируемой ветви, партнер которой требует восстановления.
_________________
* Текст соответствует оригиналу. - Примечание.
С.5.2.1 Запись ГОТОВНОСТЬ
При предполагаемом возврате младший принимает ответственность за восстановление в той ветви, где он решил предложить исполнение. Он обеспечивает постоянство данных атомарного действия и записывает для этой ветви ГОТОВНОСТЬ (см. А.3.3 и А.4.1). Если данные атомарного действия представлены в соответствии с таблицей C.1, их состояние имеет значение "предложенное".
Если пользователь услуг СИВ является побочным, данные атомарного действия таблицы C.1 содержат информацию для ветви с ролью "младший".
Если пользователь услуг СИВ является промежуточным, данные атомарного действия будут включать запись ГОТОВНОСТЬ этой ветви для старшего*. Данные атомарного действия включают в себя также информацию ветви для ветвей к своим младшим. Если данные атомарного действия представлены в соответствии с таблицей C.1, то:
- состоянием будет "предложенное";
- при одной ветви пользователь будет выполнять роль "младший";
- при одной или нескольких ветвях пользователь будет выполнять роль "старший".
__________________
* Ветвь к старшему - это единственная ветвь, в которой имеется младший.
Считается, что промежуточный не принимает ответственность за восстановление для ветвей к своим младшим, если он записывает ГОТОВНОСТЬ для ветви к старшему. Однако данные атомарного действия могут быть выявлены при получении от младшего Си-ВОССТАНОВЛЕНИЕ (отложенная попытка). Если промежуточный не может установить ассоциацию со своим старшим, он выдает младшему примитив Си-ВОССТАНОВЛЕНИЕ (отложенная попытка) ответ.
С.5.2.2 Запись ИСПОЛНЕНИЕ
Если пользователь услуг СИВ, действующий как старший ветви, решает выдать команду на исполнение, он принимает ответственность за восстановление ветви.
Это более понятно на примере главного. Если после получения предложений на исполнение от всех своих младших (см. А.3.4) главный решает выдать команду на исполнение, он записывает данные атомарного действия, создавая запись ИСПОЛНЕНИЕ. Если представление данных атомарного действия соответствует таблице C.1, то:
- состоянием будет "исполнение";
- для каждой ветви пользователь будет выполнять роль "старший".
Создав запись ИСПОЛНЕНИЕ, пользователь услуг СИВ выдает в каждую ветвь команды на исполнение.
После получения команды на исполнение промежуточный имеет возможность перезаписать данные атомарного действия в запись ИСПОЛНЕНИЕ. Эта запись содержит такую же информацию, что и запись ИСПОЛНЕНИЕ главного. В понятиях таблицы C.1 она не содержит информацию ветви для ветви к старшему. Замена регистрации промежуточного из записи ГОТОВНОСТЬ на запись ИСПОЛНЕНИЕ может помочь оптимизировать действия по восстановлению при сбое на прикладном уровне или при безуспешном обмене данными.
С.5.2.3 Игнорирование данных атомарного действия
После того, как младший предложит исполнение, он игнорирует данные атомарного действия, если известен результат атомарного действия (исполнение или возврат). Если младший получил примитив Си-ВОЗВРАТ индикация или Си-ВОССТАНОВЛЕНИЕ (неизвестно) подтверждение, произойдет возврат. Если же он получил примитив Си-ИСПОЛНЕНИЕ индикация или Си-ВОССТАНОВЛЕНИЕ (исполнение) индикация, произойдет исполнение.
При исполнении младший должен игнорировать данные атомарного действия до передачи примитива Си-ИСПОЛНЕНИЕ ответ или Си-ВОССТАНОВЛЕНИЕ (выполнено) ответ. Если он этого не сделает, наличие данных атомарного действия может разрешить последующую выдачу примитива Си-ВОССТАНОВЛЕНИЕ (готовность) запрос. Это может привести к получению примитива Си-ВОССТАНОВЛЕНИЕ (неизвестно) подтверждение, означающего, что атомарное действие подвергнуто возврату.
После выдачи команды на исполнение старший игнорирует данные атомарного действия, если обмены СИВ гарантируют, что младший получил команду и выполнил ее. Это происходит, когда старший получает примитив Си-ИСПОЛНЕНИЕ подтверждение или примитив Си-ВОССТАНОВЛЕНИЕ (выполнено) подтверждение.
С.5.2.4 Восстановление
В услугах СИВ рассматриваются два типа сбоя: на прикладном уровне и безуспешный обмен данными. Сбой на прикладном уровне может быть смоделирован как выдача или прием примитива Пк-ОТКАЗ запрос или индикация соответственно. Безуспешный обмен данными может быть смоделирован как прием примитива Пк-ОТКАЗ индикация.
Во время локальных процедур восстановления управление исполнением сбрасывается для любых граничных данных, не имеющих соответствующей записи ГОТОВНОСТЬ или ИСПОЛНЕНИЕ.
Если после сбоя получен примитив Си-ВОССТАНОВЛЕНИЕ (готовность) индикация и данные атомарные действия не могут быть найдены для указанной ветви, пользователь услуг СИВ предполагает, что ветвь подвергнута возврату. Если получен примитив Си-ВОССТАНОВЛЕНИЕ (исполнение) индикация и данные не могут быть найдены для указанной ветви, пользователь услуг СИВ предполагает, что команда на исполнение была получена ранее и выполнена.
Правильное выполнение операции СИВ достигается только при гарантии устойчивости данных атомарного действия записей ГОТОВНОСТЬ и ИСПОЛНЕНИЕ в случае сбоев.
Правильная реализация СИВ гарантирует, что информация, представленная в виде записи ГОТОВНОСТЬ или ИСПОЛНЕНИЕ, будет защищена до выдачи следующего примитива услуги. Для некоторых операционных систем это может означать запись данных на диск и приводить к заполнению всех имеющихся буферов на диске. Это требует особого внимания при реализации.
С.5.2.5 Обсуждение
Механизм предполагаемого возврата сводит к минимуму регистрацию данных атомарного действия. Однако этот механизм не всегда может выполнить восстановление без результирующего возврата большей части данных атомарного действия, которые непосредственно участвовали в сбое. Минимизация области, подверженной сбою, не требуется и не определяется СИВ. Стоимость дополнительных обновлений устойчивых данных может быть скомпенсирована преимуществами локализации необходимого восстановления и снижения вероятности потребностей в восстановлении.
Примечание - СИВ не обеспечивает глобальных проверок по контрольным точкам в ветви. Это возможная сфера стандартизации СИВ. Использование проверок по контрольным точкам может снизить объем повторных работ при возникновении сбоя.
Локальные процедуры восстановления одной ветви могут потребовать, чтобы пользователь услуг СИВ выполнил возврат других ветвей атомарного действия. Это определяется ссылающейся спецификацией. На решение выполнить возврат других ветвей может повлиять защищенность промежуточных результатов промежуточными пользователями услуг СИВ. Это позволяет использовать механизм копирования проверок по контрольным точкам.
С.5.3 Идентификаторы привлечений ПП и ЛОП
В подразделе А.4 определены правила манипуляции данными атомарного действия для пользователя услуг СИВ. При соблюдении этих правил будет справедливо следующее. После получения примитива Си-ВОССТАНОВЛЕНИЕ индикация пользователь услуг СИВ будет либо отыскивать данные атомарного действия для указанной ветви, либо он точно определит их отсутствие. Это ключевое требование механизма восстановления СИВ.
Доступные (т.е. найденные) данные атомарного действия дают основания предполагать, каким образом используются идентификаторы ПП и ЛОП*. Существуют две возможности:
a) данные атомарного действия доступны любому привлечению (ПЛОП) определенного ЛОП;
b) данные атомарного действия доступны только определенному ПЛОП. Таким образом, данные атомарного действия недоступны в привлечениях одного и того же ЛОП, имеющего другой идентификатор привлечений.
___________________
* Значения вызывающего, вызываемого и отвечающего идентификаторов привлечения ПП и ЛОП могут передаваться в услуге П-АССОЦИАЦИЯ (см. ГОСТ 34.981).
СИВ не определяет использование конкретного способа. Ответственность за это несет ссылающаяся спецификация. Однако трудности межсетевого обмена могут возникнуть для тех реализаций, которые используют различные способы. По этой причине каждый способ кратко обсуждается ниже в его отношении к использованию идентификаторов привлечений.
С.5.3.1 Доступность со стороны любого ПЛОП
В первом способе идентификаторы привлечения ПП или ЛОП не используются. Данные атомарного действия записываются и доступны независимо от привлечений ПП и ЛОП, первоначально участвовавших в ветви.
При установлении ассоциации любой пользователь услуг СИВ может сообщить своему партнеру свои идентификаторы привлечений. Запросчик ассоциации может выполнить это, используя идентификаторы вызывающего привлечения в примитиве Пк-АССОЦИАЦИЯ запрос. Аналогичным образом ответчик ассоциации может использовать параметры отвечающего. Пользователи услуг СИВ могут обменяться этими значениями по причинам, не связанным с доступностью данных атомарного действия.
Однако необходимо быть внимательным при использовании инициатором ассоциации параметров идентификатора вызываемого привлечения. Идентификатор вызываемого привлечения может больше не использоваться ответчиком ассоциации. Это, в частности, имеет место, при установлении ассоциации после сбоя.
С.5.3.2 Доступность со стороны конкретного ПЛОП
При втором способе используются идентификаторы привлечения ПП или ЛОП. Данные атомарного действия записываются и доступны специально для привлечения ПП и ЛОП, первоначально участвовавших в ветви.
При установлении ассоциации любой пользователь услуг СИВ может сообщить своему партнеру свои идентификаторы привлечений. Запросчик ассоциации может выполнить это, используя идентификаторы вызывающего привлечения в примитиве Пк-АССОЦИАЦИЯ запрос. Ответчик ассоциации использует параметры отвечающего. Эти идентификаторы привлечений включаются в данные атомарного действия для ветви.
Если ассоциация должна использоваться для восстановления, в примитиве Пк-АССОЦИАЦИЯ запрос должны иметь место также параметры идентификатора вызываемого привлечения. Значения параметров вызывающего и вызываемого в примитиве Пк-АССОЦИАЦИЯ запрос такие же, как и при предыдущем использовании ассоциации, по которой передавалась услуга Си-НАЧАТЬ в прерванную ветвь.
Ассоциация устанавливается с привлечением прерванной ветви. Если ассоциация не может быть установлена с вызываемым ПЛОП, пользователь услуг СИВ прерванной ветви не может получить соответствующего примитива Си- ВОССТАНОВЛЕНИЕ (выполнено) подтверждение или Си-ВОССТАНОВЛЕНИЕ (неизвестно) подтверждение. Он будет продолжать выполнять попытки восстановления (или, по крайней мере, попытки установления ассоциации) бесконечно долго.
Значения идентификатора привлечения присваиваются ЛОП и ППП на неопределенное время. Это необходимо, поскольку один пользователь услуг СИВ может рассматривать ветвь как завершенную, в то время как другой может рассматривать ее как прерванную. В качестве примера рассмотрим случай, когда ошибка появилась до получения старшим примитива Си-ГОТОВНОСТЬ индикация. Старший рассматривает ветвь как завершенную (предполагаемый возврат). Однако для младшего она прерванная. Младший будет пытаться посылать примитив Си-ВОССТАНОВЛЕНИЕ (готовность) запрос по другой ассоциации к старшим ППП и ПЛОП.
На практике реализация может предпочесть использование лишь небольшого числа значений идентификатора привлечения.
С.6 Временные соотношения и последовательности примитивов услуг
СИВ обеспечивает двухфазовый процесс исполнения (см. 6.1.7). Для пользователей услуг СИВ атомарного действия переходы между этими фазами происходят в разные моменты времени.
СИВ не определяет, когда начинается фаза 1. Можно считать, что фаза 1 включает в себя период времени, следующий после Си-НАЧАТЬ, когда потоки прикладных семантик манипулируют граничными данными. Можно также считать, что фаза 1 начинается только при выдаче Си-ПОДГОТОВКА или эквивалентной семантики.
На рисунке С.3 показаны временные зависимости для атомарного действия двух ветвей: главный - А; промежуточный - В и побочный - С. Для каждого из этих пользователей услуг СИВ на рисунке С.3 приведены начало и конец фазы, время записи данных атомарного действия и время возможной передачи* прикладных семантик для ветви атомарного действия. В ветви между А и В подтверждается Си-НАЧАТЬ и используется Си-ПОДГОТОВКА. В ветви между В и С Си-НАЧАТЬ не подтверждается и семантика подготовки подразумевается (см. С.9).
__________________
* На рисунках С.3 и С.7 услуга ДАННЫЕ используется для выражения процессов передачи и приема прикладных семантик, использующих граничные данные атомарного действия. Точно также на рисунке С.3 услуга ДАННЫЕ (внешняя) отражает процессы передачи и приема семантик по ассоциации, но до начала ветви.
Рисунок С.3 - Временные зависимости для дерева атомарного действия двух ветвей
Рисунок С.3 - Временные зависимости для дерева атомарного действия двух ветвей
Внимательный просмотр рисунка С.3 показывает две важные особенности СИВ. Во-первых, не имеет значения, когда произошел сбой, поскольку младший никогда не выходит с незавершенной ветвью, которую старший считает завершенной. Ветвь либо подвергается возврату, либо оба пользователя услуг СИВ пытаются восстановить ее, используя услугу Си-ВОССТАНОВЛЕНИЕ. Во-вторых, фактический обмен семантиками СИВ осуществляется, не требуя, чтобы пользователи услуг СИВ сохраняли сведения (в устойчивых данных) об идентификаторе атомарного действия после окончания атомарного действия. Однако, чтобы обеспечить уникальность, идентификатор атомарного действия не может использоваться повторно.
На рисунках С.4-С.6 представлены сценарии атомарного действия. Атомарное действие состоит из четырех пользователей услуг СИВ: главный - А; промежуточный - В; и два побочных - С и D. На каждом рисунке показаны последовательность примитивов услуг СИВ и запись данных атомарного действия.
На рисунке С.4 представлен сценарий атомарного действия, которое осуществляет исполнение. Здесь используется факультативная услуга Си-ПОДГОТОВКА. Следует иметь ввиду, что промежуточный - В не выдаст примитивов своим младшим до тех пор, пока он не получит примитив Си-ПОДГОТОВКА от старшего (главный - А).
Рисунок С.4 - Последовательность примитивов - Исполнение атомарного действия Си-ПОДГОТОВКА
Рисунок С.4 - Последовательность примитивов - Исполнение атомарного действия Си-ПОДГОТОВКА
На рисунке С.5 представлен сценарий, где побочный D не может предложить исполнение. Он возвращает ветвь старшему. После этого промежуточный решает возвратить ветвь другому своему побочному (с) и своему старшему (А).
Рисунок С.5 - Последовательность примитивов - ВОЗВРАТ атомарного действия
Рисунок С.5 - Последовательность примитивов - ВОЗВРАТ атомарного действия
На рисунке С.6 представлен сценарий аналогичный представленному на рисунке С.4 с двумя исключениями. Факультативная услуга Си-ПОДГОТОВКА не используется, а использование услуги Си-НАЧАТЬ не подтверждается.
Рисунок С.6 - Последовательность примитивов - Исполнение атомарного действия - подготовка не используется - Си-НАЧАТЬ без подтверждения
Рисунок С.6 - Последовательность примитивов - Исполнение атомарного действия - подготовка не используется - Си-НАЧАТЬ без подтверждения
С.7 Замечания относительно сложности реализации
Естественное использование СИВ зависит от уровня активности и структуры поддерживающей операционной системы.
В качестве примера рассмотрим использование СИВ для операций удаленной передачи файлов между двумя ПЛОП. В этом примере старший запрашивает операцию над удаленным файлом, которым управляет младший. Атомарное действие здесь - это однофайловая операция. Граничными данными служит файл на удаленном конце (сторона младшего).
Ниже перечислены некоторые операции удаленного файла, которые требуют повышенного уровня реализации:
а) чтение файла - здесь конечным состоянием файла является его начальное состояние. Это реализуется легко. Младший может выдать примитив Си-ГОТОВНОСТЬ запрос при чтении последней записи и передать его старшему. После этого старший может выдать примитив Си-ВОЗВРАТ запрос или выполнить процедуру исполнения. Для обеспечения свойства изолированности необходим определенный вид управления;
b) создание нового файла - начальное состояние - это отсутствие нового файла в системе младшего. Конечное состояние - это наличие файла со всеми его записями. Старший выдает примитив Си-ПОДГОТОВКА запрос (или эквивалент), если он имеет данные для передачи в новый файл. При выдаче младшему команды на исполнение новый файл становится доступным. При выдаче младшему команды на возврат новый файл удаляется и доступ к нему исчезает;
c) перезапись существующего файла - если старший предлагает исполнение (т.е. выдает примитив Си-ГОТОВНОСТЬ запрос) он сохраняет способность либо использовать старый файл, либо перезаписанный файл. При выдаче младшему команды на исполнение в файле оказывается перезаписанное содержимое. При выдаче младшему команды на возврат в файле оказывается его первоначальное содержимое;
d) добавление к существующему файлу - конечное состояние - это старый файл с добавленными записями. При получении младшим команды на исполнение он создает доступный файл с дополнительными записями. При выдаче младшему команды на возврат дополнительные записи исключаются, прежде чем файл станет доступным. В некоторых сегодняшних системах может оказаться необходимым копирование старого файла для правильного восстановления после сбоя на прикладном уровне во время исполнения и для возможного возврата;
e) регистрация отдельной записи и закрытие файла - здесь начальным состоянием является открытый файл без записи. Конечное состояние - закрытый файл с записью.
С.8 Использование параметра "данные пользователя" в услугах СИВ
Каждая услуга СИВ (например, Си-НАЧАТЬ) имеет в своих примитивах факультативный параметр "данные пользователя" (см. раздел 7). Ссылающаяся спецификация определяет использование этого параметра (при его наличии).
В этом разделе рассматриваются четыре различных способа использования параметра "данные пользователя":
a) определение уровня исполнения;
b) диагностические выражения;
c) передача прикладной семантики;
d) опасность эвристического нарушения.
Семантики, передаваемые в параметре "данные пользователя", фактически представляют собой другие ПБДП СЭП. Вместо использования параметра "данные пользователя СИВ" ссылающаяся спецификация может сцепить ПБДП СЭП с ПБДП СИВ. Применимы те же факультативные возможности и ограничения, что и при использовании параметров "данные пользователя". Например, сцепленный ПБДП, который следует после ПБДП СИВ ПОДГОТОВКА или ГОТОВНОСТЬ, не должен манипулировать граничными данными.
С.8.1 Уровень исполнения
Исполнение - это процесс выполнения ветви со сбросом граничных данных в конечное состояние. В некоторых применениях значение сброса и конечного состояния может устанавливаться с различной степенью строгости. Выбор конкретного уровня исполнения для ветви может выражаться семантикой, переданной или полученной в параметре "данные пользователя" примитива услуги СИВ.
Например, при передаче старшим материала младшего для печати старший может потребовать завершить печать до исполнения. Он может также просто потребовать защитить материал с последующей распечаткой.
Например, ПОЗ допускает исполнение с меньшим объемом действий, чем запрашивает старший. Однако в этом случае предполагается, что младший согласен сообщать о любом сбое и выполнить все действие как последующее атомарное действие.
Пример другого уровня исполнения - архивирование базы данных младшим. Здесь нижний уровень исполнения предназначен для изменения основной версии (диск). Верхний уровень исполнения предназначен для тех изменений, которые уже архивированы.
В общем случае старший выражает свой требуемый уровень исполнения передачей семантики в параметре "данные пользователя" примитива Си-НАЧАТЬ запрос. Младший делает, по меньшей мере, то, что требуется и, возможно, что-то еще. После этого младший сообщает свои результаты в параметре "данные пользователя" примитива Си-ГОТОВНОСТЬ запрос.
Понятие уровня исполнения может не потребоваться для многих применений. При его использовании его семантики зависят от ссылающейся спецификации.
С.8.2 Диагностика СИВ
Ссылающейся спецификации может потребоваться выразить семантики диагностики о развитии или завершении ветви. Например, диагностику можно передать в одном из параметров "данные пользователя СИВ" следующих примитивов:
a) Си-ИСПОЛНЕНИЕ запрос или Си-ИСПОЛНЕНИЕ ответ - предупреждение о возможной проблеме;
b) Си-ВОССТАНОВЛЕНИЕ (отложенная попытка) запрос - диагностика отложенной попытки в случае приемлемости будущей попытки;
c) Си-ВОССТАНОВЛЕНИЕ запрос от младшего - диагностика отсутствия повторной попытки, которая означает, что последующие повторные попытки не должны выполняться.
Так как дерево атомарного действия может включать в себя многих пользователей услуг СИВ, ссылающаяся спецификация должна рассматривать определение каждого диагностического сообщения с тремя частями информации:
a) идентичность источника сообщения;
b) машинно-читаемая часть сообщения;
c) часть сообщения, читаемая оператором.
С.8.3 Прикладная семантика
Параметр "данные пользователя" в примитивах услуг Си-НАЧАТЬ, Си-ПОДГОТОВКА, Си-ГОТОВНОСТЬ и Си-ВОССТАНОВЛЕНИЕ (готовность) можно использовать для передачи прикладной семантики (т.е. данных, которые манипулируют граничными данными). Например, старший может передать свою конечную семантику в виде параметра "данные пользователя" примитива ПОДГОТОВКА запрос. Аналогичным образом младший может передать свою последнюю прикладную семантику в виде параметра "данные пользователя" примитива Си-ГОТОВНОСТЬ запрос.
С.8.4 Эвристическое предупреждение
Параметр "данные пользователя" примитивов Си-ВОЗВРАТ и Си-ИСПОЛНЕНИЕ может использоваться для передачи отчетов эвристических нарушений. Однако такие отчеты могут быть потеряны при сбоях. Примитивы подтверждения могут быть не получены другим пользователем услуг СИВ. Для этой ветви никакой передачи семантик не будет, поскольку данные атомарного действия будут проигнорированы до выдачи примитива ответа.
Параметр "данные пользователя" этих примитивов может также использоваться для предупреждения о том, что сбой, возможно, был вызван потерей отчетов эвристических нарушений, распространявшихся вниз по дереву атомарного действия.
С.9 Факультативное использование услуги Си-ПОДГОТОВКА
Старший может выдать примитив Си-ПОДГОТОВКА запрос для информирования младшего о том, что в дальнейшем он не будет передавать ему никакой прикладной семантики. Однако старший может передать данные, которые не используют граничных данных младшего. Только пользователь услуг СИВ может отличить прикладную семантику от неприкладной.
Привлекая услугу Си-ПОДГОТОВКА, он выдает также младшему команду выполнить обработку для этой ветви и предложить исполнение. Старший может использовать параметр "данные пользователя" для передачи младшему своей последней семантики.
С.9.1 Семантика неявной подготовки
Услуга Си-ПОДГОТОВКА является факультативной. Если эта услуга не используется ссылающейся спецификацией, последняя прикладная семантика, переданная от старшего к младшему, должна передавать семантический эквивалент "неявная подготовка". Таким образом, младший должен знать, когда он получил последнюю прикладную семантику от старшего. После этого младший может предложить исполнение.
С.9.2 Неявная условная подготовка и продолжение
Если ссылающаяся спецификация не использует услуги Си-ПОДГОТОВКА, она может для выражения семантики подготовки выбрать другой подход.
Последняя прикладная семантика, переданная от старшего, может включать семантику "условная подготовка". "Условная подготовка", полученная младшим, разрешает ему привлекать услугу Си-ГОТОВНОСТЬ. Младший может также передать старшему семантику "продолжить". Это указывает на то, что он не будет передавать услугу Си-ГОТОВНОСТЬ, и ветвь продолжается.
После передачи семантики "условная подготовка" старший может не передавать прикладной семантики, пока он не получит примитив Си-ГОТОВНОСТЬ индикация или альтернативной "условной" семантики.
С.9.3 Конфликт между услугой Си-ГОТОВНОСТЬ и прикладной семантикой
Одна из задач ссылающейся спецификации - обеспечить, чтобы примитив Си-ГОТОВНОСТЬ запрос от младшего не столкнулся с прикладной семантикой от старшего. Это будет ошибкой на прикладном уровне. Этот конфликт нарушает свойство согласованности атомарного действия.
Этот конфликт не является ошибкой упорядоченности СИВ (т.е. протокольной ошибкой). СЭП СИВ не может определить такую ситуацию. Он не "заботится" о передаче и приеме прикладной семантики в ветви. То есть запросы и индикации прикладной семантики (ДАННЫЕ) не являются событиями СИВ (см. таблицы 9-14).
Примечание - СИВ допускает конфликт услуг Си-ПОДГОТОВКА и Си-ГОТОВНОСТЬ. Если услуга Си-ПОДГОТОВКА переносит прикладную семантику между услугой Си-ГОТОВНОСТЬ и прикладной семантикой произойдет конфликт. СЭП СИВ также не может определить эту ситуацию.
На рисунке С.7 показан конфликт между прикладной семантикой и услугой Си-ГОТОВНОСТЬ. Старший выдал два примитива ДАННЫЕ запрос для передачи прикладных семантик младшему. Младший получил первый примитив ДАННЫЕ индикация. Он считает это конечной прикладной семантикой для данной ветви. Затем он выдает старшему примитив Си-ГОТОВНОСТЬ запрос. После этого он получает второй примитив ДАННЫЕ индикация, содержащий прикладную семантику, которая будет использовать его граничные данные. Две услуги конфликтуют.
Рисунок С.7 - Конфликт между прикладными данными и услугой Си-ГОТОВНОСТЬ
Рисунок С.7 - Конфликт между прикладными данными и услугой Си-ГОТОВНОСТЬ
Младший осведомлен о конфликте. Он получает прикладную семантику после передачи примитива Си-ГОТОВНОСТЬ запрос. Это ошибка на прикладном уровне. Однако младший не может выполнить возврат ветви.
С другой стороны, старший не может обнаружить конфликт только простым наблюдением последовательностью примитивов СИВ на своем конце ветви. Он не знает, когда выдал младший примитив Си-ГОТОВНОСТЬ запрос: до или после получения второго примитива ДАННЫЕ индикация.
Примечание - Эта ситуация может стать предметом дальнейшей стандартизации СИВ.
В реализации может быть предусмотрено несколько способов разрешения этой ситуации:
a) использовать явную услуги* Си-ПОДГОТОВКА или иметь четкое определение семантики неявной подготовки;
________________
* Текст соответствует оригиналу. - Примечание.
b) не передавать данные (прикладную или неприкладную семантику) младшему после явной или неявной выдачи примитива Си-ПОДГОТОВКА запрос;
c) не выдавать примитив Си-ГОТОВНОСТЬ запрос до тех пор, пока младший не получит явный или неявный примитив Си-ПОДГОТОВКА индикация;
d) включить в параметр "данные пользователя" примитива Си-ПОДГОТОВКА запрос семантическое "полномочие". Младший должен передать эти полномочия в параметре "данные пользователя" примитива Си-ГОТОВНОСТЬ запрос. Если младший не получит это полномочие, он выполняет возврат ветви.
С.10 Использование услуг синхронизации и повторной синхронизации сеансового уровня для версии 1 протокола СИВ
В соответствии с ГОСТ Р ИСО/МЭК 9805 услуга Си-НАЧАТЬ преобразуется в услугу Сн-МЛАДШАЯ-СИНХРОНИЗАЦИЯ, услуга Си-ИСПОЛНЕНИЕ - в услугу Сн-СТАРШАЯ-СИНХРОНИЗАЦИЯ и услуга Си-ВОЗВРАТ в услугу Сн-ПОВТОРНАЯ-СИНХРОНИЗАЦИЯ (повторный пуск). Обычно порядковый номер точки синхронизации, используемый при Си-ВОЗВРАТ, равен порядковому номеру точки синхронизации предыдущей услуги Си-НАЧАТЬ.
Пользователь услуг СИВ может активизировать услуги синхронизации и повторной синхронизации сеансового уровня во время выполнения ветви. Однако необходимы ограничения на использование услуги Сн-ПОВТОРНАЯ-СИНХРОНИЗАЦИЯ.
Для обеспечения доставки примитивов услуги Си-ВОЗВРАТ услуга Сн-ПОВТОРНАЯ-СИНХРОНИЗАЦИЯ, привлеченная пользователем услуг СИВ, всегда проигрывает в конфликте с услугой Сн-ПОВТОРНАЯ СИНХРОНИЗАЦИЯ, которая обеспечивает Си-ВОЗВРАТ. Это происходит при наличии следующих условий (см. 9.5 ГОСТ Р ИСО/МЭК 9805):
a) пользователь услуг СИВ ограничивает использование повторной синхронизации услугой Сн-ПОВТОРНАЯ-СИНХРОНИЗАЦИЯ (повторный пуск);
b) значение порядкового номера точки синхронизации в услуге Сн-ПОВТОРНАЯ-СИНХРОНИЗАЦИЯ (повторный пуск), привлеченной пользователем услуг СИВ, больше его значения в услуге Сн-ПОВТОРНАЯ-СИНХРОНИЗАЦИЯ, обеспечивающей Си-ВОЗВРАТ.
Поэтому на пользователя услуг СИВ в ветви и на реализацию СЭП СИВ налагаются следующие ограничения:
a) если пользователь услуг СИВ привлек услугу Сн-СТАРШАЯ-СИНХРОНИЗАЦИЯ, то порядковый номер точки синхронизации услуги Сн-ПОВТОРНАЯ СИНХРОНИЗАЦИЯ (сброс), обеспечивающей Си-ВОЗВРАТ, равен порядковому номеру точки синхронизации последней услуги Сн-СТАРШАЯ-СИНХРОНИЗАЦИЯ. В противном случае его значение будет равно порядковому номеру точки синхронизации услуги Сн-МЛАДШАЯ-СИНХРОНИЗАЦИЯ, которая поддерживается предыдущей услугой Си-НАЧАТЬ;
b) значение порядкового номера точки синхронизации услуги Сн-ПОВТОРНАЯ-СИНХРОНИЗАЦИЯ (повторный пуск), привлеченной пользователем услуг СИВ, больше значения порядкового номера точки синхронизации предыдущей услуги Си-НАЧАТЬ или предыдущей услуги Сн-СТАРШАЯ-СИНХРОНИЗАЦИЯ, если она была привлечена.