[09.11.11] Семинар №5 (Семинары)
Описание файла
Файл "[09.11.11] Семинар №5" внутри архива находится в следующих папках: Семинары, 555 - [09.11.11] Семинар №5 - РК. Документ из архива "Семинары", который расположен в категории "". Всё это находится в предмете "параллельные процессы" из 7 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "параллельные процессы" в общих файлах.
Онлайн просмотр документа "[09.11.11] Семинар №5"
Текст из документа "[09.11.11] Семинар №5"
Семинар №5 [09.11.11]
Рубежный контроль
Задача 71. Информационная система состоит из двух серверов, соединённых полудуплексным каналом связи с ограниченной надёжностью. На каждый сервер извне поступает поток пакетов данных разного размера с интервалом между пакетами F для обработки и передачи другому серверу. Пакет рассматривается как неделимая единица. Серверы обмениваются между собой пакетами с посылкой подтверждений без опроса состояния канала, причём установлен размер окна K. Время обработки пакета сервером – G. Время передачи пакета по каналу – D.
G, D, F – случайные величины.
БЛОК ПАКЕТЫ
описание
N, Тпакета – скаляры;
E – скаляр; // есть или нет сбой при передаче к другому серверу, начальное 0
всё описание
алгоритм
НАЧ: N := N + 1;
если N = чётное то E = 0 иначе E = 1; // 50% вероятность сбоя в канале
создать W типа вектор(1-2 - скаляры);
W(1) := N;
W(2) := E;
создать S типа ссылка;
S := ссылка на W;
активизировать инициатор из S в блок ИС на метку СТАРТ;
Тпакета := ВРЕМЯ + F; // из условия задачи
ждать ВРЕМЯ = Тпакета;
направить ИНИЦИАТОР на метку НАЧ;
всё алгоритм
всё БЛОК.
БЛОК ИС
описание
СЕРВ – скаляр; // число свободных серверов, начальное значение 2
ПВТР – метка; // для повторной передачи пакета другому серверу
ОК – метка; // всё хорошо, сбоя не было
P – скаляр; // число пакетов, отправленных другому серверу, начальное 0
Тобработки, Тканала – скаляры;
всё описание
алгоритм
СТАРТ: ждать СЕРВ > 0;
СЕРВ := СЕРВ – 1;
Тобработки := ВРЕМЯ + G; // из условия задачи
ждать ВРЕМЯ = Тобработки;
Тканала := ВРЕМЯ + D; // случайная из условия задачи
P := P + 1;
ждать P <= K; // соответствие размеру окна
ждать ВРЕМЯ = Тканала; // отправил другому серверу
если (ИНИЦИАТОР->вектор(2)) = 1 то направить ИНИЦИАТОР на метку ПВТР;
направить ИНИЦИАТОР на метку ОК;
ПВТР: Тканала := ВРЕМЯ + D; // случайная из условия задачи
ждать ВРЕМЯ = Тканала; // прошло время для ответа, но ответа нет
Тканала := ВРЕМЯ + D; // случайная из условия задачи
ждать ВРЕМЯ = Тканала; // повторная отправка
ОК: Тканала := ВРЕМЯ + D; // случайная из условия задачи
ждать ВРЕМЯ = Тканала; // пришёл ответ
P := P – 1;
СЕРВ := СЕРВ + 1;
уничтожить ИНИЦИАТОР;
всё алгоритм
всё БЛОК.
-------------------
Upd.[17.11.11]: надо было сделать два блока:
1) обработка пакета;
2) подтверждения получения от второго, там можно сделать семафор.