Моделирование работы узла коммутации сообщений
Входной буфер, процессор и две выходных линий с двумя буферами как основные элементы узла коммутации сообщений. Определение параметров загрузки устройств и вероятности отказа в обслуживании сообщений из-за возможности переполнения буферов выходных линий.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 27.06.2013 |
Размер файла | 91,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
федеральное государственное автономное образовательное учреждение
высшего профессионального образования
Национальный исследовательский ядерный университет «МИФИ»
Факультет Кибернетики
Кафедра «Информатика и процессы управления» (№ 17)
ОТЧЕТ по лабораторным работам
по курсу "Математическое моделирование"
Выполнил студент группы К8-172 Кузин А.А.
Москва 2012
Задание
Узел коммутации сообщений (УКС) состоит из входного буфера, процессора и двух выходных линий с двумя буферами, по одному на входе каждой линии. В УКС через интервалы времени 15±7 мс поступают сообщения двух типов. Все сообщения сначала помещаются во входной буфер УКС, а затем поочередно обрабатываются процессором, независимо от их типа. Время обработки одного сообщения в процессоре равно 7 мс. После обработки процессором сообщения первого типа передаются по первой выходной линии, а сообщения второго типа - по второй выходной линии. Время передачи сообщения по любой выходной линии равно 15±5 мс. Поскольку по каждой выходной линии не может одновременно передаваться более одного сообщения, то сообщения первого типа предварительно поступают в буфер перед первой выходной линией, а второго типа - в буфер перед второй выходной линией. Применяемый метод контроля потоков сообщений требует одновременного присутствия в каждом буфере выходных линий не более трех сообщений. При полном заполнении буфера поступающее в УКС сообщение соответствующего типа получает отказ.
Смоделировать работу УКС в течение 10 секунд. Определить параметры загрузки устройств и вероятность отказа в обслуживании сообщений из-за возможности переполнения буферов выходных линий.
Лабораторная работа №1
События:
P13 - новое сообщение
P1 - сгенерировано сообщение 1го типа
P2 - сгенерировано сообщение 2го типа
P3 - ожидание в буфере сообщений
P4 - обработка сообщений (CPU)
P5 - наличие места в буфере передачи 2
P6 - требование типа сообщения 2
P7 - наличие места в буфере передачи 1
P8 - требование типа сообщения 1
P9 - ожидание в буфере передачи 1
P10 - ожидание в буфере передачи 2
P11 - передано сообщения 1го типа
P12 - передано сообщения 2го типа
Переходы:
T10 - начало обработки сообщения
t1 - определение типа сообщения 1
t2 - определение типа сообщения 2
t3 - поступление на обработку в CPU
t4 - конец обработки и поступление в буфер передачи 1 сообщения 1
t5 - конец обработки и поступление в буфер передачи 2 сообщения 2
t6 - начало передачи сообщения 1
t7 - начало передачи сообщения 2
t8 - конец передачи сообщения 1
t9 - конец передачи сообщения 2
Лабораторная работа № 2
CDC = < D,X,{Sa},Y,{Ia},{Fa}, , >
Переменные
Входные переменные
X - тип сообщений, X ? {1, 2} ? {?};
Переменные состояния
g1 - состояние CPU, g1 ? {0, 1}, где 0 - не занят, 1 - занят
g2 - количество сообщений во входном буфере
g3i - количество сообщений в i-м буфере передачи
g4 - тип последнего сообщения, g4 ? {1, 2}
g5i - сумма времен ожидания сообщений i-го типа в i-й очереди на передачу
g6i - количество переданных сообщений по i-й линии
g7 - количество обработанных сообщений
g8 - количество поступивших сообщений
Выходные переменные
y1 - среднее время ожидания сообщений в очереди на обработку
y2i - среднее время ожидания сообщений i-го типа в очереди на передачу
y3 - количество поступивших сообщений
y4 - количество обработанных сообщений
y5 - вероятность отказа
y6 - загрузка всего оборудования
y7i - загрузка i-й линии
Процессы
P1 - генерация сообщений 1 и 2 типов
P2 - обработка сообщений
P3 - отправка сообщения 1го типа
P4 - отправка сообщения 2го типа
P5 - обработка информации
События
C1 - поступление сообщения
C2 - начало обработки сообщения
C3i - окончание обработки сообщения i-го типа
C4i - начало передачи сообщения i-го типа
C5i - завершение передачи сообщения i-го типа
C6 - формирование результатов моделирования
Описание D и Sa
D = {P1, P2, P3, P4, P5 }
Sp1 = {x}
Sp2 = {g1, g2, g31, g32, g4, g7}
Sp3 = {g31, g51, g61}
Sp4 = {g32, g52, g62}
Sp5 = {g51, g52, g61, g62, g7, g8, y1, y21, y22, y3, y4, y5, y6, y71, y72}
Отчет о моделировании
Время моделирования - 10 секунд
Поступило: 669 сообщений
Обработано: 34 (5.08%)
Вероятность отказа: 94.8%
Среднее время ожидания во входном буфере: 0.00с
Среднее время ожидания в очереди на передачу 1: 38.86мс
Среднее время ожидания в очереди на передачу 2: 40.43мс
Загрузка CPU: 2.38%
Загрузка линии передачи 1: 1.07%
Загрузка линии передачи 1: 2.91%
Листинг
unit userdef;
interface
uses SysUtils;
// -----------------------Изменяемая часть-----------------------------------
procedure Message1;
procedure Obrab;
procedure Send1;
procedure Send2;
procedure UserInit;
procedure UserStat;
function UserCheck: boolean;
procedure start;
implementation
uses prog,main;
type MsgSpec =
record
Kind: integer;
inTime: integer;
end;
var
LBase: BaseQueue;
SQueue1, SQueue2: BaseQueue;
X: integer;
Msg: MsgSpec;
узел коммутация сообщение буфер
Tobrab,Obrabot, Otkaz, Vsego,Twait,Twork, TSend1, TSend2, TwaitSend1, TwaitSend2,TobrabSend1, TobrabSend2, TworkSend1, TworkSend2, ObrabotSend1, ObrabotSend2, inq1, inq2: integer;
{$F+}
procedure Message1;
begin
form1. RichEdit1. Lines. Clear;
X: =Random (2) +1;
form1. richedit1. Lines. add (' Поступило сообщение типа '+inttostr (x) +'. ');
Shedull (Time+RangeRnd (15,7),P1);
Msg. Kind: =X;
Msg. inTime: =Time;
AddQueue (LBase,@Msg);
Vsego: =Vsego+1;
form1. richedit1. Lines. add (' Длина очереди: '+inttostr (LBase. Length));
Shedull (Time,P2);
end;
procedure Obrab;
var
MsgPtr: ^MsgSpec;
t: integer;
begin
form1. RichEdit1. Lines. Clear;
form1. richedit1. Lines. add (' Длина очереди: '+inttostr (LBase. Length));
if Tobrab<=Time then { т. е свободен }
if LBase. Length>0 then { очередь не пуста }
begin
form1. richedit1. Lines. add ('CPU взял 1 сообщение и начал обработку. ');
MsgPtr: = OutQueue (LBase);
Twait: =Twait+Time-MsgPtr^. inTime;
t: =7; // RangeRnd (7,1);
if MsgPtr^. Kind=1 then
begin
if SQueue1. Length<3 then
begin
Tobrab: =Time+t;
Twork: =Twork+t;
MsgPtr^. inTime: = TObrab;
AddQueue (SQueue1,MsgPtr);
Shedull (Tobrab,P3);
form1. richedit1. Lines. add (' Сообщение 1 типа отправлено в буфер передачи. ');
Obrabot: =Obrabot+1;
end
else
begin
Shedull (Tobrab,P2);
form1. richedit1. Lines. add (' Сообщение 1 типа получило отказ. ');
inc (Otkaz);
end;
end
else
begin
if SQueue2. Length<3 then
begin
Tobrab: =Time+t;
Twork: =Twork+t;
MsgPtr^. inTime: = TObrab;
AddQueue (SQueue2,MsgPtr);
Shedull (Tobrab,P4);
form1. richedit1. Lines. add (' Сообщение 2 типа отправлено в буфер передачи. ');
Obrabot: =Obrabot+1;
end
else
begin
Shedull (Tobrab,P2);
form1. richedit1. Lines. add (' Сообщение 2 типа получило отказ. ');
inc (Otkaz);
end;
end;
{FreeMem (MsgPtr,LBase. Size); }
{Shedull (Tobrab,P3); }
end
else form1. richedit1. Lines. add ('CPU простаивает. ')
else form1. richedit1. Lines. add ('CPU занят. ')
end;
procedure Send1;
var
MsgPtr: ^MsgSpec;
t: integer;
begin
form1. RichEdit1. Lines. Clear;
form1. richedit1. Lines. add (' Длина очереди передачи 1: '+inttostr (SQueue1. Length));
if TObrabSend1<=Time then
if SQueue1. Length>0 then { очередь не пуста }
begin
form1. richedit1. Lines. add ('Началась передача сообщения по линии 1. ');
MsgPtr: = OutQueue (SQueue1);
TwaitSend1: =TwaitSend1+Time-MsgPtr^. inTime;
t: =RangeRnd (15,5);
TworkSend1: =TworkSend1+t;
TobrabSend1: =Time+t;
FreeMem (MsgPtr,SQueue1. Size);
Shedull (TobrabSend1,P2);
inc (ObrabotSend1);
end;
end;
procedure Send2;
var
MsgPtr: ^MsgSpec;
t: integer;
begin
form1. RichEdit1. Lines. Clear;
form1. richedit1. Lines. add (' Длина очереди передачи 2: '+inttostr (SQueue2. Length));
if TObrabSend2<=Time then
if SQueue2. Length>0 then { очередь не пуста }
begin
form1. richedit1. Lines. add ('Началась передача сообщения по линии 2. ');
MsgPtr: = OutQueue (SQueue2);
TwaitSend2: =TwaitSend2+Time-MsgPtr^. inTime;
t: =RangeRnd (15,5);
TworkSend2: =TworkSend2+t;
TobrabSend2: =Time+t;
FreeMem (MsgPtr,SQueue2. Size);
Shedull (TobrabSend2,P2);
inc (ObrabotSend2);
end;
end;
procedure UserInit; { процедура инициализации переменных }
begin
Tobrab: =0;
TObrabSend1: = 0;
TObrabSend2: =0;
Twait: =0;
Obrabot: =0;
Otkaz: =0;
Vsego: =0;
Twork: =0;
Tworksend1: =0;
Tworksend2: =0;
TwaitSend1: =0;
TwaitSend2: =0;
ObrabotSend1: =0;
ObrabotSend2: =0;
X: =0;
InitQueue (LBase,Sizeof (MsgSpec)); { инициализация очереди }
InitQueue (SQueue1,Sizeof (MsgSpec));
InitQueue (SQueue2,Sizeof (MsgSpec));
Shedull (0,P1); { инициализация календаря }
end;
procedure UserStat; { процедура выдачи статистики }
begin
form1. RichEdit4. Lines. clear;
form1. richedit4. Lines. add ('Поступило: '+inttostr (Vsego) +' сообщений. ');
form1. richedit4. Lines. add ('Обработано: '+inttostr (Obrabot) +', т. е: '+floattostrf ( (Obrabot/Vsego) *100,ffGeneral,3,2) +'% сообщений. ');
form1. richedit4. Lines. add ('Вероятность отказа: '+floattostrf ( (Otkaz/Vsego) *100,ffGeneral,3,2) +'%. ');
form1. richedit4. Lines. add ('Среднее время ожидания в очереди: '+floattostrf ( (Twait/Vsego),ffFixed,8,5));
if obrabotSend1>0 then
form1. richedit4. Lines. add ('Среднее время ожидания в очереди на передачу 1: '+floattostrf ( (TwaitSend1/ObrabotSend1),ffFixed,8,5));
if obrabotSend2>0 then
form1. richedit4. Lines. add ('Среднее время ожидания в очереди на передачу 2: '+floattostrf ( (TwaitSend2/ObrabotSend2),ffFixed,8,5));
form1. richedit4. Lines. add ('Загрузка оборудования: '+floattostrf ( (Twork/Time) *100,ffFixed,3,2) +' % ');
form1. richedit4. Lines. add ('Загрузка линии передачи 1: '+floattostrf ( (TworkSend1/Time) *100,ffFixed,3,2) +'% ');
form1. richedit4. Lines. add ('Загрузка линии передачи 2: '+floattostrf ( (TworkSend2/Time) *100,ffFixed,3,2) +'% ');
end;
function UserCheck: boolean; {Функция проверки окончания моделирования}
begin
UserCheck: =false;
if Time>10000 then UserCheck: =true; { Время работы 10 секунд }
end;
procedure start;
{F-}
begin { программа }
ActMatr [P1]. ActPtr: =@Message1; { настройка адресов блоков }
ActMatr [P2]. ActPtr: =@Obrab;
ActMatr [P3]. ActPtr: =@Send1;
ActMatr [P4]. ActPtr: =@Send2;
ActMatr [P1]. Name: ='Сообщ1';
ActMatr [P2]. Name: ='Обработ. ';
ActMatr [P3]. Name: ='Перед1';
ActMatr [P4]. Name: ='Перед2';
UInitPtr: =@UserInit; { настройка адреса процедуры инициализации}
UStatPtr: =@UserStat; { настройка адреса процедуры статистики }
UCheckEnd: =UserCheck; { задание имени функции проверки условия }
SIMULATE; { вызов имитатора }
end;
end.
Размещено на Allbest.ru
Подобные документы
Моделирование узла коммутации сообщений, который состоит из входного буфера, процессора, двух выходных буферов и двух выходных линий. Разработка структурной схемы имитационной модели, описание ее функционирования. Выбор программных средств моделирования.
курсовая работа [197,1 K], добавлен 20.02.2012Моделирование информационной системы, представляющей собой узел коммутации сообщений, который состоит из входного буфера, процессора, двух выходных буферов и двух выходных линий. Организация экспериментов с данной моделью, оценка ее адекватности.
курсовая работа [207,5 K], добавлен 15.02.2012Моделирование работы компьютерного зала в течении 60 ч. Определение загрузки устройства подготовки данных (УПД), ЭВМ и вероятности отказа в обслуживании вследствие переполнения очереди. Определение соотношения желающих работать на ЭВМ и на УПД в очереди.
контрольная работа [275,7 K], добавлен 05.07.2014Сравнение результатов имитационного моделирования и аналитического расчета характеристик. Исследование узла коммутации пакетов данных, обработки пакетов в процессоре, буферизации и передачи по выходной линии. Определение коэффициента загрузки процессора.
курсовая работа [59,7 K], добавлен 29.06.2011Разработка концептуальной модели системы обработки информации для узла коммутации сообщений. Построение структурной и функциональной блок-схем системы. Программирование модели на языке GPSS/PC. Анализ экономической эффективности результатов моделирования.
курсовая работа [802,8 K], добавлен 04.03.2015Принципы и техники коммутации пакетов, каналов и сообщений. Перспективы их использования. Достоинства и недостатки данных сетевых технологий. Проблема адресации сетевых интерфейсов компьютеров. Требования, предъявляемые к адресу и схеме его назначения.
реферат [20,7 K], добавлен 26.11.2012Определение и отличительные признаки локальной сети. Методы коммутации каналов, сообщений, пакетов и ячеек. Особенности, различия и достоинства топологий сетей: "общая шина", "звезда", "кольцо", "дерево", "полносвязная", "многосвязная", "смешанная".
курсовая работа [440,8 K], добавлен 16.05.2012Особенности посылки сообщений в Windows и в Win32 API. Обработка состояний простоя. Маршрутизация сообщений в Windows 3.x. Основные циклы обработки сообщений. Применение многопотоковых приложений. Основные возможности редакторов WinWord 97 и Notepad.
лекция [35,9 K], добавлен 24.06.2009Количество информации и ее мера. Определение количества информации, содержащегося в сообщении из ансамбля сообщений источника. Свойства количества информации и энтропии сообщений. Избыточность, информационная характеристика источника дискретных сообщений.
реферат [41,4 K], добавлен 08.08.2009Входная информация, формы представления. Наименование выходных сообщений, периодичность и сроки поступления, условные обозначения, описание реквизитов. Сводка о выполнении плана производства (выпуска) продукции в ЗАО "Плазмофильтр" за январь 2005 г.
отчет по практике [578,8 K], добавлен 22.01.2014