Диспетчер программы DISP1

Begin;

D:= 1

IF D = 1 THEN GO TO P1 ELSE IF D = 2 THEN GO TO P2 ELSE

IF D= 3 THEN GO TO P3 ELSE IF D = 4 THEN GO TO P4 ELSE

IF D = 5 THEN GO TO P5 ELSE

END

Программы:

P1 – формирование очереди из N1 свободных блоков;

P2 – формирование N2 пакетов данных;

P3 – перенос N2 пакетов данных из очереди Освоб в очередь пакетов Оп32;

P4 – формирование информационного кадра, включающего первый пакет в очереди пакетов Оп32;

P5 – перенос информационного кадра, сформированного программой P4, в очередь повтора Оповт и в регистр на передачу в канал.

1.1. Программа P1

а) Выделение памяти под N1 свободных блоков (3<= N1=< 20). Каждый свободный блок занимает 138 байт:

- 2 байта под адрес предыдущего блока в списке блоков (первое адресное поле связки очереди);

- 2 байта под адрес следующего блока в списке блоков (второе адресное поле связки очереди);

- 3 байта под заголовок пакета;

- 1 байт под заголовок кадра;

- 128 байт под информационную часть пакета данных;

- 2 байта под контрольно-проверочную комбинацию КПК.

Очистить память, занятую свободными блоками.

б) Установление адресов связки в N1 свободных блоках:

- выделить память под характеристику очереди свободных блоков Нсвоб с начальным адресом АНсвоб. Установить поля характеристики Нсвоб (рис. 1).

АНсвоб

А(1) А(N1) N1

Рис. 1. Характеристика Нсвоб

Здесь

А(1) – адрес начала массива первого свободного блока в очереди Освоб.

А(N1) – адрес начала массива последнего свободного блока в очереди Освоб.

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

Установить адресные поля связки первого (рис. 2а) и N1 – го (рис. 2б) свободного блока в очереди Освоб.

А(1)

  А(N1)  

а)

А(N1)

А(N1 -1)    

б)

Рис. 2. Формат первого (а) и последнего (б) свободного блока в списке очереди Освоб

Установить адреса связки всех свободных блоков, кроме первого и последнего.

FOR i=2, 3 …. (N1-1) DO

Запись в первое адресное поле i-го блока адрес начала i-1 блока списка очереди;

Запись во второе адресное поле i-го блока адрес начала i+1 блока списка очереди.

i=i+1

D:=D+1

END

GO TO DISP1

1.2. Программа P2

Записать данные в информационную часть первых N2 свободных блоков очереди Освоб, т.е. сформировать пакет данных в этих свободных блоках. Для упрощения примем заголовок пакета равным нулю. На рис. 3 показан формат размещенного пакета в свободном блоке с начальным адресом A(i).

байты            
Начальный адрес A(i) Первое адресное поле Второе адресное поле   Заголовок пакета Информационная часть пакета  

Рис. 3. Формат размещения пакета данных в свободном блоке с начальным адресом A(i)

n:= m

FOR i= 1,2…..N2 DO

n:= n +1

Записать n в поле информационной части пакета с начальным адресом массива A(i).

END

В результате в первых N2 свободных блоках установлены пакеты данных, образуя очередь пакетов Оп32. Функция следующей программы P3 в освобождении Освоб от пакетов очереди пакетов Оп32 (перенос их из . Освоб в Оп32 ), формирование характеристики очереди пакетов Оп32.

D:=D+1

GO TO DISP1

1.3. Программа P3

Выделить память под характеристику Hп32 очереди пакетов Оп32 с начальным адресом АHп32. Установить поля характеристики Hп32 (рис 4).

АHп32

А(1) А(N2) N2

Рис. 4. Характеристика Hп32

Установить значение ноль во втором адресном поле пакета N2, т.е. адрес следующего блока в списке очереди.

Откорректировать поля характеристики очереди очереди свободных блоков Нсвоб (рис. 5).

АНсвоб

А(N2+1) А(N1) N1- N2


Рис. 5. Характеристика Нсвоб

Установить значение ноль в первом адресном поле массива свободных блоков с адресом А(N2+1) т.е. адрес предыдущего блока в списке очереди.

D:=D+1

GO TO DISP1

1.4. Программа P4

Сформировать кадр с входящим в него первым в очереди пакетов Оп32 пакетом данных. Начальный адрес массива этого кадра А(1). На рис.6 показан формат его полей.

байты            
Начальный адрес массива A(1) Первое адресное поле - 0 Второе адресное поле - A(2) Заголо-вок кадра Заголо-вок пакета Информационная часть пакета КПК

…адресная часть …................................................................ кадр ………… ………

………. пакет ………………. ………

Рис. 6. Формат полей массива информационного кадра “I” с начальным адресом A(1)

Установить исходные состояния: V(S):= Z1. (0<= V(S)=< 7).

Установить параметры информационного кадра: N(S):=V(S);

V(S):=V(S)+1.

Формирование полей заголовка (длиной 8 бит) информационного кадра “I” с начальным адресом массива A(1):

- определить V(R) по исходным данным Z2 разд. 1.6 (0<= V(R)=< 7), ожидаемый противоположной стороной подтверждения переданных им кадров “I”, т.е. приема кадра “I” с ожидаемым N(S). V(R):= Z2;

- записать биты заголовка <2-4>:= N(S), биты N(R) заголовка <6-8>:= V(R), бит заголовка <1>:= 0 (тип кадра – информационный).

- сформировать контрольно-проверочную комбинацию КПК кадра: произвести сложение по модулю 2 всех байт кадра и занести результат в поле КПК (см. рис.5).

D:=D+1

GO TO DISP1

1.5. Программа P5

Перенос информационного кадра “I” с начальным адресом массива A(1) из очереди Оп32 в конец очереди Оповт:

- выделить память под характеристику Hповт очереди пакетов Оповт с начальным адресом АHповт. Установить поля характеристики Hповт (рис. 7);

АHповт

А(1) А(1)  

Рис. 7. Характеристика Hповт

- установить второе адресное поле массива информационного кадра “I” с начальным адресом A(1) в ноль (см. рис.6);

- откорректировать характеристику очереди пакетов Оп32, т.е. Hп32 (рис. 8). Сравните с рис. 4.

АHп32

А(2) А(N2) N2-1

Рис. 8. Характеристика Hп32

- установить первое адресное поле массива очереди пакетов данных Оп32 в ноль.

Перенести кадр “I” в выходной регистр передачи в канал связи RGвых

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: