Основные свойства этого программного обеспечения присущи сегодня многим системам, применяющим программное обеспечение, и не являются уникальными. Просто перечислим их для того, чтобы понять решаемые проблемы.
Программное обеспечение станций, работающих в сети телекоммуникаций, имеет следующие характерные свойства.
Это означает, что:
Кроме того, для таких программ характерен промышленный подход, основными признаками которого являются:
Эти понятия подразумевают возможность установки, дополнения, коррекции и замены компонентов и в целом программного обеспечения без привлечения его создателей;
Эта задача подразумевает наличие средств контроля действий программного обеспечения и окружающей среды. Она также касается создания дружественного интерфейса.
Повторяем, что эти свойства характерны не только для задач телекоммуникации, но принадлежат системам, использующим "промышленное программное обеспечение".
В задачу этого раздела не входит рассмотрение или тем более критика различных систем программирования. Как заметил один из создателей теоретического подхода к программированию Э. Дейкстра [25]: "Растет Вавилонская башня языков, и каждый последующий претендует на роль ее венца". В задачу этого раздела также не входит оценка тех или иных программных решений. Сегодня ясно одно, что "нет лучше того языка, который знаешь".
Предлагаемый в этом разделе подход был создан для разработки отечественных систем телекоммуникаций с программным управлением. Он отображен в книгах и многих статьях (например, [9, 13, 44, 45]). Это подход был развит в 1970-х годах, и в настоящее он может быть отнесен к классу объектно-ориентированных систем программирования.
Не претендуя на обзор систем, принадлежащих классу объектноориентированных, приведем основные определения объектно-ориентированного подхода. Заметим, что потом он не раз встретится в этом курсе, например при рассмотрении вопросов эксплуатации и управления сетями связи [29, 52].
После рассмотрения общих вопросов перейдем к отечественному методу.
Основу этого подхода составляют следующие понятия.
описание (signature) и реализация (implementation). Описание состоит из имени метода, имен и типов параметров (в том числе возвращаемое значение) и исключения (exceptions).описания и необходимых предусловий (Preconditions), инвариантов (invariants) и постусловий (post-conditions). Инварианты — предусловия — условия, правильность которых должна быть обеспечена перед вызовом метода. Постусловия — условия, правильность которых проверяется после вызова метода и подтверждает правильность выполнения контракта.Для построения программного обеспечения, его разработки и эксплуатации во многих приложениях применяется CORBA (Common
Часть архитектуры CORBA, необходимая для дальнейшего рассмотрения, показана на рис. 4.1.
Согласно современной классификации указанная архитектура принадлежит классу архитектуры "клиент-сервер". Как можно видеть на рис. 4.1, имеется два типа сетевых устройств:
Работа осуществляется сервером по запросу клиента на услугу.
Основной особенностью архитектуры CORBA является наличие программной шины
Обычно скрытыми являются следующие элементы взаимодействия [18].
Эти особенности
Такой подход упрощает модернизацию, поиск сбоев и отклонений от нормального функционирования и другие действия при эксплуатации станции.
Рассмотрим еще один метод, который соответствует изложенным свойствам объектно-ориентированного подхода и распределенных систем программирования. Он использовался при создании отечественных систем коммутации.
Этот подход отражен во многих статьях и книгах. Для начального изучения можно рекомендовать [7, 12, 13, 40, 44, 45].
(рис 4.1) Фрагмент архитектуры CORBA
Его характерные особенности:
Объектами, над которыми проводятся действия, являются комплекты станции,
Согласно концепции объекта он имеет атрибуты, необходимые для работы с этим объектом. Например, это могут быть:
Каждый из этих атрибутов может быть пронумерован и представлен, как параметр функции, называемый абонентским комплектом — fАК (x1, x2, x3,…… xn).
Аналогичные атрибуты имеют и другие комплекты. Например, рассмотреvнный в примере установления соединения в полностью децентрализованной системе (лекция 2, раздел 2.7) приемник много частотного набора (МЧПП) имеет те же атрибуты, что и абонентский комплект:
Однако он имеет несколько своих характерных атрибутов, например:
Эти атрибуты также участвуют в обработке вызова.
Объекты могут быть виртуальными (воображаемыми), которые не существуют реально, но описаны логически и отображаются только в памяти. Одним из таких важных объектов является соединение.
Для многих систем соединение существует в реальном оборудовании, отображая временную совокупность приборов, реализующих физическое соединение двух оконечных терминалов.
Приведем пример. Он уже был подробно рассмотрен в разделе "Установление соединения в полностью децентрализованных системах коммутации" (лекция 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] предложен
С помощью модели конечного автомата любой алгоритм отображается с помощтью сиситемы рекурсивных
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
(рис 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.
| № строки | 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.
ВХОД из внешней среды или другой сигнал записываются в специальные зоны памяти, называемые областями памяти процессов, в которую записывается этот По этой паре выполняется обработка строки табличным алгоритмом с присвоением ему в конце работы локального состояния. После чего действие приостанавливается в ожидании нового входного сигнала.
При успешном выполнении этих действий вызову присваивается снова состояние "ожидание" (на рис. 4.5 возможность возврата указывается двухсторонней стрелкой), и он возвращается в очередь ожидающих процессов. Если этот переход был завершающим для процесса (например, "разъединение"), то область памяти освобождается и ей присваивается значение "свободно".
При аварийном завершении, например если поступил сигнал превышения времени выполнения перехода или другой аварийный таймер, процесс переводится в состояние "блокировка". При восстановлении системы область памяти процесса, как правило, освобождается и ей присваивается состояние "свободно".
Согласно рассмотренному порядку, действия по обработке вызова можно представить в виде работы с тремя очередями (рис. 4.6).
На этом рисунке условно показаны порядок обработки областей памяти, организованных в виде очередей.
Очередь свободных процессов — это резерв всех свободных областей памяти, которые могут быть использованы для "порождаемых" процессов. Остальные соответствуют определениям фаз.
Очередь процессов, ожидающих сигнала, — области памяти, которые выполнили действия, установили следующее состояния и ожидают введения нового сигнала ВХОД.
Очередь процессов, ожидающих обработки, — это области памяти, в которые записан входной сигнал, и они ожидают процедуры обработки строки табличного алгоритма.
Порядок обработки вызова следующий. При поступлении входного сигнала диспетчер ввода, в качестве которого выступает программа сканирования, распределяет его в одну из двух очередей.
(рис 4.6) Порядок многозадачной обработки процессов и взаимодействие очередейЕсли это первичный сигнал, то занимается одна из областей памяти процессов в очереди свободных процессов, устанавливается вместо состояния "свободно" состояние "ожидание" и процесс переводится в очередь процессов, ожидающих обработки.
Если этот процесс уже существует, что определяется заявкой на сканирование (см. лекцию 3 — "Алгоритмы сканирования"), то после записи поступившего входного сигнала процесс переводится в очередь процессов, ожидающих обработки. В нем записывается состояние "ожидание".
После того как процесс будет выбран из очереди, выполняются программы выбора и обработки одного процесса (записывается состояние "работа"). В случае успешного окончания обработки процесс может быть помещен в очередь ожидающих с установкой заявки на сканирование очередного входного сигнала либо в очередь свободных процессов (при окончании обслуживания).
Для установки в очередь, снятия, перевода в другую очередь используются стандартные процедуры работы со списком [3]. При этом можно применять операции со списками или с особым видом списка — очередью. Очередь — это список, в котором элементы добавляются с одного (конец очереди), а удаляются с другого конца (начало очереди), что несколько упрощает алгоритмы работы с ними.
Для работы со списками применяют следующие операции:
ВСТАВИТЬ В СПИСОК,УДАЛИТЬ ИЗ СПИСКА,ПЕРЕВЕСТИ ИЗ СПИСКА….. В СПИСОК …,НАЙТИ.....Для установки в список используется процедура ВСТАВИТЬ В СПИСОК, показанная на рис. 4.7.
На рис. 4.7а показана реализация списка. Поле "элемент" содержит информацию об объекте, записанном в список. Поле "адрес" позволяет проводить операции с элементами списка. Каждый предыдущий элемент содержит ссылку (адрес) на последующий. Там же показана необходимость вставки четвертого элемента между вторым и третьим. Место указано произвольно, и, как мы увидим, процедура одинакова для всех мест и не зависит от длины списка.
На рис. 4.7б показан новый список со вставленным четвертым элементом. По исходным данным, содержащим адрес предыдущего элемента (элемент 3) и номер нового (элемент 4), понадобилось два действия:
(рис 4.7) Принцип установки в список а) Исходный список; б) Список, после проведения операции "вставить"Операция УДАЛИТЬ состоит в присвоении адресу ссылки предыдущего элемента адреса ссылки удаляемого элемента. Пример операции УДАЛИТЬ — элемент 2 из очереди, показанной на рис. 4.8. Этот процесс приведен на рис. 4.7. В примере адрес ссылки удаляемого элемента 2 присвоен адресу ссылки элемента 1, стоящему перед ним.
Перенос вызова из одного списка в другой содержит в себе обе операции ( УДАЛИТЬ — ВСТАВИТЬ ).
Как уже было сказано, очередь — это специальный вид списка. Работа с очередью характеризуется выбранной дисциплиной обслуживания очереди. Простейшая и массовая дисциплина — "первым вошел — первым вышел".
При этой стратегии элементы списка нумеруются согласно порядку их поступления. Первый поступивший вызов в начале очереди получает номер 1, последний в конце получает номер в соответствии с длиной очереди.
(рис 4.8) Принцип удаления из спискаДля удобства работы с
НАЧАЛО ОЧЕРЕДИ КОНЕЦ ОЧЕРЕДИ
Для того чтобы ВСТАВИТЬ новый элемент в очередь, надо увеличить указатель КОНЕЦ СПИСКА на 1 ( КОНЕЦ ОЧЕРЕДИ:= КОНЕЦ ОЧЕРЕДИ+1 ) и его ВСТАВИТЬ В СПИСОК с полученным значением КОНЕЦ ОЧЕРЕДИ. Тогда новый элемент будет вставлен в конец очереди с очередным номером.
Для того чтобы УДАЛИТЬ ЭЛЕМЕНТ (взять его в обработку), надо увеличить указатель НАЧАЛО ОЧЕРЕДИ на 1 ( НАЧАЛО ОЧЕРЕДИ:= НАЧАЛО ОЧЕРЕДИ +1 ). Тогда, следующий элемент станет первым (продвинется в начало очереди).
Разность между номерами КОНЕЦ ОЧЕРЕДИ и НАЧАЛО ОЧЕРЕДИ показывает ДЛИНУ ОЧЕРЕДИ.
Поскольку увеличение номеров не должно быть бесконечным, то для списка длины l принято считать, что элемент, следующий за элементом с номером (l —1), имеет номер 0.
Операционная система распределяет ресурсы компьютера — время и память, а также регулирует доступ к этим ресурсам. Программное обеспечение станций в сети телекоммуникаций выполняет не только задачи, отражаемые алгоритмами и касающиеся установления соединения и различных задач. Это учитывается при распределении ресурсов управляющего устройства (компьютера) и задачи разбиваются на уровни.
При распределении времени работы компьютера предусматриваются следующие уровни (чем меньше номер уровня, тем выше приоритет при прерывании):
Наиболее массовыми функциями являются периодические задачи и задачи по обработке вызова. Диаграмма выполнения этих функций показана на рис. 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] .
Такие рассуждения указывают подход к формализации разработки алгоритмического и программного обеспечения. Он состоит в следующих шагах:
ВХОДОВ, ВЫХОДОВ и т. д. (заметим, что в математике есть специальный раздел, посвященный нумерации) и таблицу соответствий для записи функции.Этот путь открывает дорогу к использованию типовых функций, как это принято в математике, где линейная функция применяется для описания законов механики (законы Ньютона) и электротехники (закон Ома).
Для рекурсивных функций уже известны следующие типы [53]:
Этот перечень позволяет описать, классифицировать, оптимизировать широкий круг задач, решаемых современными программными средствами. Для тех задач, которые не подпадают под этот перечень, возможно применить табличную запись или построить функции по точкам аналогично тому, как это делается в рядах Фурье.
Основные свойства этого программного обеспечения присущи сегодня многим системам, применяющим программное обеспечение, и не являются уникальными. Просто перечислим их для того, чтобы понять решаемые проблемы.
Программное обеспечение станций, работающих в сети телекоммуникаций, имеет следующие характерные свойства.
Это означает, что:
Кроме того, для таких программ характерен промышленный подход, основными признаками которого являются:
Эти понятия подразумевают возможность установки, дополнения, коррекции и замены компонентов и в целом программного обеспечения без привлечения его создателей;
Эта задача подразумевает наличие средств контроля действий программного обеспечения и окружающей среды. Она также касается создания дружественного интерфейса.
Повторяем, что эти свойства характерны не только для задач телекоммуникации, но принадлежат системам, использующим "промышленное программное обеспечение".
В задачу этого раздела не входит рассмотрение или тем более критика различных систем программирования. Как заметил один из создателей теоретического подхода к программированию Э. Дейкстра [25]: "Растет Вавилонская башня языков, и каждый последующий претендует на роль ее венца". В задачу этого раздела также не входит оценка тех или иных программных решений. Сегодня ясно одно, что "нет лучше того языка, который знаешь".
Предлагаемый в этом разделе подход был создан для разработки отечественных систем телекоммуникаций с программным управлением. Он отображен в книгах и многих статьях (например, [9, 13, 44, 45]). Это подход был развит в 1970-х годах, и в настоящее он может быть отнесен к классу объектно-ориентированных систем программирования.
Не претендуя на обзор систем, принадлежащих классу объектноориентированных, приведем основные определения объектно-ориентированного подхода. Заметим, что потом он не раз встретится в этом курсе, например при рассмотрении вопросов эксплуатации и управления сетями связи [29, 52].
После рассмотрения общих вопросов перейдем к отечественному методу.
Основу этого подхода составляют следующие понятия.
описание (signature) и реализация (implementation). Описание состоит из имени метода, имен и типов параметров (в том числе возвращаемое значение) и исключения (exceptions).описания и необходимых предусловий (Preconditions), инвариантов (invariants) и постусловий (post-conditions). Инварианты — предусловия — условия, правильность которых должна быть обеспечена перед вызовом метода. Постусловия — условия, правильность которых проверяется после вызова метода и подтверждает правильность выполнения контракта.Для построения программного обеспечения, его разработки и эксплуатации во многих приложениях применяется CORBA (Common
Часть архитектуры CORBA, необходимая для дальнейшего рассмотрения, показана на рис. 4.1.
Согласно современной классификации указанная архитектура принадлежит классу архитектуры "клиент-сервер". Как можно видеть на рис. 4.1, имеется два типа сетевых устройств:
Работа осуществляется сервером по запросу клиента на услугу.
Основной особенностью архитектуры CORBA является наличие программной шины
Обычно скрытыми являются следующие элементы взаимодействия [18].
Эти особенности
Такой подход упрощает модернизацию, поиск сбоев и отклонений от нормального функционирования и другие действия при эксплуатации станции.
Рассмотрим еще один метод, который соответствует изложенным свойствам объектно-ориентированного подхода и распределенных систем программирования. Он использовался при создании отечественных систем коммутации.
Этот подход отражен во многих статьях и книгах. Для начального изучения можно рекомендовать [7, 12, 13, 40, 44, 45].
(рис 4.1) Фрагмент архитектуры CORBA
Его характерные особенности:
Объектами, над которыми проводятся действия, являются комплекты станции,
Согласно концепции объекта он имеет атрибуты, необходимые для работы с этим объектом. Например, это могут быть:
Каждый из этих атрибутов может быть пронумерован и представлен, как параметр функции, называемый абонентским комплектом — fАК (x1, x2, x3,…… xn).
Аналогичные атрибуты имеют и другие комплекты. Например, рассмотреvнный в примере установления соединения в полностью децентрализованной системе (лекция 2, раздел 2.7) приемник много частотного набора (МЧПП) имеет те же атрибуты, что и абонентский комплект:
Однако он имеет несколько своих характерных атрибутов, например:
Эти атрибуты также участвуют в обработке вызова.
Объекты могут быть виртуальными (воображаемыми), которые не существуют реально, но описаны логически и отображаются только в памяти. Одним из таких важных объектов является соединение.
Для многих систем соединение существует в реальном оборудовании, отображая временную совокупность приборов, реализующих физическое соединение двух оконечных терминалов.
Приведем пример. Он уже был подробно рассмотрен в разделе "Установление соединения в полностью децентрализованных системах коммутации" (лекция 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] предложен
С помощью модели конечного автомата любой алгоритм отображается с помощтью сиситемы рекурсивных
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
(рис 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.
| № строки | 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.
ВХОД из внешней среды или другой сигнал записываются в специальные зоны памяти, называемые областями памяти процессов, в которую записывается этот По этой паре выполняется обработка строки табличным алгоритмом с присвоением ему в конце работы локального состояния. После чего действие приостанавливается в ожидании нового входного сигнала.
При успешном выполнении этих действий вызову присваивается снова состояние "ожидание" (на рис. 4.5 возможность возврата указывается двухсторонней стрелкой), и он возвращается в очередь ожидающих процессов. Если этот переход был завершающим для процесса (например, "разъединение"), то область памяти освобождается и ей присваивается значение "свободно".
При аварийном завершении, например если поступил сигнал превышения времени выполнения перехода или другой аварийный таймер, процесс переводится в состояние "блокировка". При восстановлении системы область памяти процесса, как правило, освобождается и ей присваивается состояние "свободно".
Согласно рассмотренному порядку, действия по обработке вызова можно представить в виде работы с тремя очередями (рис. 4.6).
На этом рисунке условно показаны порядок обработки областей памяти, организованных в виде очередей.
Очередь свободных процессов — это резерв всех свободных областей памяти, которые могут быть использованы для "порождаемых" процессов. Остальные соответствуют определениям фаз.
Очередь процессов, ожидающих сигнала, — области памяти, которые выполнили действия, установили следующее состояния и ожидают введения нового сигнала ВХОД.
Очередь процессов, ожидающих обработки, — это области памяти, в которые записан входной сигнал, и они ожидают процедуры обработки строки табличного алгоритма.
Порядок обработки вызова следующий. При поступлении входного сигнала диспетчер ввода, в качестве которого выступает программа сканирования, распределяет его в одну из двух очередей.
(рис 4.6) Порядок многозадачной обработки процессов и взаимодействие очередейЕсли это первичный сигнал, то занимается одна из областей памяти процессов в очереди свободных процессов, устанавливается вместо состояния "свободно" состояние "ожидание" и процесс переводится в очередь процессов, ожидающих обработки.
Если этот процесс уже существует, что определяется заявкой на сканирование (см. лекцию 3 — "Алгоритмы сканирования"), то после записи поступившего входного сигнала процесс переводится в очередь процессов, ожидающих обработки. В нем записывается состояние "ожидание".
После того как процесс будет выбран из очереди, выполняются программы выбора и обработки одного процесса (записывается состояние "работа"). В случае успешного окончания обработки процесс может быть помещен в очередь ожидающих с установкой заявки на сканирование очередного входного сигнала либо в очередь свободных процессов (при окончании обслуживания).
Для установки в очередь, снятия, перевода в другую очередь используются стандартные процедуры работы со списком [3]. При этом можно применять операции со списками или с особым видом списка — очередью. Очередь — это список, в котором элементы добавляются с одного (конец очереди), а удаляются с другого конца (начало очереди), что несколько упрощает алгоритмы работы с ними.
Для работы со списками применяют следующие операции:
ВСТАВИТЬ В СПИСОК,УДАЛИТЬ ИЗ СПИСКА,ПЕРЕВЕСТИ ИЗ СПИСКА….. В СПИСОК …,НАЙТИ.....Для установки в список используется процедура ВСТАВИТЬ В СПИСОК, показанная на рис. 4.7.
На рис. 4.7а показана реализация списка. Поле "элемент" содержит информацию об объекте, записанном в список. Поле "адрес" позволяет проводить операции с элементами списка. Каждый предыдущий элемент содержит ссылку (адрес) на последующий. Там же показана необходимость вставки четвертого элемента между вторым и третьим. Место указано произвольно, и, как мы увидим, процедура одинакова для всех мест и не зависит от длины списка.
На рис. 4.7б показан новый список со вставленным четвертым элементом. По исходным данным, содержащим адрес предыдущего элемента (элемент 3) и номер нового (элемент 4), понадобилось два действия:
(рис 4.7) Принцип установки в список а) Исходный список; б) Список, после проведения операции "вставить"Операция УДАЛИТЬ состоит в присвоении адресу ссылки предыдущего элемента адреса ссылки удаляемого элемента. Пример операции УДАЛИТЬ — элемент 2 из очереди, показанной на рис. 4.8. Этот процесс приведен на рис. 4.7. В примере адрес ссылки удаляемого элемента 2 присвоен адресу ссылки элемента 1, стоящему перед ним.
Перенос вызова из одного списка в другой содержит в себе обе операции ( УДАЛИТЬ — ВСТАВИТЬ ).
Как уже было сказано, очередь — это специальный вид списка. Работа с очередью характеризуется выбранной дисциплиной обслуживания очереди. Простейшая и массовая дисциплина — "первым вошел — первым вышел".
При этой стратегии элементы списка нумеруются согласно порядку их поступления. Первый поступивший вызов в начале очереди получает номер 1, последний в конце получает номер в соответствии с длиной очереди.
(рис 4.8) Принцип удаления из спискаДля удобства работы с
НАЧАЛО ОЧЕРЕДИ КОНЕЦ ОЧЕРЕДИ
Для того чтобы ВСТАВИТЬ новый элемент в очередь, надо увеличить указатель КОНЕЦ СПИСКА на 1 ( КОНЕЦ ОЧЕРЕДИ:= КОНЕЦ ОЧЕРЕДИ+1 ) и его ВСТАВИТЬ В СПИСОК с полученным значением КОНЕЦ ОЧЕРЕДИ. Тогда новый элемент будет вставлен в конец очереди с очередным номером.
Для того чтобы УДАЛИТЬ ЭЛЕМЕНТ (взять его в обработку), надо увеличить указатель НАЧАЛО ОЧЕРЕДИ на 1 ( НАЧАЛО ОЧЕРЕДИ:= НАЧАЛО ОЧЕРЕДИ +1 ). Тогда, следующий элемент станет первым (продвинется в начало очереди).
Разность между номерами КОНЕЦ ОЧЕРЕДИ и НАЧАЛО ОЧЕРЕДИ показывает ДЛИНУ ОЧЕРЕДИ.
Поскольку увеличение номеров не должно быть бесконечным, то для списка длины l принято считать, что элемент, следующий за элементом с номером (l —1), имеет номер 0.
Операционная система распределяет ресурсы компьютера — время и память, а также регулирует доступ к этим ресурсам. Программное обеспечение станций в сети телекоммуникаций выполняет не только задачи, отражаемые алгоритмами и касающиеся установления соединения и различных задач. Это учитывается при распределении ресурсов управляющего устройства (компьютера) и задачи разбиваются на уровни.
При распределении времени работы компьютера предусматриваются следующие уровни (чем меньше номер уровня, тем выше приоритет при прерывании):
Наиболее массовыми функциями являются периодические задачи и задачи по обработке вызова. Диаграмма выполнения этих функций показана на рис. 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] .
Такие рассуждения указывают подход к формализации разработки алгоритмического и программного обеспечения. Он состоит в следующих шагах:
ВХОДОВ, ВЫХОДОВ и т. д. (заметим, что в математике есть специальный раздел, посвященный нумерации) и таблицу соответствий для записи функции.Этот путь открывает дорогу к использованию типовых функций, как это принято в математике, где линейная функция применяется для описания законов механики (законы Ньютона) и электротехники (закон Ома).
Для рекурсивных функций уже известны следующие типы [53]:
Этот перечень позволяет описать, классифицировать, оптимизировать широкий круг задач, решаемых современными программными средствами. Для тех задач, которые не подпадают под этот перечень, возможно применить табличную запись или построить функции по точкам аналогично тому, как это делается в рядах Фурье.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.