Система обработки сообщений с ограниченным временем прохождения
Министерство образования и науки Российской Федерации
Федеральное
агентство по образованию
Кафедра автоматизированных систем
наименование
кафедры
Допускаю к защите
_____ Препод ____
должность, И.О. Фамилия
Система массового облуживания
наименование
темы
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к
курсовому проекту
по дисциплине
Моделирования
системы
Выполнил студент группы ________ ________ ______________________
шифр подпись
И.О. Фамилия
Нормоконтролер _________ _______ ___ _____________ ____
должность подпись
И.О. Фамилия
Курсовой проект защищен
с оценкой ________
Город 2011 г
ИРКУТСКИЙ
ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
ЗАДАНИЕ
НА КУРСОВОЕ
ПРОЕКТИРОВАНИЕ (КУРСОВУЮ РАБОТУ)
По курсу ______ Моделирование систем____________________
Студенту _______ ____________ ______________
(фамилия, инициалы)
Тема проекта СИСТЕМА ОБРАБОТКИ СООБЩЕНИЙ С ОГРАНИЧЕННЫМ ВРЕМЕНЕМ ПРОХОЖДЕНИЯ
В систему обработки поступают сообщения по одному через 3±1 с, накапливаясь, если необходимо, в буфере емкостью в два сообщения (при отсутствии места в буфере сообщение теряется). Обрабатывается одно сообщение в ЭВМ за 5±2 с, если оно ожидало в буфере не более 8 сек. (иначе оно также теряется).
Разработать
концептуальную и программную модели
системы. Экспериментально определить
коэффициент потерь, загрузку буфера
и ЭВМ, среднее значение и гистограмму
времени прохождения сообщений
через систему. Найти зависимость
этих показателей от емкости буфера.
Оценить для исходной системы
минимальное модельное время, обеспечивающее
достоверность результатов с
погрешностью не хуже ±5%.
Рекомендуемая
литература____________________
______________________________
Графическая
часть на _________ листах
Дата
выдачи задания “______” __________________________2011
г.
Дата
представления проекта
Руководитель курсового проектирования ________________
Оглавление
1. Введение 5
2. Общие теоретические сведения 5
3. Математическая модель решения поставленной задачи. 6
4. Блок-схема алгоритма решения задачи 9
5. Руководство пользователя. 10
6. Анализ результатов и выводы 11
7. Список использованной литературы. 12
Приложение А 13
1. Введение
СИСТЕМА
ОБРАБОТКИ СООБЩЕНИЙ С
В систему обработки поступают сообщения по одному через 3±1с., накапливаясь, если необходимо, в буфере емкостью в два сообщения (при отсутствии места в буфере сообщение теряется). Обрабатывается одно сообщение в ЭВМ за 5±2с., если оно ожидало в буфере не более 8 сек. (иначе оно также теряется).
Разработать концептуальную и программную модели системы. Экспериментально определить коэффициент потерь, загрузку буфера и ЭВМ, среднее значение и гистограмму времени прохождения сообщений через систему. Найти зависимость этих показателей от емкости буфера. Оценить для исходной системы минимальное модельное время, обеспечивающее достоверность результатов с погрешностью не хуже ±5%.
В системах подобного рода буфер может способствовать снижению количества потерянных сообщений, но размер буфера не может быть бесконечным, поэтому в каждом конкретном случае требуется определение размера буфера, максимально соответствующего конкретной поставленной задаче.
2. Общие теоретические сведения
Системы
массового обслуживания представляют
разновидность вероятностных
Рис. 1. Структура СМО
Промежутки времени, через которые поступают объекты, и время обслуживания, хотя и могут быть регулярными, но, как правило, носят случайный характер. При массовом поступлении объектов в систему обслуживания могут возникать очереди.
Процессы массового обслуживания типичны для связи (телефон, телеграф, почта), транспорта, производственных процессов (ремонт и обслуживание оборудования, сборочные линии), преобразования информации в ЭВМ и т.п.
В любом случае составными элементами процесса массового обслуживания являются:
- входящий поток;
- очередь;
- система пунктов обслуживания;
- выходящий поток.
Независимо
от конкретной природы и характера
объектов их называют требованиями (или
заявками). Входящий поток требований
рассматривается как
Различают потоки однородных и неоднородных событий. Однородный поток событий характеризуется только моментами наступления этих событий (вызывающими моментами) и задается последовательностью , где tn — момент наступления п-го события — неотрицательное вещественное число. Однородный поток также может быть задан в виде последовательности {tn} промежутков времени между n-м и (n-1)-м событиями, которая однозначно связана с последовательностью вызывающих моментов { tn }, где т.е. .
Поток неоднородных событий задается последовательностью , где - вызывающие моменты; - набор признаков события (принадлежность к тому или иному источнику заявок, наличие приоритета, возможность обслуживания тем или иным типом канала и т.п.).
Структура очередей ^поступление из них требований на обслуживание определяются как свойствами и возможностями систем, так и установленными правилами прохождения требований через системы.
Требования могут выполняться
• в порядке поступления (операции на конвейере);
• с приоритетом;
• в случайном порядке (отбор образцов для статистического анализа);
• в порядке первого очередного поступления при освободившемся канале обслуживания (прием вызова телефонной станцией).
Очереди могут ограничиваться по длине, т.е. по числу заявок в них, и по времени ожидания. Основной характеристикой очереди является время ожидания. Система пунктов обслуживания может иметь различную организацию: с последовательными, параллельными и комбинированными каналами. В зависимости от поступления требований и образования очередей система может изменять свою организацию.
3. Математическая модель решения поставленной задачи.
При анализе цифровых систем связи наиболее важными характеристиками являются средний объем использования буфера и среднее время пребывания пакета в системе. Конкретизируем данные понятия. Для этого рассмотрим цифровую систему, состоящую из буфера способного хранить очередь бесконечной длины, и сервера обрабатывающего поступающую на его вход информацию (рис. 2).
Рис. 2. Схема односерверной цифровой системы
Входную нагрузку, т.е. число пакетов поступивших на вход такой системы за время t, обозначим через a(t), а число обслуженных пакетов через b(t). Тогда общий объем данных, находящихся в системе в момент времени равен:
Очевидно, что общее время, проведенное всеми заявками в системе за время t, можно вычислить как площадь под графиком функции N(t):
Анализ данного выражения показывает, что если функцию γ(t) разделить на время интегрирования t, то получим среднее число пакетов, находящихся в системе:
Если же функцию γ(t) разделить на общее число поступивших пакетов за время t, то можно получить среднее время нахождения пакета в системе:
Из последних двух выражений следует, что:
где - интенсивность входного потока. Если в системе связи имеет место стационарный режим работы, то полученное выражение оказывается не зависимым от времени t и может быть записано в виде:
Данная
формула описывает взаимосвязь между
двумя важнейшими характеристиками цифровых
систем, которая означает, что среднее
число пакетов в системе пропорционально
средней интенсивности входного потока
и среднему времени пребывания пакета
в системе. Данное выражение играет большую
роль при анализе цифровых систем связи.
При этом оно остается справедливым при
любых распределениях входного потока
и времени обслуживания. Впервые доказательство
этого факта дал Дж. Литтл, поэтому данное
соотношение называется формулой Литтла.
Интересным является также тот факт, что если в цифровой системе рассматривать только буфер данных, то вид формулы Литтла сохраняется, меняется только смысл переменных: - средняя длина очереди; W - среднее время пребывания пакета в очереди:
И наоборот, если рассматривать только сервер, то формула Литтла принимает следующий вид:
где - среднее число пакетов на сервере (или серверах); - среднее время обработки на сервере одного пакета. Причем общее среднее время нахождения пакета в системе равно:
4. Блок-схема алгоритма решения задачи
5. Руководство пользователя.
После запуска программы откроется окно, представленное на рис. 3.
Рис. 3. Окно программы
Установите необходимую ёмкость буфера и нажмите на кнопку START.
После нажатия на кнопку начнется процесс моделирования системы, результат работы представлен на рис. 4.
Рис. 4. Результат работы программы
6. Анализ результатов и выводы
По результатам тестирования можно сделать следующие выводы:
- Самым эффективным размером буфера для моделируемой системы является буфер размером в 2. При увеличении размера начинает резко расти количество пакетов, потерянных из-за простоя в буфере.
- Размер буфера более 4 нецелесообразен, так как при заданных временных параметрах минимальное время поступления пакетов – 2 секунды. Но учитывая, что пакет не может храниться более 8 секунд, в буфере не может храниться сообщений больше, чем 4.
- Минимальное модельное время, обеспечивающее необходимую достоверность результатов, экспериментально была определена и установлена на уровне 2000 секунд.
- Среднее время нахождения пакета в системе равно 9.1±0.35 секунд.
- Коэффициент потерь составляет ≈0.45 или 45%.
- Использование буфера в системах подобного рода дает максимальный эффект, когда среднее значение частоты поступления запросов значительно больше времени их обработки.
- Список использованной литературы.
- Советов Б.Я., Яковлев С.А. Моделирование систем. Практикум: Учеб. пособие для вузов по спец. "Автоматизир. системы обработки информ. И упр.".-М.:Высш.шк., 1999.-224 с.
- http://www.sernam.ru/t_51.php - Характеристики цифровых сетей.
- Петров А.В. Моделирования систем. Учебное пособие. 2000 г.
Приложение А
Листинг
программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, TeEngine,
Series, ExtCtrls, TeeProcs, Chart, ComCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Chart1: TChart;
Series1: TLineSeries;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Chart2: TChart;
Series2: TBarSeries;
TrackBar1: TTrackBar;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
procedure Button1Click(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
buffer, raspred:array[1..16] of integer;
count_out1, all_time,
max_buf, count_out2, count_work, count_in, buf_capacity,time:integer;
implementation
{$R *.dfm}
function getBufCount:integer;
var ii:integer;
cnt:integer;
begin
cnt:=0;
for ii:=1 to 16 do
begin
if buffer[ii]<>0 then inc(cnt);
end;
result:=cnt;
end;
procedure working(t:integer);
var y:boolean;
i:integer;
begin
y:=false;
i:=buf_capacity;
while y=false do
begin
dec(i);
if buffer[i]<>0 then
begin
Form1.Series1.AddXY(time,
y:=true;
inc(raspred[buffer[i]+t]);
all_time:=all_time+buffer[i]+
buffer[i]:=0;
end;
if i<=buf_capacity then
begin
y:=true;
end;
end;
end;
procedure addtobuf;
var
y:boolean;
i:integer;
begin
y:=false;
i:=0;
while y=false do
begin
inc(i);
if buffer[i]=0 then
begin
buffer[i]:=1;
y:=true;
end;
if i>=buf_capacity then
begin
if y<>true then
begin
y:=true;
inc(count_out1); //Ïîòåðÿííûé ïàêåò
Form1.Label1.Caption:=
end;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i, time_get, time_do, time_work:integer;
flag:boolean;
begin
Label1.Caption:='0';
Label4.Caption:='0';
Label8.Caption:='0';
Label10.Caption:='0';
Label12.Caption:='0';
Series1.Clear;
Series2.Clear;
randomize;
time:=0;
all_time:=0;
count_out1:=0;
count_out2:=0;
count_work:=0;
count_in:=0;
max_buf:=0;
i:=0;
time_work:=0;
for i:=1 to 16 do
begin
buffer[i]:=0;
raspred[i]:=0;
end;
flag:=true;
buf_capacity:=TrackBar1.
time_do:=1;
time_get:=1;
while time<2000 do
begin
randomize;
inc(time);
//Èçìåíåíèå âðåìåíè
for i:=1 to buf_capacity do
begin
if buffer[i]<>0 then buffer[i]:=buffer[i]+1;
end;
//Äîáàâëåíèå íîâîãî çàïðîñà,
if time=time_get then
begin
addtobuf;
time_get:=time_get+2+random(3)
inc(count_in);
Label10.Caption:=inttostr(
end;
//Óäàëåíèå çàïðîñîâ > 8 ñåêóíä
for i:=1 to buf_capacity do
begin
if buffer[i]>8 then
begin
buffer[i]:=0;
inc(count_out2);//Óâåëè÷èâàåì
Label4.Caption:=inttostr(
end;
end;
//Îáðàáîòêà çàïðîñîâ
if time=time_do then
begin
time_work:=3+random(5);
time_do:=time_do+time_work;
working(time_work);
inc(count_work);
Label8.Caption:=inttostr(
end;
if (max_buf<getBufCount) then max_buf:=getBufCount;
end;
for i:=4 to 14 do
begin
if raspred[i]<>0 then Series2.Add(raspred[i], inttostr(i), clRed);
end;
Label12.caption:=floattostr(
//showmessage('Ìàêñèìàëüíàÿ çàïîëíåííîñòü áóôåðà: '+inttostr(max_buf));
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
Label6.Caption:= inttostr(Trackbar1.Position);
end;
end.