Основные положения составления ПО. Структурная схема Р1ПД«Запрос и прием очередного пакета с 3 уровня»
На рис. 5.3 приведена структурная схема программы Р1ПД, ”Запрос и прием очередного пакета с 3 уровня” (т.е. с сетевого уровня). Приведенная схема ПО обеспечивает перенос пакета с сетевого уровня на канальный уровень Х.25. Основные принципы составления ПО системы коммутации реального масштаба времени с большим числом команд.
Приведем основные положения, которых необходимо придерживаться при составлении ПО системы коммутации:
· иерархический принцип построения ПО (диспетчер программ, фоновые программы, подпрограммы);
· деление больших ветвей программ с целью упрощения отладки и модернизации ПО;
· выполнение большинства программ осуществляется путем обработки очередей сообщений, находящихся в различных областях оперативной памяти;
· составление программного обеспечения с наименьшим числом команд является одной из наиболее важных задач для обеспечения большего числа обслуживаемых пользователей коммутационной станцией и лучших показателей качества обслуживания.
Покажем работу приведенной на диаграмме рис. 5.2 программы Р1ПД(рис. 5.3).
Рис. 5.3. Структурная схема Р1ПД”Запрос и прием очередного пакета с 3 уровня”
Операция 1. Режим передачи очередного пакета в канал? Если да, то переход к диспетчеру программ ДП. Если нет, то переход к операции 2.
Операция 2. Проверка наличия пакета для передачи в канал. В случае такого признака производится переход к операции 3. Этот пакет находится на сетевом уровне.
Операция 3. Проверка числа кадров N(Оповт), находящихся в буфере повторной передачи. Если N(Оповт) равно ширине окна W, то возврат к ДП. Если нет, то переход к операции 4.
Операция 4. Эта операция иллюстрирует деление длинных программ на две. Вначале программа не находится в состоянии «запрос пакета с 3 уровня». Проверка состояния «запрос пакета с 3 уровня». В случае, если не находится в этом состоянии, то переход к операции 5. Иначе, переход к операции 6.
Операция 5. Установка состояния «запрос пакета с 3 уровня».
Операция 6. Поставить пакет 3 уровня в конец очереди Оп32пакетов, подготовленных к передаче на канальный уровень.
Операция 7. Сброс состояния «запрос пакета с 3 уровня». Переход к ДП.
Как видно из схемы, диспетчер дважды обращается к программе Р1ПДдля того, чтобы осуществить прием одного пакета с третьего уровня: первый раз по цепочке операций 1 - 5, а второй раз 1 - 4, 6 - 7.
Все операции кроме операции 6 просто переводятся на язык программирования. Подробному описанию подлежит операция 6. Под блоком данных в сети Х.25 будем понимать кадр (блок данных второго уровня) или пакет (блок данных третьего уровня). В других технологиях сетей блоки данных часто называются другими терминами (ячейка, фрейм и др.). Дадим определение массива блока данных, который стоит в очереди на обработку программой. Операция 6 производит установку пакета 3 уровня в очередь Оп32. Для построения такой очереди принятый пакет располагается в ОЗУ, где к информационным полям добавляются два служебных поля. Такой пакет со служебными полями будем называть массивом пакета. На рис. 5.4 представлен формат k-го массива пакета в очереди Оп32, где Аk- адрес начала k-го массива пакета. Первые два поля массива пакета являются адресными полями и занимают соответственно начальные адреса предыдущего и последующего массива пакета.
Рис. 5.4. Формат k-го массива пакета очереди Оп32
Массивы блоков данных (в данном случае массивы пакетов), образуют упорядоченную очередь, связывающую их друг с другом в процессе работы системы в реальном масштабе времени (хотя они располагаются в разных местах оперативной памяти). В качестве примера очереди Оп32приведена очередь из трёх массивов пакетов с начальными адресами A1, А2, А3 (рис. 5.5.).
Рис. 5.5. Пример очереди из трех массивов пакетов
В поле 1 массива пакета 1 установлен 0, и в поле 2 массива последнего пакета 3 также установлен 0. В поле 2 массива пакета 1 указывается адрес начала массива пакета 2 (А2), а в поле 2 массива пакета 2 - адрес начала массива пакета 3 (А3).
Третье поле (n1, n2, n3) означает длину данных соответственно пакета 1, пакета 2, пакета 3.
Алгоритм программного обеспечения часто выполняет следующую функцию: из очереди к одной фоновой программе снимается первый блок данных, и после его отработки устанавливается в хвост (конец) очереди другой фоновой программы. Для этой цели в каждой очереди блоков данных используется одномерная строка характеристики очереди, которая состоит из трёх полей (рис. 5.6). Для очереди Оп32 обозначим характеристику очереди Нп32. При составлении программного обеспечения оборудования сетей связи это дает возможность экономить машинное время, определив одной-двумя командами наличие или отсутствие блоков в очереди, адреса первого и последнего блока в очереди.
Рис. 5.6. Формат характеристики очереди
На рис. 5.7 приведена характеристика очереди для приведенного примера.
Рис. 5.7. Характеристика очереди
На этом примере покажем, каким образом реализуется операция 5 программы Р1ПДпо установке пакета в конец очереди.
Допустим, начальный адрес массива этого пакета А4, в полях 3 и 4 установлены соответственно длина пакета в байтах и информационная часть пакета. В поле 2 массива пакета устанавливается 0 (т. к. он занимает последнее место в очереди), в поле 1 устанавливается А3. В поле 2 массива пакета 3 с адресом А3 вместо 0 устанавливается значение начального адреса массива А4.
Приведём изменения в характеристике очереди. В поле 3 вместо 3 устанавливается новое число массивов пакетов в Оп32, т. е. 4, а в поле 2 вместо А3 устанавливается начальный адрес последнего массива пакетов в очереди, т.е. А4.
Работа фоновых программ часто заключается в обработке какого-либо массива очереди, снятии этого массива из одной очереди и установке его в другую очередь. Для организации таких очередей блоков данных с целью их обработки разными фоновыми программами создаётся очередь свободных блоков Освоб. Многие языки программирования высокого уровня предусматривают такую возможность. Первый в очереди Освобсвободный блок используется для записи информационного блока (пакета, кадра и т.п.) и производится его установка в хвост (конец) очереди для обработки какой-либо фоновой программой. При освобождении блока данных после обработки фоновой программой этот блок заносится в хвост Освоб. Поле данных свободных блоков фиксировано, поэтому поле 3 (длина) отсутствует. В некоторых случаях могут быть несколько таких очередей Освобс разными длинами поля данных, что приводит к экономии оперативной памяти. Форматы массива очереди свободных блоков Освоби характеристика этой очереди Нсвоб во многом аналогичны описанному выше формату Оп32. Поле данных этих блоков свободно для записи конкретных блоков (например, для записи входных блоков данных с канала или с процессора другого уровня).
Передача информационных кадров в канал может осуществляться следующими тремя программами:
· передача очередного кадра «I», находящегося в очереди Оп32(программа Р2ПД);
· передача кадра «I» из очереди повтора Оповтпосле получения отрицательной квитанции REJ с противоположного конца (программа Р3ПД);
· передача кадра «I» из очереди повтора Оповтпосле срабатывания таймера, указывающего на превышение допустимого времени ожидания подтверждения правильного приема кадра (программа Р7ПД);
· передача кадра «I» из очереди повтора Оповт при превышении числа находящихся в очереди кадров значения окна W (алгоритм программы не приводится).