Опубликован: 31.07.2008 | Уровень: специалист | Доступ: платный
Лекция 4:

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

< Лекция 3 || Лекция 4: 12345 || Лекция 5 >
Алгоритмы работы с таблицей

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для установки в очередь, снятия, перевода в другую очередь используются стандартные процедуры работы со списком [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.

< Лекция 3 || Лекция 4: 12345 || Лекция 5 >
Гульсим Калакова
Гульсим Калакова
Олег Сергеев
Олег Сергеев
Орхан Джафарзаде
Орхан Джафарзаде
Азербайджан, Баку
Айгуль Садриева
Айгуль Садриева
Россия, г. Казань