Телекоммуникационные сети и устройства

Программное обеспечение. Свойства программного обеспечения устройств в сетях телекоммуникации

Разбить на страницы
Показывать лекцию целиком

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

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

  • "Большое программное обеспечение". Основные его признаки:
  • оно создается большим коллективом специалистов (свыше 100 человек);
  • имеет большой объем (более 100 000 строк программного текста);
  • обновляется и дополняется в течение всего "жизненного цикла" системы.
  • Программное обеспечение системы, работающей в реальном масштабе времени.
  • Это означает, что:

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

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

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

  • Простота обслуживания.

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

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

    Системы программирования

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

    Предлагаемый в этом разделе подход был создан для разработки отечественных систем телекоммуникаций с программным управлением. Он отображен в книгах и многих статьях (например, [9, 13, 44, 45]). Это подход был развит в 1970-х годах, и в настоящее он может быть отнесен к классу объектно-ориентированных систем программирования.

    Не претендуя на обзор систем, принадлежащих классу объектноориентированных, приведем основные определения объектно-ориентированного подхода. Заметим, что потом он не раз встретится в этом курсе, например при рассмотрении вопросов эксплуатации и управления сетями связи [29, 52].

    После рассмотрения общих вопросов перейдем к отечественному методу.

    Объектно-ориентированный подход

    Основу этого подхода составляют следующие понятия.

  • Объект, который представляет устройство или информацию о нем, подлежащую обработке в программе.
  • Атрибут. Каждый объект описывается списком атрибутов, которые, с одной стороны, дают определение всем характеристикам объекта, с другой — указывают на параметры, которые могут быть использованы внешним окружением. Соотношение объект-атрибут аналогично отношению функция-параметр в математике. Это иногда позволяет записывать объект в виде функции.
  • Сообщение (метод.) Запросы на работу объекта называются сообщениями или методами. Объекты могут поддерживать более чем один метод. Методы состоят из двух частей: описание (signature) и реализация (implementation). Описание состоит из имени метода, имен и типов параметров (в том числе возвращаемое значение) и исключения (exceptions).
  • Интерфейс объекта представляет собой часть объекта, предназначенную для взаимодействия с внешним окружением. Совокупность интерфейсов определяет поведение объекта. Интерфейс объекта состоит из имени объекта и набора методов.
  • Часто с инетерфейсом связано понятие класса. Класс имеет внутреннюю часть, определяющую структурное качество, и внешнюю часть, содержащую группировку всех объектов класса и конструктор для каждого класса.
  • Поведение объекта — это контракт, описание поведения объекта при управлении его программой, которое предлагается потребителю. Контракт состоит из описания и необходимых предусловий (Preconditions), инвариантов (invariants) и постусловий (post-conditions). Инварианты — предусловия — условия, правильность которых должна быть обеспечена перед вызовом метода. Постусловия — условия, правильность которых проверяется после вызова метода и подтверждает правильность выполнения контракта.
  • Архитектура CORBA для распределенных вычислительных систем

    Для построения программного обеспечения, его разработки и эксплуатации во многих приложениях применяется CORBA (Common Object Request Broker Architecture) — Общая архитектура с передачей запросов к объекту через посредника. Основные сведения об этой архитектуре можно узнать в [18, 29, 52, 68]. Часто она классифицируется как система работы с распределенными вычислительными ресурсами. Ее свойства во многом соответствуют перечисленным в начале этого раздела требованиям к разработке и эксплуатации программного обеспечения станций в сетях телекоммуникаций.

    Часть архитектуры CORBA, необходимая для дальнейшего рассмотрения, показана на рис. 4.1.

    Согласно современной классификации указанная архитектура принадлежит классу архитектуры "клиент-сервер". Как можно видеть на рис. 4.1, имеется два типа сетевых устройств:

  • клиенты (при объектно-ориентированном подходе это объекты);
  • серверы (обслуживающие узлы сети).
  • Работа осуществляется сервером по запросу клиента на услугу.

    Основной особенностью архитектуры CORBA является наличие программной шины ORB (Object Request Broker). ORB "отвечает" за распределение запросов клиента по соответствующими серверам, а также является транспортной средой для взаимодействия в процессе выполнения задачи. Детали этого взаимодействия скрыты от пользователя и существуют как часть реализации "программной шины".

    Обычно скрытыми являются следующие элементы взаимодействия [18].

  • Местоположение объекта. Клиент не знает, где располагается целевой объект — в отдельном процессе в другом компьютере сети или в другом процессе того же самого компьютера сети.
  • Реализация объекта. Клиент не знает, каким образом реализован объект, какой язык программирования или язык сценариев использован для реализации, какая операционная система или какое оборудование работает в объекте.
  • Состояние объекта. При передаче запроса к целевому объекту клиент не должен знать, активизирован ли объект (то есть запущен ли соответствующий процесс) и готов ли он принять запрос. В случае необходимости, перед тем как передать к объекту запрос услуги, компонент ORB невидимо для клиента запускает процесс на объекте.
  • Механизм связи с объектом. Клиенту неизвестен механизм (например, протокол, разделяемая память, вызов локального метода и т. д.).
  • Эти особенности ORB дают возможность разработчикам приложений сконцентрировать внимание на приложениях и не беспокоиться о проблемах распределенного системного программирования нижнего уровня.

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

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

    Этот подход отражен во многих статьях и книгах. Для начального изучения можно рекомендовать [7, 12, 13, 40, 44, 45].

    (рис 4.1) Фрагмент архитектуры CORBA

    Табличный метод, или метод универсальной программы

    Его характерные особенности:

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

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

    Согласно концепции объекта он имеет атрибуты, необходимые для работы с этим объектом. Например, это могут быть:

  • Тип комплекта. Этот атрибут в нашем примере позволяет определить перечень программ обработки абонентского вызова.
  • Номер комплекта. На станции может быть сотни тысяч комплектов одного типа. Номер позволяет определить, с каким из них надо работать.
  • Состояние комплекта. Это атрибут указывает, на каком этапе находится работа, осуществляемая внешним окружением с этим комплектом (комплект свободен, занят, заблокирован и т. д.) Значение этого атрибута, в отличие от рассмотренных выше атрибутов, меняется в процессе работы.
  • Каждый из этих атрибутов может быть пронумерован и представлен, как параметр функции, называемый абонентским комплектом — fАК (x1, x2, x3,…… xn).

    Аналогичные атрибуты имеют и другие комплекты. Например, рассмотреvнный в примере установления соединения в полностью децентрализованной системе (лекция 2, раздел 2.7) приемник много частотного набора (МЧПП) имеет те же атрибуты, что и абонентский комплект:

  • Тип комплекта
  • Номер комплекта
  • Состояние комплекта
  • Однако он имеет несколько своих характерных атрибутов, например:

  • Номер принятой цифры (возможные значения 1, 2, 3, …)
  • Значение 1-й цифры
  • Значение 2-й цифры
  • и т. д.
  • Эти атрибуты также участвуют в обработке вызова.

    Динамический объект — соединение

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

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

    Приведем пример. Он уже был подробно рассмотрен в разделе "Установление соединения в полностью децентрализованных системах коммутации" (лекция 2, рис. 2.18). Ниже (рис. 4.2) приводим сокращенный вариант для иллюстрации понятия виртуального объекта "соединение". В этом примере абонентский комплект ( АК1 ) соединяется с модулем многочастотного передатчика (МЧПП) для передачи набора номера. Согласно рассмотренному ранее алгоритму абонент набирает номер входящего абонента, после чего другая часть многочастотного приемопередатчика (МЧПП) набора номера подсоединяется к модулю абонентских аналоговых линий входящего абонента (абонентскому комплекту АК2 ) для определения его состояния. После этих действий на станции появляется новый объект "соединение", который отображается с помощью адресов связки. Для этого к атрибутам реального объекта добавляется атрибут номер адреса связки — NСВ. Его значение указывает номера типа и номер комплекта, соединенного с данным. Тогда функция, отражающая, например, объект АК1 как функцию с помощью его атрибутов (параметров), имеет вид

    fАК1=f(Nтип, NАК1,NСВ),

    где

    Nтип — номер типа комплекта, в данном случае тип АК (обычно этому типу присваивается номер 1);

    NАК1 — номер комплекта среди своего типа АК (например, от 100 до 10000 в зависимости от емкости станции);

    NМЧПП — номер комплекта среди своего типа МЧПП (например, от 100 до 10000 в зависимости от емкости станции);

    NСВ — номер связи (значения определяются типом и номером в типе комплектов, участвующих в соединении).

    Аналогично отображается рассматриваемый в примере объект МЧПП

    fМЧПП = f(Nтип, NМЧПП , NСВ,, N1, …, NK).

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

    Отличие только в номере типа, который должен принимать значение, закрепленное за этим типом комплекта, и в дополнительных параметрах характеристики набранного номера, о которых сказано выше, обозначенных N1, N2..., Nk.

    Заметим, что объект "соединение" является динамическим. Он изменяется в процессе установления соединения. В процессах, обеспечивающих передачу данных, он не обязательно имеет аналог соединения реального оборудования. Он может отображать параметры виртуального пути или канала. Функционально объект "соединение" может быть отображен двумя способами децентрализованным (рис. 4.2б), централизованным (рис. 4.2в).

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

    При централизованном способе создается новое виртуальное устройство — "процесс", в котором записывают в переменные адреса связи – номера и тип участников соединения

    Объект "соединение" может также иметь свои атрибуты (например, категорию соединения), которые здесь не указаны.

    Серверы

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

    Для дальнейшего изучения уточним применяемые термины.

    Универсальная программа

    Это один из основных результатов теории вычислимости, излагаемый метод является ее первым приложением, помимо математики. Не вдаваясь в математические подробности, приводим цитату [12, 33]:

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

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

    Автоматный подход и табличные функции

    Автоматный подход позволяет упорядочить работу по конкретной последовательности вызову серверов по запросу объекта. Кроме того, надо заметить, что согласно рекомендациям [67] предложен язык спецификаций и описаний 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), x3(t),….. ,sn(t)] — внутренние состояния автомата,

    Z(t) = [z1(t), z2(t), z3(t),….. ,zk(t)] —значения сигналов на выходе состояния.

    Следуя этому уравнению, алгоритм можно представить как последовательное вычисление рекурсивной функции, которая сопоставляет совокупности входного сигнала, текущего состояния и нового состояния. Эта смена состояний называется переходом. Пара "вход-состояние" уникальна, т. е. нигде в алгоритме она не применяется для перехода в другое состояние. Переход из одного состояния в другое сопровождается выполнением действий при переходе. Эти действия указаны в рекомендациях МККТТ Z.100-104 [лекции 3.

    Согласно рекомендациям МККТТ, для изображения алгоритмов применяются следующие обозначения (рис. 4.3).

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

  • За символом СОСТОЯНИЕ может следовать один только символ или несколько символов ВХОД.
  • Каждому символу ВХОД должен предшествовать один символ СОСТОЯНИЕ (пара СОСТОЯНИЕ-ВХОД уникальна, т. е. должна соответствовать только переходу в одноименное СЛЕДУЮЩЕЕ СОСТОЯНИЕ ).
  • За символом ВХОД должен следовать один и только один символ, который не может быть символом ВХОД.
  • За символом ЗАДАЧА или ВЫХОД должен следовать один и только один символ, который не может быть символом ВХОД.
  • За символом УСЛОВИЕ должны следовать два или более символа, которые не могут быть символами ВХОД.
  • Заметим, что нет никаких ограничений на число следующих повторно операций ПЕРЕХОДА (ЗАДАЧА, УСЛОВИЕ, ВЫХОД), ни на порядок их следования. Указанные выше ограничения позволяют иметь еще одно отображение алгоритма, записанного в SDL в виде таблицы соответствий (таблица 4.1 )В некоторых случаях применяется таблица переходов [44, 45], которая имеет другой вид, но эквивалентна рассматриваемой здесь таблице соответствия., которая сопоставляет каждой паре ВХОД-СОСТОЯНИЕ набор действий при переходе.

    (рис 4.3) Запись перехода на языке SDL
    Таблица соответствий, отображающая оператор переход
    Наименование операторов S(t) X(t) TASK Q(t) Z(t) S(t+1)
    Текущие значения операторов s(t) x(t) Taks(t) 0 z(t) s(t+1)
    1 s(t) s(t+1)

    В таблице 4.1 в верхней строке большими буквами записаны наименования операторов языка SDL, во второй строке — их текущие значения.

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

    s(t) — указывает номер состояния, в котором находится процесс. Например, таблица 4.2 показывает пример нумерации оператора СОСТОЯНИЕ.

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

    Нумерацмя оператора СОСТОЯНИЕ
    Наименование состоянияЧисловое значение
    Свободно 1
    Ожидание первой цифры 2
    Ожидание отбоя абонента 3

    x(t) — указывает номер входного сигнала, который инициирует переход. Например, таблица 4.3 показывает пример нумерации оператора ВХОД.

    Нумерация оператора ВХОД
    Наименование входаЧисловое значение
    Абонент снял трубку 1
    Абонент положил трубку 2

    Оператор ВХОД до поступления его в основной алгоритм обработки выполняется модулем (объектом) "сканирование".

    Q (t) — указывает номер УСЛОВИЯ. Для нумерации условия применяют индексы при буквенном обозначении Q. Таблица 4.5 показывает пример нумерации УСЛОВИЙ (в таблице отображено одно УСЛОВИЕ ).

    Нумерация оператора УСЛОВИЕ
    Наименование условияЧисловое значение
    Свободный МЧПП найден Q1 ДА-0

    НЕТ-1

    z(t) — указывает номер выходного сигнала, в окружающие устройства или алгоритмы. task(t) — указывает номер ЗАДАЧИ.

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

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

    Таблица 4.6 показывает пример нумерации ВЫХОДОВ. В этой таблице предполагается, что при нумерации объекту "Акустическое соединение" сопоставлен номер 3 (первая часть номера ВЫХОДА ) и он может сформировать две последовательности команд (вторая часть номера ВЫХОДА ) — "включить" или "выключить". Эти действия отражены соответственно номерами 1 и 2 во второй части номера.

    Номер сигнала ВЫХОД с именем "включить таймер 20 сек" предполагает, что таймер — это объект с номером 4 (первая часть номера), а действие "включить 20 сек" имеет номер 1.

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

    Нумерация оператора ВЫХОДОВ
    Наименование состоянияЧисловое значение
    Включить акустический сигнал "занято" 3.1
    Отключить акустический сигнал "занято" 3.2
    Включить акустический сигнал "ответ станции" 3.3
    Включить таймер 4.1

    Оператор ЗАДАЧА также выполняется модулями, которые, как и ВЫХОДЫ, имеют свои интерфейсы. Принцип назначения номеров тот же, что и для ВЫХОДОВ.

    Например, при выполнении ЗАДАЧИ с именем "найти свободный приемник" надо указать, что он предназначен модулю поиска промежуточных путей (он также проводит поиск свободных приборов), и номер действия внутри этого модуля.

    Таблица 4.7 показывает пример нумерации ЗАДАЧА. В данном случае назначенный номер 2.1 показывает, что модуль (объект) "поиск промежуточных путей" имеет номер 2 (первая часть номера оператора), а действие "найти свободный МЧПП" (Многочастотный Приемник Набора Номера) имеет номер 1.

    Нумерация оператора ЗАДАЧА
    Наименование состоянияЧисловое значение
    Найти свободный МЧПП 2.1

    Заметим, что при передаче сообщения объекту номер оператора сопровождается необходимой информацией, которая рассматривалась при описании отдельных алгоритмов. Эти данные указаны на рисунках (рис. 3.2, 3.5, 3.8, 3.11, 3.17, 3.23) в виде некоторых входов.

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

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

    Рассмотрим пример табличного отображения алгоритма. На рис. 4.4 приведен простой алгоритм, выполненный автоматным подходом и написанный с помощью языка SDL.

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

    Таблица соответствия согласно алгоритму по рис.4.4.
    № строки S(t) x(t) TASK1(t) Q1 TASK2(t) TASK3(t) S(t+1)
    1 1 1 2.1 1 3.3 4.1 2
    2 0 3.1 3
    3 2 3.2 1

    Попробуем описать работу алгоритма по таблице 4.8.

    Первая строка. В состоянии S(t)=1 (свободно) поступает входной сигнал x=1 (абонент снял трубку). Эта пара ВХОД-ВХОД-СОСТОЯНИЕ вызывает ПЕРЕХОД, который включает в себя следующие действия.

    Задача – Task2(t) = 2.1. Найти свободный МЧПП.

    Предположим, что получено значение Q1=1 — свободный МЧПП найден, тогда продолжаем действия, стоящие в первой строке.

    Включаем заявку на передачу команд устройством подключения акустических сигналов task2=3.3.

    (рис 4.4) Фрагмент алгоритма для построения таблицы 4.8.

    Передаем сигнал на включение таймера, равного 20 с, для ожидания набора номера ( task3=4.1 ).

    Завершаем переход установкой состояния s(t)=2.

    Вторая строка. Если после проверки условия Q1=0 — свободный МЧПП не найден, то проводятся следующие действия:

    Task2=3.1 (включается акустический сигнал "занято").

    Task3 не выполняется, поскольку в ней поставлен прочерк ( - ).

    В конце выполнения строки устанавливается состояние s(t)=3.

    Третья (последняя) строка начинается с состояния s(t)=3.

    При поступлении входного сигнала x(t)=2 ("абонент положил трубку") выполняется переход, содержащий следующие действия (напоминаем: действия, обозначенные прочерком, не выполняются, и следует перейти к обработке следующего столбца этой строки):

    Task 3=3.2 ("отключить акустический сигнал").

    Устанавливается состояние s(t)=1 (свободно).

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

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

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

    Например, для строки таблицы 4.8может быть представлен следующий текст:

    " Если система находится в состоянии…….. и поступил сигнал……, то выполняется, ……проверяется условие…. Если в результате проверки….., то ………акустический….. таймер……. И система переходит в состояние…."

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

    Алгоритмы работы с таблицей

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

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

  • По заданной паре ВХОД-СОСТОЯНИЕ найти нужную строку таблицы соответствия.
  • Выполнить действия в том порядке, который указан в строке, и в соответствии с содержанием установленного в ней номера.
  • Эти алгоритмы достаточно просты и далее не приводятся. Можно только отметить, что стремление оптимизации объема таблиц и их записи в памяти могут усложнить эти алгоритмы.

    Многозадачность

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

    Состояние "свободно" присваивается, если область не занята вызовом.

    Состояние "работа" — при выполнении процесса.

    Состояние "ожидание" отмечает ожидание поступления внешнего сигнала.

    (рис 4.5) Последовательность значений глобальных состояний вызова

    Состояние "блокировка" отмечает аварийные процессы.

    Система работает, изменяя состояния в порядке, показанном на рис. 4.5.

  • Фаза ввода. На этом этапе проводится опрос внешних объектов (см. алгоритм сканирования). При поступлении сигнал ВХОД из внешней среды или другой сигнал записываются в специальные зоны памяти, называемые областями памяти процессов, в которую записывается этот сигналПод сигналом, согласно определению МККТ (Рекомендации Z.100), понимается поток данных, несущих информацию процессу. Например, сигналы "абонент снял трубку", "абонент положил трубку", сигналы управления, поступающие с других станций, и т. п.. В этой фазе глобальное состояние "свободно" (точнее, отсутствие записи в области "состояние") заменяется глобальным состоянием "ожидание" и переводится в очередь на выполнение.
  • Фаза выполнения. При обращении к очереди областей памяти процессов, ожидающих обслуживания, процессор выбирает одну из них. Затем области памяти процесса присваивается глобальное состояние "работа" Обработка входного сигнала, как уже было рассмотрено ранее, заключается в выполнении перехода в соответствии со значением поступившего входного сигнала и локального состояния вызова, этапом обработки вызова. Здесь имеются в виду локальные состояния, например "набор номера", "ожидание отбоя".
  • По этой паре выполняется обработка строки табличным алгоритмом с присвоением ему в конце работы локального состояния. После чего действие приостанавливается в ожидании нового входного сигнала.

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

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

    Согласно рассмотренному порядку, действия по обработке вызова можно представить в виде работы с тремя очередями (рис. 4.6).

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

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

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

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

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

    (рис 4.6) Порядок многозадачной обработки процессов и взаимодействие очередей

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

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

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

    Основные операции работы с очередью

    Для установки в очередь, снятия, перевода в другую очередь используются стандартные процедуры работы со списком [3]. При этом можно применять операции со списками или с особым видом списка — очередью. Очередь — это список, в котором элементы добавляются с одного (конец очереди), а удаляются с другого конца (начало очереди), что несколько упрощает алгоритмы работы с ними.

    Для работы со списками применяют следующие операции:

  • ВСТАВИТЬ В СПИСОК,
  • УДАЛИТЬ ИЗ СПИСКА,
  • ПЕРЕВЕСТИ ИЗ СПИСКА….. В СПИСОК …,
  • НАЙТИ.....
  • Для установки в список используется процедура ВСТАВИТЬ В СПИСОК, показанная на рис. 4.7.

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

    На рис. 4.7б показан новый список со вставленным четвертым элементом. По исходным данным, содержащим адрес предыдущего элемента (элемент 3) и номер нового (элемент 4), понадобилось два действия:

  • изменить поле ("адрес") предыдущего в очереди элемента (это элемент 2);
  • в новом элементе (элемент 4) присвоить ячейке "адрес" число — адрес ссылки предыдущего элемента. Он равен адресу элемента, который теперь будет следовать за новым элементом (ссылка на элемент с адресом 3).
  • (рис 4.7) Принцип установки в список а) Исходный список; б) Список, после проведения операции "вставить"

    Операция УДАЛИТЬ состоит в присвоении адресу ссылки предыдущего элемента адреса ссылки удаляемого элемента. Пример операции УДАЛИТЬ — элемент 2 из очереди, показанной на рис. 4.8. Этот процесс приведен на рис. 4.7. В примере адрес ссылки удаляемого элемента 2 присвоен адресу ссылки элемента 1, стоящему перед ним.

    Перенос вызова из одного списка в другой содержит в себе обе операции ( УДАЛИТЬ — ВСТАВИТЬ ).

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

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

    (рис 4.8) Принцип удаления из списка

    Для удобства работы с очередью вводится два указателя:

    НАЧАЛО ОЧЕРЕДИ
    КОНЕЦ ОЧЕРЕДИ

    Для того чтобы ВСТАВИТЬ новый элемент в очередь, надо увеличить указатель КОНЕЦ СПИСКА на 1 ( КОНЕЦ ОЧЕРЕДИ:= КОНЕЦ ОЧЕРЕДИ+1 ) и его ВСТАВИТЬ В СПИСОК с полученным значением КОНЕЦ ОЧЕРЕДИ. Тогда новый элемент будет вставлен в конец очереди с очередным номером.

    Для того чтобы УДАЛИТЬ ЭЛЕМЕНТ (взять его в обработку), надо увеличить указатель НАЧАЛО ОЧЕРЕДИ на 1 ( НАЧАЛО ОЧЕРЕДИ:= НАЧАЛО ОЧЕРЕДИ +1 ). Тогда, следующий элемент станет первым (продвинется в начало очереди).

    Разность между номерами КОНЕЦ ОЧЕРЕДИ и НАЧАЛО ОЧЕРЕДИ показывает ДЛИНУ ОЧЕРЕДИ.

    Поскольку увеличение номеров не должно быть бесконечным, то для списка длины l принято считать, что элемент, следующий за элементом с номером (l —1), имеет номер 0.

    Операционная система и распределение ресурсов управляющего устройства

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

    При распределении времени работы компьютера предусматриваются следующие уровни (чем меньше номер уровня, тем выше приоритет при прерывании):

  • 1-й (верхний уровень) — ручное вмешательство, которое защищено паролем обслуживающего персонала, имеющего соответствующее право на прерывания;
  • 2-й уровень — контрольные функции и функции восстановления работоспособности;
  • 3-й уровень — функции, вызываемые периодически по сигналу таймера;
  • 4-й уровень — станционные процедуры и процессы.
  • Наиболее массовыми функциями являются периодические задачи и задачи по обработке вызова. Диаграмма выполнения этих функций показана на рис. 4.9.

    Как видно из рисунка, задачи выполнения основных алгоритмов решаются во время, оставшееся от периодически выполняемых задач, которые в телекоммуникационных станциях имеют сравнительно малый период. Например, программа сканирования активизируется через каждые 10 мс (см. лекцию 3 "Алгоритм сканирования").

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

    (рис 4.9) Диаграмма распределения времени между обычными и периодическими задачами; T — минимальный период выполнения задач

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

    Пример структурной схемы программного обеспечения станции (базовые задачи) показан на рис. 4.10.

    (рис 4.10) Пример структурной схемы программного обеспечения

    Теоретические положения

    Чтобы понять идеологию последовательности разработки и исследования предложенного выше программного обеспечения, приведем несколько положений из теории алгоритмов. Понятие "алгоритм" не имеет строгого математического определения, поэтому является исходным понятием, определяемым неформально. Существует ряд неформальных, но общепринятых определений алгоритма [37, 43, 48, 53].

    Основное из них таково.

    Алгоритм характеризуется следующими свойствами:

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

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

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

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

    Тогда любая алгоритмическая проблема может быть сведена к задаче определения некоторого заданного числа y по заданной системе целочисленных параметров:

    x1, x2,…., xn.

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

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

    Рекурсивная функция имеет четкое определение, приведенное ранее, и достаточно исследована в математике [33, 43, 53] .

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

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

    Для рекурсивных функций уже известны следующие типы [53]:

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

    Краткие итоги

  • Все функции управляющих устройств, реализованные в аппаратных средствах, могут быть реализованы программами.
  • Основные признаки программного обеспечения коммутационной станции: имеет большой объем, работает в реальном масштабе времени, массовое, отчуждаемое, простое в обслуживании.
  • Современное программное обеспечение разрабатывается с помощью объектно-ориентированных систем программирования.
  • Основу объектно-ориентированного подхода составляют следующие понятия: объект, атрибут, сообщение (метод), интерфейс объекта, контракт.
  • Для построения программного обеспечения, его разработки и эксплуатации во многих приложениях применяется CORBA (Common Object Request Broker Architecture) — Общая архитектура с передачей запросов к объекту через посредника.
  • Согласно современной классификации указанная архитектура принадлежит к классу архитектуры "клиент-сервер". Основной особенностью архитектуры CORBA является наличие программной шины ORB (Object Request Broker). ORB "отвечает" за распределение запросов клиента по соответствующими серверам.
  • Табличный метод, или метод универсальной программы является одним из методов объектно-ориентированного подхода к программированию.
  • Объекты могут быть виртуальными (воображаемыми), которые не существуют реально, но описаны логически и отображаются только в памяти. Одним из таких важных объектов является соединение.
  • Соединение представляет динамический объект, состав которого может изменяться в процессе обработки и может быть отображен функцией.
  • Функционально объект "соединение" может быть отображен двумя способами: децентрализованным / централизованным.
  • Универсальные программы — это программы, которые в некотором смысле реализуют все программы. Она должна уметь кодировать и декодировать номера всех программ, которые могут быть записаны и допустимы на заданном языке программирования.
  • Для разработки универсальной программы используется модель конечного автомата. В модели конечного автомата любой алгоритм отражается рекурсивной функцией, которая, в свою очередь, отображается таблицей соответствий. Для этого вводится соответствующая нумерация, отображающая возможные значения операторов.
  • Использование таблицы предполагает наличие программной поддержки для минимизации таблиц, минимизации их хранения в памяти, поиска и коррекции.
  • Таблица дает возможность разработать программную шину или универсальную программу в указанном математикой смысле, т. е. она позволяет кодировать и декодировать номера алгоритмов, которые могут быть записаны и допустимы на языке SDL.
  • Особенностью программного обеспечения устройств телекоммуникаций является необходимость реализации многозадачного режима. Поэтому для обработки вызова применяется понятие глобального состояния и специальный процесс обработки всего потока вызовов.
  • Программное обеспечение станций в сети телекоммуникаций выполняет не только задачи, отражаемые алгоритмами и касающиеся установления соединения и различных задач. Это учитывается при распределении ресурсов управляющего устройства (компьютера), и задачи разбиваются на уровни.
  • Наиболее массовыми функциями являются периодические задачи. Выполнение основных алгоритмов происходит во время, оставшееся от периодически выполняемых задач, которые в телекоммуникационных станциях имеют сравнительно малый период.
  • "Алгоритм" не имеет строгой математической формулировки, поэтому является исходным понятием, определяемым неформально. Алгоритм характеризуется следующими свойствами: дискретность, детерминированность, элементарность шагов, направленность алгоритма, массовость.
  • Если алгоритм составлен в соответствии с этими неформальными правилами, то возможно сделать следующий шаг обработки. Входящие в него понятия могут быть перенумерованы, т. е. каждому из них по определенному правилу может быть присвоено число. Это приводит задачу разработки алгоритма к отысканию соответствующей рекурсивной функции.
  • Страницы:

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

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

  • "Большое программное обеспечение". Основные его признаки:
  • оно создается большим коллективом специалистов (свыше 100 человек);
  • имеет большой объем (более 100 000 строк программного текста);
  • обновляется и дополняется в течение всего "жизненного цикла" системы.
  • Программное обеспечение системы, работающей в реальном масштабе времени.
  • Это означает, что:

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

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

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

  • Простота обслуживания.

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

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

    Системы программирования

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

    Предлагаемый в этом разделе подход был создан для разработки отечественных систем телекоммуникаций с программным управлением. Он отображен в книгах и многих статьях (например, [9, 13, 44, 45]). Это подход был развит в 1970-х годах, и в настоящее он может быть отнесен к классу объектно-ориентированных систем программирования.

    Не претендуя на обзор систем, принадлежащих классу объектноориентированных, приведем основные определения объектно-ориентированного подхода. Заметим, что потом он не раз встретится в этом курсе, например при рассмотрении вопросов эксплуатации и управления сетями связи [29, 52].

    После рассмотрения общих вопросов перейдем к отечественному методу.

    Объектно-ориентированный подход

    Основу этого подхода составляют следующие понятия.

  • Объект, который представляет устройство или информацию о нем, подлежащую обработке в программе.
  • Атрибут. Каждый объект описывается списком атрибутов, которые, с одной стороны, дают определение всем характеристикам объекта, с другой — указывают на параметры, которые могут быть использованы внешним окружением. Соотношение объект-атрибут аналогично отношению функция-параметр в математике. Это иногда позволяет записывать объект в виде функции.
  • Сообщение (метод.) Запросы на работу объекта называются сообщениями или методами. Объекты могут поддерживать более чем один метод. Методы состоят из двух частей: описание (signature) и реализация (implementation). Описание состоит из имени метода, имен и типов параметров (в том числе возвращаемое значение) и исключения (exceptions).
  • Интерфейс объекта представляет собой часть объекта, предназначенную для взаимодействия с внешним окружением. Совокупность интерфейсов определяет поведение объекта. Интерфейс объекта состоит из имени объекта и набора методов.
  • Часто с инетерфейсом связано понятие класса. Класс имеет внутреннюю часть, определяющую структурное качество, и внешнюю часть, содержащую группировку всех объектов класса и конструктор для каждого класса.
  • Поведение объекта — это контракт, описание поведения объекта при управлении его программой, которое предлагается потребителю. Контракт состоит из описания и необходимых предусловий (Preconditions), инвариантов (invariants) и постусловий (post-conditions). Инварианты — предусловия — условия, правильность которых должна быть обеспечена перед вызовом метода. Постусловия — условия, правильность которых проверяется после вызова метода и подтверждает правильность выполнения контракта.
  • Архитектура CORBA для распределенных вычислительных систем

    Для построения программного обеспечения, его разработки и эксплуатации во многих приложениях применяется CORBA (Common Object Request Broker Architecture) — Общая архитектура с передачей запросов к объекту через посредника. Основные сведения об этой архитектуре можно узнать в [18, 29, 52, 68]. Часто она классифицируется как система работы с распределенными вычислительными ресурсами. Ее свойства во многом соответствуют перечисленным в начале этого раздела требованиям к разработке и эксплуатации программного обеспечения станций в сетях телекоммуникаций.

    Часть архитектуры CORBA, необходимая для дальнейшего рассмотрения, показана на рис. 4.1.

    Согласно современной классификации указанная архитектура принадлежит классу архитектуры "клиент-сервер". Как можно видеть на рис. 4.1, имеется два типа сетевых устройств:

  • клиенты (при объектно-ориентированном подходе это объекты);
  • серверы (обслуживающие узлы сети).
  • Работа осуществляется сервером по запросу клиента на услугу.

    Основной особенностью архитектуры CORBA является наличие программной шины ORB (Object Request Broker). ORB "отвечает" за распределение запросов клиента по соответствующими серверам, а также является транспортной средой для взаимодействия в процессе выполнения задачи. Детали этого взаимодействия скрыты от пользователя и существуют как часть реализации "программной шины".

    Обычно скрытыми являются следующие элементы взаимодействия [18].

  • Местоположение объекта. Клиент не знает, где располагается целевой объект — в отдельном процессе в другом компьютере сети или в другом процессе того же самого компьютера сети.
  • Реализация объекта. Клиент не знает, каким образом реализован объект, какой язык программирования или язык сценариев использован для реализации, какая операционная система или какое оборудование работает в объекте.
  • Состояние объекта. При передаче запроса к целевому объекту клиент не должен знать, активизирован ли объект (то есть запущен ли соответствующий процесс) и готов ли он принять запрос. В случае необходимости, перед тем как передать к объекту запрос услуги, компонент ORB невидимо для клиента запускает процесс на объекте.
  • Механизм связи с объектом. Клиенту неизвестен механизм (например, протокол, разделяемая память, вызов локального метода и т. д.).
  • Эти особенности ORB дают возможность разработчикам приложений сконцентрировать внимание на приложениях и не беспокоиться о проблемах распределенного системного программирования нижнего уровня.

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

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

    Этот подход отражен во многих статьях и книгах. Для начального изучения можно рекомендовать [7, 12, 13, 40, 44, 45].

    (рис 4.1) Фрагмент архитектуры CORBA

    Табличный метод, или метод универсальной программы

    Его характерные особенности:

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

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

    Согласно концепции объекта он имеет атрибуты, необходимые для работы с этим объектом. Например, это могут быть:

  • Тип комплекта. Этот атрибут в нашем примере позволяет определить перечень программ обработки абонентского вызова.
  • Номер комплекта. На станции может быть сотни тысяч комплектов одного типа. Номер позволяет определить, с каким из них надо работать.
  • Состояние комплекта. Это атрибут указывает, на каком этапе находится работа, осуществляемая внешним окружением с этим комплектом (комплект свободен, занят, заблокирован и т. д.) Значение этого атрибута, в отличие от рассмотренных выше атрибутов, меняется в процессе работы.
  • Каждый из этих атрибутов может быть пронумерован и представлен, как параметр функции, называемый абонентским комплектом — fАК (x1, x2, x3,…… xn).

    Аналогичные атрибуты имеют и другие комплекты. Например, рассмотреvнный в примере установления соединения в полностью децентрализованной системе (лекция 2, раздел 2.7) приемник много частотного набора (МЧПП) имеет те же атрибуты, что и абонентский комплект:

  • Тип комплекта
  • Номер комплекта
  • Состояние комплекта
  • Однако он имеет несколько своих характерных атрибутов, например:

  • Номер принятой цифры (возможные значения 1, 2, 3, …)
  • Значение 1-й цифры
  • Значение 2-й цифры
  • и т. д.
  • Эти атрибуты также участвуют в обработке вызова.

    Динамический объект — соединение

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

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

    Приведем пример. Он уже был подробно рассмотрен в разделе "Установление соединения в полностью децентрализованных системах коммутации" (лекция 2, рис. 2.18). Ниже (рис. 4.2) приводим сокращенный вариант для иллюстрации понятия виртуального объекта "соединение". В этом примере абонентский комплект ( АК1 ) соединяется с модулем многочастотного передатчика (МЧПП) для передачи набора номера. Согласно рассмотренному ранее алгоритму абонент набирает номер входящего абонента, после чего другая часть многочастотного приемопередатчика (МЧПП) набора номера подсоединяется к модулю абонентских аналоговых линий входящего абонента (абонентскому комплекту АК2 ) для определения его состояния. После этих действий на станции появляется новый объект "соединение", который отображается с помощью адресов связки. Для этого к атрибутам реального объекта добавляется атрибут номер адреса связки — NСВ. Его значение указывает номера типа и номер комплекта, соединенного с данным. Тогда функция, отражающая, например, объект АК1 как функцию с помощью его атрибутов (параметров), имеет вид

    fАК1=f(Nтип, NАК1,NСВ),

    где

    Nтип — номер типа комплекта, в данном случае тип АК (обычно этому типу присваивается номер 1);

    NАК1 — номер комплекта среди своего типа АК (например, от 100 до 10000 в зависимости от емкости станции);

    NМЧПП — номер комплекта среди своего типа МЧПП (например, от 100 до 10000 в зависимости от емкости станции);

    NСВ — номер связи (значения определяются типом и номером в типе комплектов, участвующих в соединении).

    Аналогично отображается рассматриваемый в примере объект МЧПП

    fМЧПП = f(Nтип, NМЧПП , NСВ,, N1, …, NK).

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

    Отличие только в номере типа, который должен принимать значение, закрепленное за этим типом комплекта, и в дополнительных параметрах характеристики набранного номера, о которых сказано выше, обозначенных N1, N2..., Nk.

    Заметим, что объект "соединение" является динамическим. Он изменяется в процессе установления соединения. В процессах, обеспечивающих передачу данных, он не обязательно имеет аналог соединения реального оборудования. Он может отображать параметры виртуального пути или канала. Функционально объект "соединение" может быть отображен двумя способами децентрализованным (рис. 4.2б), централизованным (рис. 4.2в).

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

    При централизованном способе создается новое виртуальное устройство — "процесс", в котором записывают в переменные адреса связи – номера и тип участников соединения

    Объект "соединение" может также иметь свои атрибуты (например, категорию соединения), которые здесь не указаны.

    Серверы

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

    Для дальнейшего изучения уточним применяемые термины.

    Универсальная программа

    Это один из основных результатов теории вычислимости, излагаемый метод является ее первым приложением, помимо математики. Не вдаваясь в математические подробности, приводим цитату [12, 33]:

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

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

    Автоматный подход и табличные функции

    Автоматный подход позволяет упорядочить работу по конкретной последовательности вызову серверов по запросу объекта. Кроме того, надо заметить, что согласно рекомендациям [67] предложен язык спецификаций и описаний 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), x3(t),….. ,sn(t)] — внутренние состояния автомата,

    Z(t) = [z1(t), z2(t), z3(t),….. ,zk(t)] —значения сигналов на выходе состояния.

    Следуя этому уравнению, алгоритм можно представить как последовательное вычисление рекурсивной функции, которая сопоставляет совокупности входного сигнала, текущего состояния и нового состояния. Эта смена состояний называется переходом. Пара "вход-состояние" уникальна, т. е. нигде в алгоритме она не применяется для перехода в другое состояние. Переход из одного состояния в другое сопровождается выполнением действий при переходе. Эти действия указаны в рекомендациях МККТТ Z.100-104 [лекции 3.

    Согласно рекомендациям МККТТ, для изображения алгоритмов применяются следующие обозначения (рис. 4.3).

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

  • За символом СОСТОЯНИЕ может следовать один только символ или несколько символов ВХОД.
  • Каждому символу ВХОД должен предшествовать один символ СОСТОЯНИЕ (пара СОСТОЯНИЕ-ВХОД уникальна, т. е. должна соответствовать только переходу в одноименное СЛЕДУЮЩЕЕ СОСТОЯНИЕ ).
  • За символом ВХОД должен следовать один и только один символ, который не может быть символом ВХОД.
  • За символом ЗАДАЧА или ВЫХОД должен следовать один и только один символ, который не может быть символом ВХОД.
  • За символом УСЛОВИЕ должны следовать два или более символа, которые не могут быть символами ВХОД.
  • Заметим, что нет никаких ограничений на число следующих повторно операций ПЕРЕХОДА (ЗАДАЧА, УСЛОВИЕ, ВЫХОД), ни на порядок их следования. Указанные выше ограничения позволяют иметь еще одно отображение алгоритма, записанного в SDL в виде таблицы соответствий (таблица 4.1 )В некоторых случаях применяется таблица переходов [44, 45], которая имеет другой вид, но эквивалентна рассматриваемой здесь таблице соответствия., которая сопоставляет каждой паре ВХОД-СОСТОЯНИЕ набор действий при переходе.

    (рис 4.3) Запись перехода на языке SDL
    Таблица соответствий, отображающая оператор переход
    Наименование операторов S(t) X(t) TASK Q(t) Z(t) S(t+1)
    Текущие значения операторов s(t) x(t) Taks(t) 0 z(t) s(t+1)
    1 s(t) s(t+1)

    В таблице 4.1 в верхней строке большими буквами записаны наименования операторов языка SDL, во второй строке — их текущие значения.

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

    s(t) — указывает номер состояния, в котором находится процесс. Например, таблица 4.2 показывает пример нумерации оператора СОСТОЯНИЕ.

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

    Нумерацмя оператора СОСТОЯНИЕ
    Наименование состоянияЧисловое значение
    Свободно 1
    Ожидание первой цифры 2
    Ожидание отбоя абонента 3

    x(t) — указывает номер входного сигнала, который инициирует переход. Например, таблица 4.3 показывает пример нумерации оператора ВХОД.

    Нумерация оператора ВХОД
    Наименование входаЧисловое значение
    Абонент снял трубку 1
    Абонент положил трубку 2

    Оператор ВХОД до поступления его в основной алгоритм обработки выполняется модулем (объектом) "сканирование".

    Q (t) — указывает номер УСЛОВИЯ. Для нумерации условия применяют индексы при буквенном обозначении Q. Таблица 4.5 показывает пример нумерации УСЛОВИЙ (в таблице отображено одно УСЛОВИЕ ).

    Нумерация оператора УСЛОВИЕ
    Наименование условияЧисловое значение
    Свободный МЧПП найден Q1 ДА-0

    НЕТ-1

    z(t) — указывает номер выходного сигнала, в окружающие устройства или алгоритмы. task(t) — указывает номер ЗАДАЧИ.

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

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

    Таблица 4.6 показывает пример нумерации ВЫХОДОВ. В этой таблице предполагается, что при нумерации объекту "Акустическое соединение" сопоставлен номер 3 (первая часть номера ВЫХОДА ) и он может сформировать две последовательности команд (вторая часть номера ВЫХОДА ) — "включить" или "выключить". Эти действия отражены соответственно номерами 1 и 2 во второй части номера.

    Номер сигнала ВЫХОД с именем "включить таймер 20 сек" предполагает, что таймер — это объект с номером 4 (первая часть номера), а действие "включить 20 сек" имеет номер 1.

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

    Нумерация оператора ВЫХОДОВ
    Наименование состоянияЧисловое значение
    Включить акустический сигнал "занято" 3.1
    Отключить акустический сигнал "занято" 3.2
    Включить акустический сигнал "ответ станции" 3.3
    Включить таймер 4.1

    Оператор ЗАДАЧА также выполняется модулями, которые, как и ВЫХОДЫ, имеют свои интерфейсы. Принцип назначения номеров тот же, что и для ВЫХОДОВ.

    Например, при выполнении ЗАДАЧИ с именем "найти свободный приемник" надо указать, что он предназначен модулю поиска промежуточных путей (он также проводит поиск свободных приборов), и номер действия внутри этого модуля.

    Таблица 4.7 показывает пример нумерации ЗАДАЧА. В данном случае назначенный номер 2.1 показывает, что модуль (объект) "поиск промежуточных путей" имеет номер 2 (первая часть номера оператора), а действие "найти свободный МЧПП" (Многочастотный Приемник Набора Номера) имеет номер 1.

    Нумерация оператора ЗАДАЧА
    Наименование состоянияЧисловое значение
    Найти свободный МЧПП 2.1

    Заметим, что при передаче сообщения объекту номер оператора сопровождается необходимой информацией, которая рассматривалась при описании отдельных алгоритмов. Эти данные указаны на рисунках (рис. 3.2, 3.5, 3.8, 3.11, 3.17, 3.23) в виде некоторых входов.

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

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

    Рассмотрим пример табличного отображения алгоритма. На рис. 4.4 приведен простой алгоритм, выполненный автоматным подходом и написанный с помощью языка SDL.

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

    Таблица соответствия согласно алгоритму по рис.4.4.
    № строки S(t) x(t) TASK1(t) Q1 TASK2(t) TASK3(t) S(t+1)
    1 1 1 2.1 1 3.3 4.1 2
    2 0 3.1 3
    3 2 3.2 1

    Попробуем описать работу алгоритма по таблице 4.8.

    Первая строка. В состоянии S(t)=1 (свободно) поступает входной сигнал x=1 (абонент снял трубку). Эта пара ВХОД-ВХОД-СОСТОЯНИЕ вызывает ПЕРЕХОД, который включает в себя следующие действия.

    Задача – Task2(t) = 2.1. Найти свободный МЧПП.

    Предположим, что получено значение Q1=1 — свободный МЧПП найден, тогда продолжаем действия, стоящие в первой строке.

    Включаем заявку на передачу команд устройством подключения акустических сигналов task2=3.3.

    (рис 4.4) Фрагмент алгоритма для построения таблицы 4.8.

    Передаем сигнал на включение таймера, равного 20 с, для ожидания набора номера ( task3=4.1 ).

    Завершаем переход установкой состояния s(t)=2.

    Вторая строка. Если после проверки условия Q1=0 — свободный МЧПП не найден, то проводятся следующие действия:

    Task2=3.1 (включается акустический сигнал "занято").

    Task3 не выполняется, поскольку в ней поставлен прочерк ( - ).

    В конце выполнения строки устанавливается состояние s(t)=3.

    Третья (последняя) строка начинается с состояния s(t)=3.

    При поступлении входного сигнала x(t)=2 ("абонент положил трубку") выполняется переход, содержащий следующие действия (напоминаем: действия, обозначенные прочерком, не выполняются, и следует перейти к обработке следующего столбца этой строки):

    Task 3=3.2 ("отключить акустический сигнал").

    Устанавливается состояние s(t)=1 (свободно).

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

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

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

    Например, для строки таблицы 4.8может быть представлен следующий текст:

    " Если система находится в состоянии…….. и поступил сигнал……, то выполняется, ……проверяется условие…. Если в результате проверки….., то ………акустический….. таймер……. И система переходит в состояние…."

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

    Алгоритмы работы с таблицей

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

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

  • По заданной паре ВХОД-СОСТОЯНИЕ найти нужную строку таблицы соответствия.
  • Выполнить действия в том порядке, который указан в строке, и в соответствии с содержанием установленного в ней номера.
  • Эти алгоритмы достаточно просты и далее не приводятся. Можно только отметить, что стремление оптимизации объема таблиц и их записи в памяти могут усложнить эти алгоритмы.

    Многозадачность

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

    Состояние "свободно" присваивается, если область не занята вызовом.

    Состояние "работа" — при выполнении процесса.

    Состояние "ожидание" отмечает ожидание поступления внешнего сигнала.

    (рис 4.5) Последовательность значений глобальных состояний вызова

    Состояние "блокировка" отмечает аварийные процессы.

    Система работает, изменяя состояния в порядке, показанном на рис. 4.5.

  • Фаза ввода. На этом этапе проводится опрос внешних объектов (см. алгоритм сканирования). При поступлении сигнал ВХОД из внешней среды или другой сигнал записываются в специальные зоны памяти, называемые областями памяти процессов, в которую записывается этот сигналПод сигналом, согласно определению МККТ (Рекомендации Z.100), понимается поток данных, несущих информацию процессу. Например, сигналы "абонент снял трубку", "абонент положил трубку", сигналы управления, поступающие с других станций, и т. п.. В этой фазе глобальное состояние "свободно" (точнее, отсутствие записи в области "состояние") заменяется глобальным состоянием "ожидание" и переводится в очередь на выполнение.
  • Фаза выполнения. При обращении к очереди областей памяти процессов, ожидающих обслуживания, процессор выбирает одну из них. Затем области памяти процесса присваивается глобальное состояние "работа" Обработка входного сигнала, как уже было рассмотрено ранее, заключается в выполнении перехода в соответствии со значением поступившего входного сигнала и локального состояния вызова, этапом обработки вызова. Здесь имеются в виду локальные состояния, например "набор номера", "ожидание отбоя".
  • По этой паре выполняется обработка строки табличным алгоритмом с присвоением ему в конце работы локального состояния. После чего действие приостанавливается в ожидании нового входного сигнала.

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

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

    Согласно рассмотренному порядку, действия по обработке вызова можно представить в виде работы с тремя очередями (рис. 4.6).

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

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

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

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

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

    (рис 4.6) Порядок многозадачной обработки процессов и взаимодействие очередей

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

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

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

    Основные операции работы с очередью

    Для установки в очередь, снятия, перевода в другую очередь используются стандартные процедуры работы со списком [3]. При этом можно применять операции со списками или с особым видом списка — очередью. Очередь — это список, в котором элементы добавляются с одного (конец очереди), а удаляются с другого конца (начало очереди), что несколько упрощает алгоритмы работы с ними.

    Для работы со списками применяют следующие операции:

  • ВСТАВИТЬ В СПИСОК,
  • УДАЛИТЬ ИЗ СПИСКА,
  • ПЕРЕВЕСТИ ИЗ СПИСКА….. В СПИСОК …,
  • НАЙТИ.....
  • Для установки в список используется процедура ВСТАВИТЬ В СПИСОК, показанная на рис. 4.7.

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

    На рис. 4.7б показан новый список со вставленным четвертым элементом. По исходным данным, содержащим адрес предыдущего элемента (элемент 3) и номер нового (элемент 4), понадобилось два действия:

  • изменить поле ("адрес") предыдущего в очереди элемента (это элемент 2);
  • в новом элементе (элемент 4) присвоить ячейке "адрес" число — адрес ссылки предыдущего элемента. Он равен адресу элемента, который теперь будет следовать за новым элементом (ссылка на элемент с адресом 3).
  • (рис 4.7) Принцип установки в список а) Исходный список; б) Список, после проведения операции "вставить"

    Операция УДАЛИТЬ состоит в присвоении адресу ссылки предыдущего элемента адреса ссылки удаляемого элемента. Пример операции УДАЛИТЬ — элемент 2 из очереди, показанной на рис. 4.8. Этот процесс приведен на рис. 4.7. В примере адрес ссылки удаляемого элемента 2 присвоен адресу ссылки элемента 1, стоящему перед ним.

    Перенос вызова из одного списка в другой содержит в себе обе операции ( УДАЛИТЬ — ВСТАВИТЬ ).

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

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

    (рис 4.8) Принцип удаления из списка

    Для удобства работы с очередью вводится два указателя:

    НАЧАЛО ОЧЕРЕДИ
    КОНЕЦ ОЧЕРЕДИ

    Для того чтобы ВСТАВИТЬ новый элемент в очередь, надо увеличить указатель КОНЕЦ СПИСКА на 1 ( КОНЕЦ ОЧЕРЕДИ:= КОНЕЦ ОЧЕРЕДИ+1 ) и его ВСТАВИТЬ В СПИСОК с полученным значением КОНЕЦ ОЧЕРЕДИ. Тогда новый элемент будет вставлен в конец очереди с очередным номером.

    Для того чтобы УДАЛИТЬ ЭЛЕМЕНТ (взять его в обработку), надо увеличить указатель НАЧАЛО ОЧЕРЕДИ на 1 ( НАЧАЛО ОЧЕРЕДИ:= НАЧАЛО ОЧЕРЕДИ +1 ). Тогда, следующий элемент станет первым (продвинется в начало очереди).

    Разность между номерами КОНЕЦ ОЧЕРЕДИ и НАЧАЛО ОЧЕРЕДИ показывает ДЛИНУ ОЧЕРЕДИ.

    Поскольку увеличение номеров не должно быть бесконечным, то для списка длины l принято считать, что элемент, следующий за элементом с номером (l —1), имеет номер 0.

    Операционная система и распределение ресурсов управляющего устройства

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

    При распределении времени работы компьютера предусматриваются следующие уровни (чем меньше номер уровня, тем выше приоритет при прерывании):

  • 1-й (верхний уровень) — ручное вмешательство, которое защищено паролем обслуживающего персонала, имеющего соответствующее право на прерывания;
  • 2-й уровень — контрольные функции и функции восстановления работоспособности;
  • 3-й уровень — функции, вызываемые периодически по сигналу таймера;
  • 4-й уровень — станционные процедуры и процессы.
  • Наиболее массовыми функциями являются периодические задачи и задачи по обработке вызова. Диаграмма выполнения этих функций показана на рис. 4.9.

    Как видно из рисунка, задачи выполнения основных алгоритмов решаются во время, оставшееся от периодически выполняемых задач, которые в телекоммуникационных станциях имеют сравнительно малый период. Например, программа сканирования активизируется через каждые 10 мс (см. лекцию 3 "Алгоритм сканирования").

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

    (рис 4.9) Диаграмма распределения времени между обычными и периодическими задачами; T — минимальный период выполнения задач

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

    Пример структурной схемы программного обеспечения станции (базовые задачи) показан на рис. 4.10.

    (рис 4.10) Пример структурной схемы программного обеспечения

    Теоретические положения

    Чтобы понять идеологию последовательности разработки и исследования предложенного выше программного обеспечения, приведем несколько положений из теории алгоритмов. Понятие "алгоритм" не имеет строгого математического определения, поэтому является исходным понятием, определяемым неформально. Существует ряд неформальных, но общепринятых определений алгоритма [37, 43, 48, 53].

    Основное из них таково.

    Алгоритм характеризуется следующими свойствами:

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

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

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

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

    Тогда любая алгоритмическая проблема может быть сведена к задаче определения некоторого заданного числа y по заданной системе целочисленных параметров:

    x1, x2,…., xn.

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

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

    Рекурсивная функция имеет четкое определение, приведенное ранее, и достаточно исследована в математике [33, 43, 53] .

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

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

    Для рекурсивных функций уже известны следующие типы [53]:

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

    Краткие итоги

  • Все функции управляющих устройств, реализованные в аппаратных средствах, могут быть реализованы программами.
  • Основные признаки программного обеспечения коммутационной станции: имеет большой объем, работает в реальном масштабе времени, массовое, отчуждаемое, простое в обслуживании.
  • Современное программное обеспечение разрабатывается с помощью объектно-ориентированных систем программирования.
  • Основу объектно-ориентированного подхода составляют следующие понятия: объект, атрибут, сообщение (метод), интерфейс объекта, контракт.
  • Для построения программного обеспечения, его разработки и эксплуатации во многих приложениях применяется CORBA (Common Object Request Broker Architecture) — Общая архитектура с передачей запросов к объекту через посредника.
  • Согласно современной классификации указанная архитектура принадлежит к классу архитектуры "клиент-сервер". Основной особенностью архитектуры CORBA является наличие программной шины ORB (Object Request Broker). ORB "отвечает" за распределение запросов клиента по соответствующими серверам.
  • Табличный метод, или метод универсальной программы является одним из методов объектно-ориентированного подхода к программированию.
  • Объекты могут быть виртуальными (воображаемыми), которые не существуют реально, но описаны логически и отображаются только в памяти. Одним из таких важных объектов является соединение.
  • Соединение представляет динамический объект, состав которого может изменяться в процессе обработки и может быть отображен функцией.
  • Функционально объект "соединение" может быть отображен двумя способами: децентрализованным / централизованным.
  • Универсальные программы — это программы, которые в некотором смысле реализуют все программы. Она должна уметь кодировать и декодировать номера всех программ, которые могут быть записаны и допустимы на заданном языке программирования.
  • Для разработки универсальной программы используется модель конечного автомата. В модели конечного автомата любой алгоритм отражается рекурсивной функцией, которая, в свою очередь, отображается таблицей соответствий. Для этого вводится соответствующая нумерация, отображающая возможные значения операторов.
  • Использование таблицы предполагает наличие программной поддержки для минимизации таблиц, минимизации их хранения в памяти, поиска и коррекции.
  • Таблица дает возможность разработать программную шину или универсальную программу в указанном математикой смысле, т. е. она позволяет кодировать и декодировать номера алгоритмов, которые могут быть записаны и допустимы на языке SDL.
  • Особенностью программного обеспечения устройств телекоммуникаций является необходимость реализации многозадачного режима. Поэтому для обработки вызова применяется понятие глобального состояния и специальный процесс обработки всего потока вызовов.
  • Программное обеспечение станций в сети телекоммуникаций выполняет не только задачи, отражаемые алгоритмами и касающиеся установления соединения и различных задач. Это учитывается при распределении ресурсов управляющего устройства (компьютера), и задачи разбиваются на уровни.
  • Наиболее массовыми функциями являются периодические задачи. Выполнение основных алгоритмов происходит во время, оставшееся от периодически выполняемых задач, которые в телекоммуникационных станциях имеют сравнительно малый период.
  • "Алгоритм" не имеет строгой математической формулировки, поэтому является исходным понятием, определяемым неформально. Алгоритм характеризуется следующими свойствами: дискретность, детерминированность, элементарность шагов, направленность алгоритма, массовость.
  • Если алгоритм составлен в соответствии с этими неформальными правилами, то возможно сделать следующий шаг обработки. Входящие в него понятия могут быть перенумерованы, т. е. каждому из них по определенному правилу может быть присвоено число. Это приводит задачу разработки алгоритма к отысканию соответствующей рекурсивной функции.
  • Вернуться к учебному плану