Сафоненко Практикум по интерфейсам последователной передачи 2012
.pdfE(ν) – среднее число поступлений за время обслуживания в системе с бесконечной очередью, меньше единицы, так как в системе установилось состояние равновесия.
Из определения единичной функции u(n) , следует, что равно вероятности того, что система занята, т.е. ρ:
∞ |
∞ |
E(u(n)) = ∑ |
(u(n) pn) = ∑ pn = P(n > 0) ≡ρ. |
n=0 |
n=1 |
Здесь pn , как и везде, – вероятность того, что система находится в
состоянии n. Чтобы найти E(n), воспользуемся следующим приемом: возведем в квадрат обе части равенства (29), возьмем математические ожидания и опять положим j → ∞, а значит
E(n j) = E(n j−1):
n j =n j−1−u(n j−1) +ν j ,
E(n2) = E(n2) + E(u2) + E(ν2) − −2* E(n u(n)) + 2E(n ν) − 2E(ν u(n)).
Заметив, что E(u 2) = E(u) = ρ и E(nu(n)) = E(n) , что следует из определения функции u(x) . Пусть νj – число поступлений за время обслуживания j-го пакета не зависит от nj –количества пакетов в
системе в момент ( j −1), тогда |
E(nν) = E(n) + E(ν) и |
E(ν u) = |
|
=E(u)+E(υ). Получим: |
|
|
|
0 = ρ + E(ν2) − 2E(n) + 2E(n) ρ − 2ρ2. |
|
||
Вынесем E(n) за скобку, учтем, что E(ν) = E(u(n)) =ρ: |
|
||
ρ |
σν2 |
(30) |
|
E(n) = 2 + |
|
, |
|
2(1−ρ) |
σν2 = E(ν2 ) − E 2 (ν) по определению дисперсии. Определяя условную вероятность P (ν = k|τ) как вероятность поступлений k требований в течение τ секунд, с учетом выражение p(k) = (λT )k e−λT k ! для распределения Пуассона:
111
|
|
∞ |
|
|
∞ |
(λτ)k e−λτ f |
|
|
||
|
P(ν = k) = ∫ P(ν = k | τ) f (τ) dτ = ∫ |
(τ) dτ; |
|
|||||||
|
|
0 |
|
|
0 |
|
k ! |
|
|
|
|
k |
∞ |
|
|
∞ |
|
|
∞ |
k −1 |
|
|
λ |
∫(τ)k e−λτ f (τ) dτ =∫e−λτ |
f (τ) dτ ∑ |
((λτk −)1)!; |
(31) |
|||||
|
(k −1)! |
|||||||||
|
|
0 |
|
|
0 |
|
k=1 |
|
|
|
|
|
|
|
|
∞ |
|
|
|
|
|
|
|
|
E(ν) = ∑kP(ν = k). |
|
|
|
|
|||
|
|
|
|
|
k =0 |
|
|
|
|
|
|
|
∞ |
(λτ) |
k−1 |
|
|
|
|
|
|
Учитывая, что ∑ |
1)! |
=exp(λτ), |
|
|
|
|
|
|||
|
|
k=1 |
(k − |
|
|
|
|
|
|
|
|
|
|
∞ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
E(ν) = ∫ f (τ) λτ dτ =λE(τ). |
|
|
|
|||||
|
|
|
|
0 |
|
|
|
|
|
|
Уже известно, что E 2 (ν) = (λE(τ))2 = ρ2, |
осталось найти величи- |
|||||||||
ну E(ν2). |
|
|
|
|
|
|
|
|
|
|
Используя определение E(ν2) и формулу (31), |
выполнив ряд |
|||||||||
|
|
|
|
|
|
|
∞ |
2 |
|
|
преобразований и используя тот факт, |
что |
∑ k |
ak = (a2 + a) ea, |
k=0 k !
получим искомое выражение:
∞
E(ν2) =∑k 2P(ν = k) =λ2E(τ) =λ2E(τ2) +ρ.
k =0
Дисперсия ν в результате равна:
σν2 = E(ν2 ) − E 2 (ν) = λ2 E(τ2 ) + ρ − λ2 E 2 (τ) = λ2σ2 + ρ.
Подставив ее значение в (30) и преобразовав, получим результат:
|
|
|
|
|
ρ |
|
|
|
|
|
ρ |
|
|
|
2 |
2 |
|
|
|
|
|
|
|||
E(n) = |
|
|
|
|
|
|
|
1 |
− |
|
|
(1 |
−μ σ |
|
|
) . |
|
|
(32) |
||||||
1 |
−ρ |
2 |
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
С учетом формулы Литтла: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
E(n) |
|
|
1 μ |
|
|
|
|
ρ |
|
|
2 |
|
2 |
|
|
|
||||||||
E(T) = |
|
|
|
|
= |
|
|
|
|
|
1 |
− |
|
|
(1 −μ |
|
|
σ |
|
) |
, |
(33) |
|||
λ |
|
|
|
1 |
−ρ |
2 |
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112
где ρ опять задается в виде λμ =λ E(τ) : λ – средняя скорость пуассоновских поступлений, а E(τ) =1μ – среднее время обслужива-
ния. Параметр σ2 – дисперсия распределения времени обслуживания.
Сравним результаты с полученными ранее для случая М/М/1. Различие равенств заключается только в поправочном коэффициен-
те. Он зависит от отношения дисперсии σ2 распределения времени обслуживания к квадрату среднего значения 1 / μ2. Вспомним,
что дисперсия показательного распределения σ2 =1/ μ2. Подста-
вив это значение дисперсии в равенства (33), приведем уравнение к результатам для системы М/М/1.
Рассмотрим частный случай, когда все поступления требуют одного и того же времени обслуживания 1/μ. Тогда σ2 = 0, и среднее
количество пакетов в системе: |
|
ρ |
|
|
ρ |
|
|
|
|
E(n) = |
|
|
|
|
|||||
|
1− |
2 |
|
, |
(34) |
||||
|
|||||||||
|
|
1−ρ |
|
|
|
|
|
||
среднее время задержки в системе: |
|
|
|
|
|
|
|||
E(T) = |
1 / μ |
− |
ρ |
|
|
||||
|
1 |
|
. |
|
|
||||
|
1−ρ |
|
2 |
|
|
||||
Подставляя значения для |
|
текущей |
|
задачи |
μ = 2000 пак/c и |
ρ = 0.75, получим E(n) = 1.875 пакета , E(T) =0.00125 с.
Если сравнить результаты для системы M/G/1 с результатами для системы M/M/1, то видно, что M/G/1 работает эффективнее, так как время задержки в системе стало в два раза меньше (табл. 8).
Система с фиксированным временем обслуживания называется системой M/D/1 (от determine – определять). Таким образом, это частный случай системы M/G/1 с наименьшей возможной длиной очереди и задержкой на обработку.
Для анализа примем дисперсию равной σ2=10−7 используя условие σ2<1μ2 = 25 10 −8 . Используя формулу (11) для расчета
113
средней длины очереди E(n) = |
ρ |
|
1− |
ρ |
(1−μ2σ2 ) |
, получаем |
|
2 |
|||||
|
1−ρ |
|
|
|
σ2*μ2 =0.4, E(n) = 2.325.
По формуле Литтла: E(T) = E(n)/λ = 2 мс.
Теперь приравняем дисперсию распределения времени обслуживания: σ2 =10−6. Это больше, чем 1/ μ2. В этом случае σ2*μ2 =4,
E(n) = 6.375, |
E(T) = 6 мс. |
|
|
|
Таблица 8 |
||
|
Сравнительные результаты для систем M/M/G |
||||||
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
σ2 μ2 |
E(n) |
|
E(T) |
|
σ2 = 0 |
|
0 |
1.875 |
|
1 |
|
|
σ2 =10−7 |
<1 μ2 |
|
0.4 |
2.325 |
|
2 |
|
σ2 = 25 10−8 (М/М/1) |
|
1 |
3 |
|
2 |
|
|
σ2 =10−6 |
<1 μ2 |
|
4 |
6.375 |
|
6 |
|
Найдем среднее время ожидания в очереди:
E(W ) = E(T ) −1/ μ = 0.00075 с.
Для М/М/1 E(W) = 0.0015 с.
В полудуплексном и дуплексном режимах работы системы M/G/1 время соединения:
Tc =3 Tport +2 Ttransfer +2E(T) =
= 3 5 10−5 + 2 3.375 10−7 + 0.0025 = 2.65 мс.
(В М/М/1 время соединения равно 4.15 мс). Таким образом, в дуплексном режиме информации передается в два раза больше.
Расчеты времени соединения для стандартных скоростей приведены в табл. 9.
В результате сравнения двух типов систем (М/М/1 и М/G/1) можно отметить следующее:
• при увеличении σ2, σ2 >1 / μ2 увеличиваются средняя длина очереди и время ожидания;
114
• при σ2 <1 / μ2 средняя длина очереди и время ожидания по
сравнению с соответствующими характеристиками системы М/М/1 уменьшаются;
• при значениях ρ << 1 величины E(n) и E(T) для систем M/M/1 и M/G/1 сравнимы;
• при ρ → 1 результаты для системы M/D/1 отличаются от соответствующих результатов для М/М/1 на 50 %.
|
Таблица 9 |
|
Время соединения для стандартных скоростей |
||
|
|
|
Стандартные скорости |
Соответствующее время соединения |
|
RS-232, Кбит/с |
в системе М/G/1, Tc, мс |
|
19 |
2.8 |
|
28 |
2.67 |
|
32 |
2.65 |
|
56 |
2.59 |
|
Заметим, что в системе общего вида M/G/1 с бесконечной очередью независимо от закона распределения времени обработки, характерна одинаковая тенденция при ρ = λ/μ → 1: системы с большей дисперсией распределения времени обслуживания характеризуются большей длиной очереди и временем задержки. Рост дисперсии повышает вероятность появления пакета с продолжительным временем обслуживания, которое приведет к большей скученности.
Примеры
Пример 1
Рассмотрим модель интерфейса RS-232. Одно устройство передает в случайные моменты времени случайные числа. Второе устройство через равные промежутки времени опрашивает входной буфер на предмет наличия данных и, в случае их наличия, считывает их. И интервал времени между передачей данных, и сами передаваемые данные распределены по равномерному закону.
115
Для генерации случайных чисел, распределенных по равномерному закону будем использовать функцию rand(1).
Для работы создадим три m-файла: main.m, trm1.m, trm2.m.
Файл main.m:
function main %Главная функция: подготовка портов и запуск обмена
global com1 com2 period aprox rd tmrsend_period;
period=0.1; %периодчтения данных
aprox=100; %точность генерации данных и периода %передачи данных – 0.01
rd=0; %обнуление массивов rd и tmrsend_period tmrsend_period=0; %необходимо для того, чтобы при
%повторномвызове программы %удалялисьпредыдущиеданные
com1=serial('com3'); %создание объектапорта com2=serial('com4'); %создание объектапорта com1.timerfcn=@tmr1; %назначение функции для
%передачи данных %вызывается по событиюсрабатывания таймера)
com2.timerfcn=@tmr2; %назначение функции для
%приема данных (вызываемой по %срабатываниютаймера)
com2.timerperiod=period; %установление периода
%обмена данными fopen(com1); %открытие порта fopen(com2); %открытие порта
pause(60); %имитация работы фоновой программы %втечении периода60 секунд
fclose(com1); %закрытие порта fclose(com2); %закрытие порта delete(com1); %удаление объектапорта
116
delete(com2); %удаление объектапорта clear com1; %удаление переменной com1 clear com2; %удаление переменной com1 % выводграфическихобъектов figure(1); %на первомграфике....
rd=create_distribution(rd,0,aprox);
plot_F(rd,'Распределение величин передаваемых значений'); %...строится Распределение величин
%передаваемых значений figure(2); %на втором графике...
tmrsend_period=create_distribution(tmrsend_period,0,aprox); plot_F(tmrsend_period,'Распределение интервалов передачи');
%...строится Распределениеинтервалов %передачи
function plot_F (P, plot_title) %функция принимает массив слу-
чайных чисели %строит график плотности распределение. Второй
%принимаемый параметр – имя графика
plot(1:numel(P),P,'k'); %строимграфик grid on; %включаемсетку title(plot_title); %название графика xlabel('x'); %названиеабсциссы ylabel('F_x'); %название ординаты
function f=create_distribution (rnd, offset, aprox) %функция формирует матрицу %случайныхчисел. Входные значения: %случайныечисла, распределение %которых следует оценить
global j cnt;
cnt=0; %очистка массиваcnt для возможности %повторного запуска
117
rnd_sort=sortrows(rnd'); %сортировка значений...
rnd_sort=rnd_sort'; %...матрицы по возрастанию
for i=1:(max(rnd_sort)+offset)*aprox %обнуление...
cnt(i)=0; %...массива cnt end
j=1; %счетчик
rnd_sort=[rnd_sort 0]; %добавление крайнего
%элемента необходимого для обработки
for i=2:numel(rnd_sort) %цикл, который измеряет
%относительные частоты вхождения в совокупность повторяющихся чисел
if rnd_sort(i) == rnd_sort(i-1) && i < numel(rnd_sort) %так как числаупорядочены, то количество
%равных чисел суммируем в счетчике j=j+1; % увеличиваем счетчик
else %иначе...
cnt(floor((rnd_sort(i- 1)+offset)*aprox+1))=j/(numel(rnd_sort)-1); %находим вероятность наблюдения чисел
j=1; %«сбрасываем» счетчик
end
end
sum=0; %устанавливаемначальное значение
for i=1:numel(cnt) %находим распределение sum=sum+cnt(i);
f(i)=sum; %f(x) равное вереоятноститого, %что x<i
end
Файл tmr1.m:
function tmr1 (object, event) %функция, обработки срабатыванию таймера
118
%первого порта. Выполняет роль генератора м передатчикаслучайных чисел.Входные данные-
%стандартные для функции события %объекта serial
global com1 period aprox tmrsend_period;
var=ceil(rand(1)*100); %генерация случайного числа в %интервале 0~100
fwrite(com1,var); %вывод(запись)числа в %порт com1
tmp=ceil(rand(1)*period*aprox)/aprox; %генерация
%случайного числа винтервале 0~0.1 с %точностью0.01
if tmrsend_period(1)==0 %если функция tmr1 %вызывается впервые, то это значение %будет нулевым
tmrsend_period=tmp; %тогда первымзначением %матрицы tmrsend_period будет tmp
else
tmrsend_period=[tmrsend_period tmp]; %иначе
%в матрицу будет добавлено значение tmp
end
fclose(com1); %закрытие порта(изменять timerperiod %можно только на закрытом порте) com1.timerperiod=tmp; %изменениеинтервала вызова
%данной функции fopen(com1); %открытие порта
Файл tmr2.m:
function tmr2 (object, event) %функция обработки срабатыванию таймера
%второго порта. Выполняет роль приемника данных
119
%Входные данные – стандартные для функции события %объекта serial
global com2 rd;
while com2.bytesavailable>0 %если впорту есть
%данные...
if rd(1)==0 %если функция tmr2
%вызывается впервые, то это значение %будет нулевым
rd=fread(com2,1); %тогда первым значением %матрицы rd будет 1 байт, прочитанный
%из com2
else
rd=[rd fread(com2,1)]; %иначе
%этот прочитанный байт будет добавленв %матрицу
end
end
В результате работы программы, по истечении 60 секунд, будут выведены графики. На рис. 25 и рис. 26 приведены результаты расчетов.
Рис. 25. Тест равномерности распределения: результат моделирования
120