Динамический объект — соединение
Объекты могут быть виртуальными (воображаемыми), которые не существуют реально, но описаны логически и отображаются только в памяти. Одним из таких важных объектов является соединение.
Для многих систем соединение существует в реальном оборудовании, отображая временную совокупность приборов, реализующих физическое соединение двух оконечных терминалов.
Приведем пример, который был рассмотрен ранее (см. рис. 2.59). Н рис. 2.96 приводится иллюстрация понятия виртуального объекта соединение. В этом примере абонентский комплект (АК1) соединяется с модулем многочастотного приемопередатчика (МЧПП) для передачи набранного номера. Согласно рассмотренному ранее алгоритму, исходящий абонент набирает номер входящего абонента, после чего другая часть МЧПП подсоединяется к другому абонентскому комплекту АК2.
После этих действий на станции появляется новый объект соединение, который отображается с помощью адресов связи. Для этого к атрибутам реального объекта добавляется атрибут номер адреса связи (NCB)- Его значение указывает номер типа и номер комплекта, соединенного с данным. Тогда функция, отражающая, например, объект АК1 как функцию его атрибутов (параметров), имеет вид:
fAK1=f (Nтип,NAK1 , NCB )
- N тип— номер типа комплекта, в данном случае тип АК (обычно этому типу присваивается номер 1);
- NAK1 — номер комплекта в своем типе (например, от 100 до 10 000 в зависимости от емкости станции);
- NCB — номер адреса связи (значения определяются типом, номером в типе комплектов, участвующих в соединении).
Аналогично отображается рассматриваемый в примере объект МЧПП:
fМЧПП=f (Nтип ,NМЧПП , NCB)
Рис. 2.96. Принцип создания и отображения объекта соединение:
|
Fnp — функция процесса;
а) условное изображение объекта соединение реального оборудования;
б) распределенное отображение объекта соединение с помощью адреса связи;
е) централизованное отображение объекта соединение с помощью адреса связи
Отличие состоит только в номере типа, который должен принимать значение, закрепленное за этим типом комплекта, и в дополнительных параметрах, содержащих характеристики набранного номера, обозначенных N1 N2,..., Nk.
Заметим, что объект соединение является динамическим. Он изменяется в процессе установления соединения. В процессах, обеспечивающих передачу данных, он необязательно имеет аналог соединения реального оборудования. Он может отображать параметры виртуального пути или канала (см. 1.5.4).
Функционально объект соединение может быть отображен двумя способами децентрализованным (рис. 2.96, б) и централизованным (рис. 2.96, в).
При децентрализованном способе соединение отображается с помощью записи номера и типа предыдущего устройства на место переменной адрес связи (Nсв) последующего устройства (это показано стрелками на рисунке). Для надежности запись типа и номера последнего устройства дублируется в адресе связи первого устройства (замыкается «кольцо»).
При централизованном способе создается новое виртуальное устройство — процесс, в котором записывают в переменные адреса связи номера и тип участников процесса.
Объект соединение может также иметь свои атрибуты (например категорию соединения), которые здесь не указаны.
|
Серверы
Согласно концепции архитектуры распределенных вычислительных ресурсов (одной, из которых является CORBA), объекты выступают в виде клиентов, обслуживание которых осуществляется серверами. Серверы, применяемые при табличном подходе, были рассмотрены ранее в виде алгоритмов отдельных функций. Проблема заключается в том, что по запросу клиента должны быть вызваны только определенные функции и в определенном порядке. Для этого в рассматриваемом методе предлагается табличная запись функции (универсальная программа).
Для дальнейшего изучения уточним применяемые термины.
Универсальная программа
Не вдаваясь в сложные математические подробности, приведем цитату [45]: «Универсальные программы — это программы, которые в некотором смысле реализуют все программы. Сначала существование универсальной программы кажется неправдоподобным. Тем не менее, нетрудно убедиться, что она существует. Суть состоит в том, что универсальная программа не должна обязательно содержать в себе все другие программы. Она должна уметь кодировать и декодировать номера всех программ, которые могут быть записаны и допустимы на заданном языке программирования».
Можно добавить, что программа есть последовательность из заданных команд. Число таких последовательностей велико, но не бесконечно, и может быть перечислено. Оно поддается закономерному описанию в виде номеров. Теоретическое исследование универсальных программ [61] выходит за рамки настоящей книги.
Автоматный подход
Автоматный подход позволяет упорядочить в определенной последовательности вызовы серверов по запросу объекта. Согласно рекомендациям МККТТ Z.100-Z.104, для представления алгоритмов предложен язык спецификаций и описаний SDL (Specification and Description Language). Он также опирается на понятие конечный автомат. Поэтому этот подход позволяет использовать переход от алгоритмов различных уровней к программе. В модели конечного автомата любой алгоритм отражается следующей рекурсивной функцией:
|
s(t+1)=f(S(t),X(t)),
Z{t+1)=f1(S(t),X(t)),
где X(t) = [x1(t), x2(t), x3(t),..., xp(t)] — значения сигналов на входе автомата;
S(t) = [s1(t), s2(t), s 3(t),..., sn(t)] — внутренние состояния автомата;
Z(t) = [z1(t), z2(t), z3(t),..., zk(t)] — значения сигналов на выходе автомата.
Следуя этим выражениям, алгоритм можно представить как последовательное вычисление рекурсивной функции, которая сопоставляет совокупности входного сигнала, текущего состояния и нового состояния. Смена состояний называется переход. Пара «ВХОД-СОСТОЯНИЕ» уникальна, т.е., нигде в алгоритме не применяется для перехода в другое состояние. Переход из одного состояния в другое сопровождается выполнением действий при переходе. Эти действия указаны в рекомендациях ITU-T Z. 100-104. Приведем некоторые определения:
- СОСТОЯНИЕ обозначает положение процесса, при котором он приостановлен до получения сигнала ВХОД;
- ВХОД — действие, которое передает алгоритму информацию от внешнего окружения или другого алгоритма и инициирует ПЕРЕХОД;
- ЗАДАЧА — действие, не определенное ни одним из приведенных терминов;
- УСЛОВИЕ — это действие, при котором выбирается один из нескольких возможных путей продолжения процесса;
- ВЫХОД — действие, которое передает сигнал внешнему окружению или другому алгоритму.
Приведем еще несколько определений, которые позволяют внести ясность. При разработке и использовании алгоритмов следует различать различные уровни алгоритмов, которые соответствуют уровням абстракции и применяемым языкам программирования. В частности, алгоритм-спецификация — это описание процесса на уровне заказчика или эксплуатационного персонала. Алгоритм-описание — алгоритм, отображающий реализацию алгоритма-спецификации.
Согласно рекомендациям для изображения алгоритмов применяются следующие обозначения (рис. 2.97).
Рис. 2.97. Условное отображение блоков алгоритмов
Функция, позволяющая последовательное вычисление ее значений на основании предыдущего значения и начальных условий.
При применении этих обозначений существует естественные ограничения:
- за символом СОСТОЯНИЕ может следовать один или несколько символов ВХОД;
- каждому символу ВХОД должен предшествовать один символ СОСТОЯНИЕ (пара
СОСТОЯНИЕ ВХОД уникальна, т.е., должна соответствовать только переходу в од
ноименное СЛЕДУЮЩЕЕ СОСТОЯНИЕ);
- за символом ВХОД должен следовать один и только один символ, который не может
быть символом ВХОД;
- за символом и ЗАДАЧА или ВЫХОД должен следовать один и только один символ,
который не может быть символом ВХОД;
- за символом УСЛОВИЕ должны следовать два или более символов, которые не могут
быть символами ВХОД.
Заметим, что нет никаких ограничений на число следующих последовательно операторов ПЕРЕХОД (ЗАДАЧА, УСЛОВИЕ, ВЫХОД) и на порядок их следования.
Табличные функции
Указанные выше ограничения позволяют иметь еще одно отображение алгоритма, записанного на языке SDL, в виде таблицы соответствий (табл. 2.2), которая сопоставляет каждой паре ВХОД-СОСТОЯНИЕ набор действий при переходе.
Таблица 2.2. Таблица соответствий, отображающая оператор ПЕРЕХОД
Наименования операторов указывают, что на соответствующем месте в таблице содержатся числовые значения, указывающие номера конкретных действий. Для этого вводится соответствующая нумерация, отображающая возможные значения операторов.
Значение оператора S(t) — указывает номер состояния, в котором находится процесс. Например, табл. 2.3. показывает пример нумерации операторов СОСТОЯНИЕ. (Здесь и далее для составления таблиц используется рис. 2.98.) Эта таблица составляется либо нумерацией состояний в готовом алгоритме, либо устанавливается руководителем разработки (для ограничения имен и числа состояний), либо накапливается, контролируется, пополняется системой автоматизации.
Значение оператора X(t) — указывает номер входного сигнала, который инициирует переход. Например, табл. 2.4 показывает пример нумерации операторов ВХОД.
В некоторых случаях применяется таблица переходов, которая имеет другой вид, но эквивалентна рассматриваемой здесь таблице соответствия.
Операция ВХОД до поступления сигнала «ВХОД» в основной алгоритм обработки выполняется модулем (объектом) «сканирование».
Значение Q(t) — указывает номер оператора УСЛОВИЕ. Для нумерации применяют индексы при буквенном обозначении Q. Табл. 2.5. показывает пример нумерации одного УСЛОВИЯ.
Значение z(t) указывает номер выходного сигнала, передаваемого в окружающие устройства или алгоритмы. Task(t) указывает номер оператора ЗАДАЧА.
При нумерации этих операторов следует дать несколько комментариев. Как показано в предыдущих разделах (2.9.2-2.9.8), многие функции выполняются алгоритмическими модулями (в терминологии объектно-ориентированного подхода — объектами). Например, оператор ВЫХОД, указывающий на включение и выключение акустических сигналов, выполняется модулем передачи команд. Этот модуль, согласно идеологии объектно-ориентированного подхода, имеет свой интерфейс. Поэтому при описании интерфейса указываются номера последовательностей команд. Эти номера определяют конкретную последовательность команд в операторе ВЫХОД. Обычно они бывают многозначными. Например, применяется номер, состоящий из двух частей. В первой части он содержит номер устройства (объекта), которое должно выполнить последовательность команд, а во второй части указывается (через точку) конкретная последовательность команд.
Табл. 2.6 показывает пример нумерации операторов ВЫХОД. В этой таблице предполагается, что при нумерации объекту «акустическое соединение» поставлен в соответствие номер 3 (первая часть номера оператора ВЫХОД), и он может сформировать две последовательности команд (вторая часть номера оператора ВЫХОД) — «включить» или «выключить». Эти действия отражены соответственно номерами во второй части номера.
Номер сигнала ВЫХОД с именем «включить таймер 20 с» предполагает, что таймер — это объект с номером 4 (первая часть номера), а действие имеет номер 1.
Еще раз напомним, что присвоение этих номеров делается произвольно по готовому алгоритму, или руководителем, или системой автоматизации, но впоследствии строго соблюдается. Особое значение придается разрешению, запрещению или ограничению синонимов. Например, термин «включить» может иметь синонимы — «активизировать», «запустить» и т.п. Для табличного алгоритма выполнение операторов-синонимов возможно, но лучше выполнять заповедь «не увеличивай сущность без необходимости», поскольку многозначность может привести к трудностям в понимании разработчиком или пользователем.
Операторы ЗАДАЧА выполняется модулями, которые также как и оператор ВЫХОД имеют свои интерфейсы. Принцип назначения номеров одинаков. Например, при выполнении оператора ЗАДАЧА с именем «найти свободный приемник» необходимо указать, что этот оператор предназначен модулю поиска промежуточных путей (он также проводит поиск свободных приборов) и номер действия внутри этого модуля. Табл. 2.7 иллюстрирует пример нумерации оператора ЗАДАЧА. В данном случае назначенный номер 2.1. показывает, что модуль (объект) «поиск промежуточных путей» имеет номер 2 (первая часть номера оператора), а действие «найти свободный МЧПП» имеет номер 1.
Таблица 2.7. Нумерация оператора ЗАДАЧА
Наименование оператора ЗАДАЧА | Числовое значение |
Найти свободный МЧПП | 2.1 |
Заметим, что при передаче сообщения объекту номер оператора сопровождается необходимой информацией, которая рассматривалась при описании отдельных алгоритмов. Эти данные указаны на рисунках 2.71, 2.74, 2.77, 2.83, 2.89) в виде некоторых входов.
Возвращаясь к таблице соответствия можно сказать, что для описания работы крупного устройства, например, станции, таблица должна включить в себя все переходы алгоритма, что составляет сотни тысяч строк. Это предполагает наличие программной поддержки для минимизации таблиц, объема памяти, времени поиска и коррекции. Однако преимуществом табличного подхода является то, что эти операции никак не связаны с особенностями самого алгоритма и обладают всеми свойствами программного обеспечения для распределенных систем программирования, которые заключаются в том, что от пользователя скрыты элементы взаимодействия: местоположение объекта, реализация объекта, механизм связи с объектом.
Еще одним достоинством является прямой переход от алгоритма к программе. Это дает возможность автоматизации и быстрой реализации, что позволяет разработчикам сконцентрировать внимание на приложениях и не беспокоиться о проблемах распределенного системного программирования нижнего уровня.
Рассмотрим пример табличного отображения алгоритма. На рис. 2.98 приведен простой алгоритм, выполненный в соответствии с автоматным подходом и написанный на языке SDL. Этот же алгоритм отображен с помощью таблицы соответствий (табл. 2.8), в которой применяется нумерация операторов, заданная табл. 2.3-2.7.
Сопоставление табл. 2.8 и рис. 2.98 показывает, что существует обратное соответствие, т.е. таблица однозначно может быть переведена в алгоритм на языке SDL. Более того, язык на первом этапе внедрения алгоритма имел текстовую версию, которая не получила развития. При табличном подходе она может быть использована для автоматизации одной из самых «скучных» работ — составления описания алгоритма.
Строке таблицы может быть сопоставлен текст, который заполняется по подставленным в таблицу параметрам. В результате чего получается описание работы алгоритма.
Например, для строки табл. 2.8 может быть представлен следующий текст.
«Если система находится в состоянии... и поступил сигнал..., то выполняется,...проверяется условие... Если в результате проверки..., то акустический..., таймер... Система переходит в состояние...». Все пропущенные слова восстанавливаются с использованием параметров табл. 2.3-2.7.
Рис. 2.98. Фрагмент алгоритма перехода из исходного состояния
в состояние «прием номера»:
S(t), S(t + 1) — СОСТОЯНИЯ в текущий и следующий момент времени;
х(t) — ВХОД (входной сигнал); Q1 — УСЛОВИЕ 1 (результат поиска путей);
Task1 — заявка на ЗАДАЧУ1 (алгоритм поиска путей);
Task2 — заявка на ЗАДАЧУ2 (передача команд);
Task3 — заявка на ЗАДАЧУЗ (установка таймера)
Таблица 2.8. Таблица соответствия согласно алгоритму, изображенному на рис. 2.98
№ строки | S(t) | x(t) | Task1 (t) | Q1 | Task2(r) | Task3(t) | S(t+1) |
2.1 | l | 3.3 | 4.1 | ||||
- | 3.1 | - | |||||
- | - | 3.2 | - |
Алгоритмы работы с таблицей
Таблица дает возможность разработать универсальную программу, т.е. она позволяет кодировать и декодировать номера алгоритмов, которые могут быть записаны и допустимы на языке SDL. Это дает большие преимущества и, в частности, то, что выполнение заданного алгоритма не программируется, а кодируется и вносится как данные для программы обработки таблицы. Поэтому выполнение алгоритма не нужно записывать в операторах языка программирования, на котором выполнена программа работы с таблицей. Существуют и другие преимущества, которые предоставляет программная шина.
Таблица соответствия содержит переходы, записанные в виде чисел. Алгоритм работы с таблицей заключается в том, что выполняются две задачи:
- по заданной паре ВХОД-СОСТОЯНИЕ определяется нужная строка таблицы соответствия;
- осуществляются действия в том порядке, который указан в строке, и в соответствии с содержанием установленного в ней номера.
Алгоритм достаточно прост и далее не приводится. Можно только отметить, что стремление к оптимизации объема таблиц и их записи в памяти могут усложнить эти алгоритмы.
Многозадачность
Особенностью программного обеспечения телекоммуникационной аппаратуры является необходимость реализации многозадачного режима. Даже при децентрализованном управлении один процессор выполняет попеременно несколько задач, т.е. в управляющем устройстве АТС существуют сразу несколько процессов. Еще одна особенность состоит в том, что время старта этих задач непредсказуемо и зависит от внешних причин.
Эта проблема решается следующим способом, применяемым для систем с многозадачной обработкой. Для каждого процесса, который обозначается в общем случае как «обработка вызова», отводится область памяти. В ней записывается глобальное состояние вызова. Оно может принимать следующие значения: свободно, работа, ожидание, блокировка и регулирует взаимодействие между процессами.
Состояние свободно присваивается, если область не занята вызовом. Состояние работа — при выполнении процесса. Состояние ожидание отмечает ожидание поступления внешнего сигнала. Состояние блокировка отмечает аварийные процессы. Система работает, изменяя состояния в порядке, показанном на рис. 2.99.
Рис. 2.99. Последовательность значений глобальных состояний вызова
Переходы на рис. 2.99 осуществляются в двух фазах.
1. Фаза ввода. На этом этапе проводится опрос внешних объектов как в алгоритме сканирования. При поступлении из внешней среды сигналы ВХОД записываются в специальные зоны памяти, называемые областями памяти процессов. В этой фазе глобальное состояние — свободно (точнее, отсутствует запись в области «состояние») заменяется глобальным состоянием ожидание, и процесс переводится в очередь на выполнение.
2. Фаза выполнения. При обращении к очереди областей памяти процессов, ожидающих обслуживания, процессор выбирает одну из них. После чего области памяти процесса присваивается глобальное состояние работа. Обработка входного сигнала заключается в
Под сигналом, согласно определению ITU-T (Рекомендация Z.100), понимается поток данных несущих информацию процессу. Например, сигналы «абонент снял трубку», «абонент положил трубку», сигналы управления, поступающие с других станции и т.п.
выполнении перехода в соответствии со значением поступившего входного сигнала и локального состояния вызова (этапом). Здесь имеются в виду локальные состояния, например, «набор номера», «ожидание отбоя». По этой паре выполняется обработка строки табличным алгоритмом с присвоением ему в конце работы локального состояния. После этого действие приостанавливается в ожидании нового входного сигнала.
При успешном выполнении этих действий вызову снова присваивается состояние ожидание (на рис. 2.99 возможность возврата указывается двухсторонней стрелкой), и он возвращается в очередь ожидающих процессов. Если этот переход был завершающим для процесса (например, разъединение), то область памяти освобождается и ей присваивается значение свободно.
При аварийном завершении, например, если поступил сигнал превышения времени выполнения перехода или другой аварийный сигнал, процесс переводится в состояние блокировка. При восстановлении системы область памяти процесса, как правило, освобождается и ей присваивается состояние свободно.
Согласно рассмотренному порядку, действия по обработке вызова можно представить в виде работы с тремя очередями (рис. 2.100). На этом рисунке условно показан порядок обработки областей памяти, организованных в виде очередей.
Рис. 2.100. Порядок многозадачной обработки процессов и взаимодействие очередей
Очередь свободных процессов — это резерв всех свободных областей памяти, которые могут быть использованы для «порождаемых» процессов.
Очередь процессов, ожидающих ввода сигналов, — области памяти, которые выполнили действия, установили следующие состояния и ожидают нового сигнала ВХОД.
Очередь процессов, ожидающих обработки, — это области памяти, в которые записан входной сигнал. Они ожидают процедуры обработки строки табличного алгоритма. Порядок обработки вызова следующий. При поступлении входного сигнала диспетчер ввода, в качестве которого выступает программа сканирования, распределяет его в одну из двух очередей. Если это первичный сигнал, то занимается одна из областей памяти процессов в очереди свободных процессов, вместо состояния свободно устанавливается состояние ожидание и процесс переводится в очередь процессов, ожидающих обработки. Если этот процесс уже существует, что определяется заявкой на сканирование (см. 2.9.2), то после записи поступившего входного сигнала процесс переводится в очередь процессов, ожидающих обработки. Устанавливается состояние ожидание.
После того, как процесс будет выбран из очереди, выполняются программы выбора и обработки одного процесса (состояние работа). В случае успешного окончания обработки он может быть помещен в очередь ожидающих процессов с установкой заявки на сканирование очередного входного сигнала либо в очередь свободных процессов (при окончании обслуживания).