[19.10.11] Семинар №4 (Семинары)
Описание файла
Файл "[19.10.11] Семинар №4" внутри архива находится в следующих папках: Семинары, 444 - [19.10.11] Семинар №4. Документ из архива "Семинары", который расположен в категории "". Всё это находится в предмете "параллельные процессы" из 7 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "параллельные процессы" в общих файлах.
Онлайн просмотр документа "[19.10.11] Семинар №4"
Текст из документа "[19.10.11] Семинар №4"
Семинар №4 [19.10.11]
Задача 1. Клиент-серверная система, запросы к серверу и ответы от сервера.
Блок-контроллер ЗАГР:
БЛОК
описание
N – скаляр; // начальное значение 0
всё описание;
алгоритм
НАЧ: N := N + 1;
создать W типа вектор(1-3 - скаляры);
W(1) := N;
W(2) := ЦЕЛОЕ(RAND*9)+1; // тут коэффициент сложности
создать S типа ссылка;
S := ссылка на W;
создать инициатор из S в блок СЕТЬ на метку СТАРТ;
если N < 20 то направить ИНИЦИАТОР на НАЧ;
уничтожить ИНИЦИАТОР;
всё алгоритм;
всё БЛОК.
Блок-процессор СЕТЬ:
БЛОК
Описание
СЕРВ – скаляр; // начальное значение ‘свободен’
Тсерв, Тс – скаляры;
a, b, f, g – скаляры;
всё описание;
алгоритм
СТАРТ: (инициатор->вектор(3)) := ВРЕМЯ + (RAND * (b-a) + a);
ждать ВРЕМЯ = (инициатор->вектор(3));
ждать ВРЕМЯ = ВРЕМЯ + Тс; // Тс – это время передачи по каналу
ждать СЕРВ = ‘свободен’;
СЕРВ := ‘занят’;
Тсерв := ВРЕМЯ + (RAND*(g-f)+f) * (инициатор->вектор(2)); // сложность
ждать ВРЕМЯ = Тсерв;
СЕРВ := ‘свободен’;
ждать ВРЕМЯ = ВРЕМЯ + Тс; // передача ответа клиенту
направить инициатор на метку СТАРТ;
всё алгоритм;
всё БЛОК.
Задача 2. Моделирование систем ограниченной надёжности.
Блок-контроллер ГЕНЕРАТОР:
БЛОК
описание
Тп – скаляр;
всё описание;
алгоритм
НАЧ: создать W типа вектор(1-2 - скаляры);
W(1) := ВРЕМЯ;
W(2) := RAND*2000+2000;
создать S типа ссылка;
S := ссылка на W;
создать инициатор из S в блок КАНАЛ на метку СТАРТ;
Тп := ВРЕМЯ + (RAND*200+100);
ждать ВРЕМЯ = Тп;
направить ИНИЦИАТОР на метку НАЧ;
всё алгоритм;
всё БЛОК.
Блок-процессор КАНАЛ:
БЛОК
описание
СОСТОЯНИЕ – скаляр в блоке РЕЖИМ;
КАНАЛ – скаляр; // начальное значение ‘свободен’
Тк – скаляр;
всё описание;
алгоритм
СТАРТ: ждать (КАНАЛ = ‘свободный’) /\ (СОСТОЯНИЕ = ‘рабочий’);
КАНАЛ := ‘занят’;
Тк := ВРЕМЯ + (инициатор->вектор(2))/0.05; // из формулы в схеме
ждать (ВРЕМЯ = Тк) направить ИНИЦИАТОР на метку МК;
(СОСТОЯНИЕ = ‘сломан’) направить ИНИЦИАТОР на метку СТАРТ;
МК: КАНАЛ := ‘свободен’;
уничтожить ИНИЦИАТОР;
всё алгоритм;
всё БЛОК.
Блок-агрегат РЕЖИМ:
БЛОК
описание
всё описание;
алгоритм
ЦИКЛ: СОСТОЯНИЕ := ‘работает’;
Тсост := ВРЕМЯ + (RAND*10000+10000); // через сколько ломается
ждать ВРЕМЯ = Тсост;
СОСТОЯНИЕ := ‘сломан’;
Тсост := ВРЕМЯ + (RAND*1000+1000); // сколько ремонтируется, откуда-то
ждать ВРЕМЯ = Тсост;
направить ИНИЦИАТОР на метку ЦИКЛ;
всё алгоритм;
всё БЛОК.