Моделирование работы узла коммутации сообщений

  • Вид работы:
    Практическое задание
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    46,93 Кб
  • Опубликовано:
    2013-06-27
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Моделирование работы узла коммутации сообщений

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

федеральное государственное автономное образовательное учреждение

высшего профессионального образования

Национальный исследовательский ядерный университет «МИФИ»

Факультет Кибернетики

Кафедра «Информатика и процессы управления» (№ 17)




ОТЧЕТ по лабораторным работам

по курсу "Математическое моделирование"


Выполнил студент группы К8-172 Кузин А.А.







Москва 2012

Задание


Узел коммутации сообщений (УКС) состоит из входного буфера, процессора и двух выходных линий с двумя буферами, по одному на входе каждой линии. В УКС через интервалы времени 15±7 мс поступают сообщения двух типов. Все сообщения сначала помещаются во входной буфер УКС, а затем поочередно обрабатываются процессором, независимо от их типа. Время обработки одного сообщения в процессоре равно 7 мс. После обработки процессором сообщения первого типа передаются по первой выходной линии, а сообщения второго типа - по второй выходной линии. Время передачи сообщения по любой выходной линии равно 15±5 мс. Поскольку по каждой выходной линии не может одновременно передаваться более одного сообщения, то сообщения первого типа предварительно поступают в буфер перед первой выходной линией, а второго типа - в буфер перед второй выходной линией. Применяемый метод контроля потоков сообщений требует одновременного присутствия в каждом буфере выходных линий не более трех сообщений. При полном заполнении буфера поступающее в УКС сообщение соответствующего типа получает отказ.

Смоделировать работу УКС в течение 10 секунд. Определить параметры загрузки устройств и вероятность отказа в обслуживании сообщений из-за возможности переполнения буферов выходных линий.

Лабораторная работа №1


 

События:

P13 - новое сообщение

P1 - сгенерировано сообщение 1го типа

P2 - сгенерировано сообщение 2го типа

P3 - ожидание в буфере сообщений

P4 - обработка сообщений (CPU)

P5 - наличие места в буфере передачи 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

= < D,X,{Sa},Y,{Ia},{Fa}, c,e >

Переменные

Входные переменные- тип сообщений, X ∈ {1, 2} ∪ {∅};

Переменные состояния

g1 - состояние CPU, g1 ∈ {0, 1}, где 0 - не занят, 1 - занят

g2 - количество сообщений во входном буфере

g4 - тип последнего сообщения, g4 ∈ {1, 2}

g5i - сумма времен ожидания сообщений i-го типа в i-й очереди на передачу

g6i - количество переданных сообщений по i-й линии

g7 - количество обработанных сообщений

g8 - количество поступивших сообщений

Выходные переменные

y1 - среднее время ожидания сообщений в очереди на обработкуi - среднее время ожидания сообщений i-го типа в очереди на передачу- количество поступивших сообщений

y4 - количество обработанных сообщений

y5 - вероятность отказа

y6 - загрузка всего оборудования

y7i - загрузка i-й линии

Процессы

P1 - генерация сообщений 1 и 2 типов- обработка сообщений- отправка сообщения 1го типа- отправка сообщения 2го типа- обработка информации

События

C1 - поступление сообщения- начало обработки сообщенияi - окончание обработки сообщения i-го типаi - начало передачи сообщения i-го типаi - завершение передачи сообщения i-го типа- формирование результатов моделирования

Описание D и Sa

D = {P1, P2, P3, P4, P5 }= {x}= {g1, g2, g31, g32, g4, g7}= {g31, g51, g61}= {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мс

Загрузка CPU: 2.38%

Загрузка линии передачи 1: 1.07%

Загрузка линии передачи 1: 2.91%

Листинг

unit userdef;

interface

uses SysUtils;

// -----------------------Изменяемая часть-----------------------------------

procedure Message1;Obrab;Send1;Send2;UserInit;UserStat;UserCheck: boolean;start;prog,main;MsgSpec =: integer;: integer;;: BaseQueue;, SQueue2: BaseQueue;: integer;: MsgSpec;

узел коммутация сообщение буфер

Tobrab,Obrabot, Otkaz, Vsego,Twait,Twork, TSend1, TSend2, TwaitSend1, TwaitSend2,TobrabSend1, TobrabSend2, TworkSend1, TworkSend2, ObrabotSend1, ObrabotSend2, inq1, inq2: integer;

{$F+}Message1;. RichEdit1. Lines. Clear;: =Random (2) +1;. richedit1. Lines. add (' Поступило сообщение типа '+inttostr (x) +'. ');(Time+RangeRnd (15,7),P1);. Kind: =X;. inTime: =Time;(LBase,@Msg);: =Vsego+1;. richedit1. Lines. add (' Длина очереди: '+inttostr (LBase. Length));(Time,P2);;Obrab;: ^MsgSpec;

t: integer;. RichEdit1. Lines. Clear;. richedit1. Lines. add (' Длина очереди: '+inttostr (LBase. Length));Tobrab<=Time then { т. е свободен }LBase. Length>0 then { очередь не пуста }. richedit1. Lines. add ('CPU взял 1 сообщение и начал обработку. ');: = OutQueue (LBase);: =Twait+Time-MsgPtr^. inTime;: =7; // RangeRnd (7,1);MsgPtr^. Kind=1 thenSQueue1. Length<3 then: =Time+t;: =Twork+t;^. inTime: = TObrab;(SQueue1,MsgPtr);(Tobrab,P3);1. richedit1. Lines. add (' Сообщение 1 типа отправлено в буфер передачи. ');: =Obrabot+1;(Tobrab,P2);. richedit1. Lines. add (' Сообщение 1 типа получило отказ. ');(Otkaz);;SQueue2. Length<3 then: =Time+t;: =Twork+t;^. inTime: = TObrab;(SQueue2,MsgPtr);(Tobrab,P4);

form1. richedit1. Lines. add (' Сообщение 2 типа отправлено в буфер передачи. ');: =Obrabot+1;(Tobrab,P2);. richedit1. Lines. add (' Сообщение 2 типа получило отказ. ');(Otkaz);;;

{FreeMem (MsgPtr,LBase. Size); }

{Shedull (Tobrab,P3); }form1. richedit1. Lines. add ('CPU простаивает. ')form1. richedit1. Lines. add ('CPU занят. ');Send1;: ^MsgSpec;: integer;. RichEdit1. Lines. Clear;. richedit1. Lines. add (' Длина очереди передачи 1: '+inttostr (SQueue1. Length));TObrabSend1<=Time thenSQueue1. Length>0 then { очередь не пуста }

begin. richedit1. Lines. add ('Началась передача сообщения по линии 1. ');

MsgPtr: = OutQueue (SQueue1);

TwaitSend1: =TwaitSend1+Time-MsgPtr^. inTime;

t: =RangeRnd (15,5);

TworkSend1: =TworkSend1+t;: =Time+t;(MsgPtr,SQueue1. Size);(TobrabSend1,P2);(ObrabotSend1);;;Send2;

form1. RichEdit1. Lines. Clear;. richedit1. Lines. add (' Длина очереди передачи 2: '+inttostr (SQueue2. Length));TObrabSend2<=Time thenSQueue2. Length>0 then { очередь не пуста }

begin. richedit1. Lines. add ('Началась передача сообщения по линии 2. ');

MsgPtr: = OutQueue (SQueue2);

TwaitSend2: =TwaitSend2+Time-MsgPtr^. inTime;

t: =RangeRnd (15,5);

TworkSend2: =TworkSend2+t;: =Time+t;(MsgPtr,SQueue2. Size);(TobrabSend2,P2);(ObrabotSend2);;;UserInit; { процедура инициализации переменных }: =0;: = 0;: =0;: =0;: =0;: =0;: =0;: =0;: =0;: =0;: =0;: =0;: =0;: =0;: =0;(LBase,Sizeof (MsgSpec)); { инициализация очереди }(SQueue1,Sizeof (MsgSpec));(SQueue2,Sizeof (MsgSpec));

Shedull (0,P1); { инициализация календаря };UserStat; { процедура выдачи статистики }

begin. RichEdit4. Lines. clear;. richedit4. Lines. add ('Поступило: '+inttostr (Vsego) +' сообщений. ');. richedit4. Lines. add ('Обработано: '+inttostr (Obrabot) +', т. е: '+floattostrf ( (Obrabot/Vsego) *100,ffGeneral,3,2) +'% сообщений. ');. richedit4. Lines. add ('Вероятность отказа: '+floattostrf ( (Otkaz/Vsego) *100,ffGeneral,3,2) +'%. ');. richedit4. Lines. add ('Среднее время ожидания в очереди: '+floattostrf ( (Twait/Vsego),ffFixed,8,5));obrabotSend1>0 then. richedit4. Lines. add ('Среднее время ожидания в очереди на передачу 1: '+floattostrf ( (TwaitSend1/ObrabotSend1),ffFixed,8,5));obrabotSend2>0 then. richedit4. Lines. add ('Среднее время ожидания в очереди на передачу 2: '+floattostrf ( (TwaitSend2/ObrabotSend2),ffFixed,8,5));. richedit4. Lines. add ('Загрузка оборудования: '+floattostrf ( (Twork/Time) *100,ffFixed,3,2) +' % ');. richedit4. Lines. add ('Загрузка линии передачи 1: '+floattostrf ( (TworkSend1/Time) *100,ffFixed,3,2) +'% ');. richedit4. Lines. add ('Загрузка линии передачи 2: '+floattostrf ( (TworkSend2/Time) *100,ffFixed,3,2) +'% ');

end;UserCheck: boolean; {Функция проверки окончания моделирования}

begin: =false;Time>10000 then UserCheck: =true; { Время работы 10 секунд };start;

{F-}{ программа }

ActMatr [P1]. ActPtr: =@Message1; { настройка адресов блоков }[P2]. ActPtr: =@Obrab;[P3]. ActPtr: =@Send1;[P4]. ActPtr: =@Send2;[P1]. Name: ='Сообщ1';[P2]. Name: ='Обработ. ';[P3]. Name: ='Перед1';[P4]. Name: ='Перед2';

UInitPtr: =@UserInit; { настройка адреса процедуры инициализации}: =@UserStat; { настройка адреса процедуры статистики }: =UserCheck; { задание имени функции проверки условия }

SIMULATE; { вызов имитатора };.

Похожие работы на - Моделирование работы узла коммутации сообщений

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!