информационные каналы и среды
УДК 681.142.2+519.2
оптимальное управление N р^-очередями на бесконечном времени
Е. А. Аксенова,
канд. физ.-мат. наук, научный сотрудник А. В. Соколов,
доктор физ.-мат. наук, ведущий научный сотрудник
Институт прикладных математических исследований Карельского научного центра РАН
А. В. Драц,
студент Петрозаводский государственный университет
Исследуются методы представления п FIFO-очередей в памяти размером m единиц. Решаются задача оптимального разбиения памяти между очередями в случае последовательного циклического представления очередей и задача анализа связанного представления очередей. В качестве математических моделей предложены случайные блуждания по целочисленной решетке в различных областях п-мерного пространства. Задачи решаются с помощью аппарата регулярных цепей Маркова.
Ключевые слова — FIFO-очередь, связанный список, случайное блуждание, регулярные цепи Маркова.
Введение
Во многих приложениях требуется работа с несколькими FIFO-очередями, расположенными в общем пространстве памяти. Для этого применяют различные программные или аппаратные решения [1-3]. В данной статье предлагаются математические модели для последовательного циклического и связанного способов представления очередей [1]. В обоих способах представления для каждой очереди нужны два указателя на начало и конец. В первом способе элементы равных длин располагаются циклически в последовательных адресах участка памяти, выделенного очереди. Во втором каждая очередь представлена в виде односвязанного списка элементов, и переполнение памяти наступает тогда, когда список свободных элементов пуст и требуется включить элемент в какую-либо очередь. В обоих способах операции включения и исключения выполняются за время 0(1). В качестве критерия оптимальности рассмотрена минимальная доля потерянных элементов при бесконечном времени работы очередей. Эту величину разумно минимизировать, когда переполнение очереди является не аварийной, а стандартной ситуацией (здесь мы подчеркиваем, что в некоторых приложениях при переполнении очереди работа программы заканчивается, и тогда в качестве критерия оптимальности надо рассматривать максимальное среднее время до переполнения памяти). То есть если очередь занимает всю предоставленную ей память, то все последующие элементы, поступающие в нее, отбрасываются до тех пор, пока не появится свободная память (т. е. до тех пор, пока не произойдет исключение элемента из очереди). Такая схема применяется, например, в работе сетевых маршрутизаторов [3] в том случае, когда по мере увеличения трафика очередь на исходящем интерфейсе маршрутизатора заполняется пакетами. Такое поведение маршрутизатора называется
«сбросом хвоста». Потери пакетов приводят к нежелательному результату, поэтому число таких ситуаций необходимо свести к минимуму. Мы в этой работе строим математические модели в виде случайных блужданий по целочисленной решетке. Первоначально такие модели в виде случайного блуждания в треугольнике [4-7] были построены для решения задачи анализа процесса работы с двумя стеками, растущими навстречу друг другу [1]. В этих моделях предполагается, что на каждом шаге дискретного времени с заданными вероятностями происходят некоторые операции со стеками. Время выполнения операций — это не случайная величина, а константа, поэтому фиксированным является и шаг времени. Рассмотрены случаи последовательного представления очередей для п = 2 [8] и п = 3 [9]. В данной статье рассмотрены последовательный и связанный способы представления FIFO-очередей для случая произвольного п. Необходимо определить, как распределить память между очередями в последовательном способе организации и какой из способов организации очередей является оптимальным.
В работе будем придерживаться следующих обозначений: т — размер памяти; п — количество стеков и/или очередей в быстрой памяти;
рг — вероятность включения элемента в 1-ю очередь;
qi — вероятность извлечения элемента из Ьй структуры данных;
г — вероятность того, что не произойдет операции включения или извлечения;
кг — размер памяти, выделенной для очереди с номером i при последовательном представлении;
— текущая длина структуры данных с номером I;
I — отношение размера узла к размеру указателя (для связанного представления);
— доля времени, которую проводит очередь в состоянии «сброса хвоста».
Одна очередь на бесконечном времени
Рассмотрим одну FIFO-очередь, расположенную в быстрой памяти размером т. В каждый момент дискретного времени может произойти одна из следующих операций: включение элемента с вероятностью р, исключение элемента с вероятностью q, очередь не изменяет своей длины с вероятностью г, где р + q + г = 1. Если происходит включение элемента при полностью заполненной памяти, то он считается потерянным. Требуется определить долю времени, в течение которого происходят потери элементов, при бесконечном времени работы.
Для описания процесса работы построим однородную регулярную цепь Маркова [10] с т + 2 состояниями, где состояния с номерами 0, ..., т соответствуют количеству элементов, находящихся в очереди. Состояние т + 1 соответствует «сбросу хвоста», т. е. пока процесс находится в этом состоянии, происходит потеря поступающих в очередь элементов.
Пусть процесс находится в состоянии т + 1, т. е. очередь заполнила всю выделенную память и произошла попытка включения еще одного элемента. Тогда с вероятностью р процесс остается на месте, так как при попытке включения элемента
в переполненную очередь он будет потерян и для процесса блуждания ничего не изменится, с вероятностью q процесс перейдет в состояние т - 1, т. е. исключается элемент из переполненной очереди и появляется одна свободная позиция в памяти, с вероятностью г процесс перейдет в состояние т. Переход процесса из состояния х в состояние х' определяется следующими правилами:
х, х = 0;
р ,
X,
1, 0 < х < т;
х = т + 1;
х — 1, 1 < х < т ;
х — 2, х = т + 1;
х, 0 < х < т;
х — 1, х = т + 1.
Построим матрицу переходных состояний Р. Для данной цепи она имеет вид
Р =
+ Г р 0 0 . .0 0 0 0'
Ч г Р 0 . .0 0 0 0
0 Ч г Р .0 0 0 0
0 0 0 0 . Ч г Р 0
0 0 0 0 .0 Ч г Р
0 0 0 0 . .0 Ч г Р,
У построенной цепи Маркова существует предельный век-
тор а = (а0,
1), который удовлетворяет уравне-
нию аР = а. По закону больших чисел, значение ai является долей времени, которое процесс проводит в состоянии i. Тогда ат + 1 является долей времени, которое процесс проводит в состоянии «сброса хвоста» при бесконечном времени работы.
Построим систему уравнений для определения предельных вероятностей:
1 — (ч + г) —ч 0 0 .. 0 0 0 0 0
—Р 1 — г —ч 0 .. 0 0 0 0 0
0 —Р 1 — г —ч 0 0 0 0 0
0 0 0 0 • — Р 1 — г —ч 0 0
0 0 0 0 0 —Р 1 — г —ч —ч
0 0 0 0 0 0 —Р 1 — г —г
0 0 0 0 .. 0 0 0 —Р 1 — Р
а0 0
а1 0
«2 0
ат—2 = 0
ат—1 0
ат 0
ат+1 _ 0
а
а
а
X
Вычеркнем первую строчку и добавим условие нормировки а0 + а1 + ... + ат + ат + 1 = 1:
- р 1 — г —ч 0 . 0 0 0 0 0 ' ' а0 ' 0'
0 — Р 1 — г —Ч 0 0 0 0 0 а1 0
«2 0
0 0 0 0 • — р 1 — г —ч 0 0
0 0 0 0 0 —Р 1 — г —ч —ч ат—2 0
0 0 0 0 0 0 —Р 1 — г —г ат—1 0
0 0 0 0 0 0 0 —Р 1 1 Р ат 0
1 1 1 1 . 1 1 1 1 1 ^ ат+1 _ 1
Найдем ат + 1 по формуле Крамера: а столбцу:
т + 1 = Дт + 1 / Д. Разложим определитель Дт + 1 по последнему
^т+1 —
—р 1 — г —ч 0 .. 0 0 0 0 0
—р 1 — г —ч 0 .. 0 о О О
0 —р 1 — г —ч .. 0 0 0 0 0
0 —р 1 — г —ч 0 0 0 0
0 0 0 0 .. • — р 1 — г —ч 0 0
— 0 0 0 0 • — р 1 — г — ч 0
0 0 0 0 .. 0 —р 1 — г —ч 0
0 0 0 0 0 —р 1 — г —а
0 0 0 0 .. 0 0 —р 1 — г 0
0 0 0 0 0 0 — 1 1
0 0 0 0 .. 0 0 0 —р 0
0 0 0 0 .. 0 1 О о
1 1 1 1 .. 1 1 1 1 1
= (-р)
т+1
Для вычисления Д прибавим к первой строке строки с номерами 2, ..., т, ко второй — с номерами 3, ..., т и т. д. Учитывая равенство р + д + г = 1, получаем
—р 1 — г —Ч 0 .. 0 0 0 0 0 —Р Ч 0 0 . 0 0 0 0 0
0 —Р 1 — г —Ч •• 0 0 0 0 0 0 —Р Ч 0 . 0 0 0 0 0
0 0 0 0 .. • — р 1 — г —Ч 0 0 0 0 0 0 . • —Р Ч 0 0 0
0 0 0 0 .. 0 —Р 1 — г —Ч —Ч 0 0 0 0 . 0 —Р Ч 0 0
0 0 0 0 .. 0 0 —Р 1 — г —г 0 0 0 0 . 0 0 —Р Ч Ч
0 0 0 0 .. 0 0 0 —Р 1 1 Р 0 0 0 0 . 0 0 0 —Р 1 1 Р
1 1 1 1 .. 1 1 1 1 1 1 1 1 1 . 1 1 1 1 1
Рассмотрим случай р Ф q. Умножим первый столбец на q/p и прибавим ко второму столбцу, затем умножим второй столбец на q/p и прибавим к третьему. Продолжим эту операцию до столбцов с номерами т и т + 1. Потом столбец с номером т умножим на q/p и прибавим к столбцу с номером т + 2. Тогда
—р 0 0 0 . 0 0 0 0 0
0 —р 0 0 . 0 0 0 0 0
0 0 0 0 . • — р 0 0 0 0
0 0 0 0 . 0 —р 0 0 0
0 0 0 0 . 0 0 —р 0 0
0 0 0 0 . 0 0 0 —р 1 1 р
1 s2 ^ . ■ sm-2 ^—1 sm sm+1 sm+1
где — сумма геометрической прогрессии:
л£—1
—1
—1
Умножим столбец с номером т + 1 на (1 - р)/р и прибавим к столбцу с номером т + 2, после чего получим диагональную матрицу, поэтому окончательно определитель
1 — Р1
А — в
т+1
(—Р)т+1 —
т+1
—1
—1
-(—р)т+1 —
т+1
—1
Тогда
ат+1 '
хт+1
Ч — Р
Ч — Р
-(—Р)
т+1
т+1
—1
Если д = р, то si будет суммой арифметической прогрессии и si = i. Тогда
п - Р
^т+1 -, •
т + 1
Окончательно получаем
ат+1
я—р
, т+1
я_ — 1
і р.
р
+ 9 т + 1
я — р-
(*)
Последовательное представление очередей
Постановка задачи.
Рассмотрим ге FIFO-очередей, расположенных в быстрой памяти размером т. Для последовательного представления каждой очереди необходимо выделить ki единиц памяти, где k1 + ... + + kn = т. Если очередь занимает всю предоставленную ей память, то все последующие элементы, поступившие в нее, отбрасываются до тех пор, пока не появится свободная память.
Рассмотрим очередь с номером i. Вероятность того, что ее длина останется прежней, будет
П
П - г + Е (Pj + Яj)- 1-Рь-Я1-j-1,j^i
*
В этом случае долю времени Р1, которое процесс проводит в состоянии «сброса хвоста», для ^й очереди можно вычислить по формуле (*). Тог-
да общая доля времени, проведенного в состояниях «сброса хвоста»:
1-1
Задача заключается в том, чтобы минимизировать долю потерянных элементов при переполнении какой-либо из очередей. Другими словами, необходимо определить такие значения ^, i = = 1, 2, ..., п, чтобы доля времени, проведенного в состояниях «сброса хвоста», была минимальной.
Случай равных вероятностей.
Рассмотрим случай, когда р1 = Тогда доля
времени, проведенного в состояниях «сброса хвоста», равна
і—1 і
Таким образом, необходимо найти
п
, Рі
Ш1П ---
к-1 +.. .+кп —т,—і к, +1
^ Рі ^ к; +1'
дим
п
^ Рі ^ к, + 1'
Рассмотрим функцию
п—1
^ к..к,-1) -Е утг + ,
;=1к+1 т-Е ,-1 к +1
и найдем ее минимум при условии ^ > 0, i = = 1, 2, ..., ге-1, ^ + ... + kn-l < т. Функция F(kl, ^_1) дважды непрерывно-дифференцируема на рассматриваемом множестве:
77/ р1 | ри
£ь. —-----7ГП-------------77 ;
№+1)2 т-е::>^1)2
2 Рі
Т?! > ____
- ,, 3
2 рп
л+1)" т-^к,+1
3 ’
Т?!! ___
V,. - ■
2 рп
Найдем точку, подозрительную на экстремум, из условия Fк,. (к,кп—1) — 0:
Рі _ Рп
Г, 1 < і < п — 1.
Введем новые переменные у1 = ki + 1. Для каждого i извлечем квадратный корень из обеих частей уравнения. Учитывая, что обе части неотрицательные, получаем
- 4рП
1 < і < п — 1.
Рассмотрим уравнения при і = 1 и при і = 2:
Тл _
и \—'П—1
У1 т + п — Т 1—1 Уі
4р2 — 4рП
у2 т + п — Т 1=1 Уі
Вычтем второе уравнение из первого:
Получаем
— 0.
4р1 4р2
Уі У2
— Уі4р2 У 2 — /=^~ •
ЯР1
Аналогично выразим остальные переменные ^ через у1:
Уі4рЇ
Подставим в уравнение при і = 1:
Найдем у1:
Уі — -Уі
2 < і < га — 1.
4рП
Уі
и—і
Уі —
I-- / ,
т 1—1
(т + п)^[р
ТП—^
ЕТл
Получаем точку, подозрительную на экстремум:
к* — —1, 1 < і < п — 1.
‘ т—^ ~ <
Покажем, что эта точка является точкой минимума. Для этого по критерию Сильвестра нужно показать, что
. * т * ч т * ч -Г-.П ✓ т * т *
(к*...Ап—1) (к*.Ап—1) ... (к..Ап—і)
(А*...АП—1) К'2кг (кІ-,кІ_і) ... F4/Аn-1 (А1*.АП—1)
, * , *
> 0, 1< і < га — 1.
(к1,., к*—1) Fk2:kn-1 (к!.Ап*—1) ... (к*,., к*—1)
Введем обозначения
2 Рп _ А і ^ р II 2рі , 2 рл
- — I ^ ]. ркк —
77'' __
-
т
-Е п^+1
кікі з
(к +1)3
-е +1
= А + В.
Очевидно, что А > 0 и Ві > 0. Покажем, что определитель Д > 0, где
А + В А ... А
А; —
А А + В2 ... А
А А ... А + В;
, і >1.
По методу математической индукции:
1) база индукции i = 1: Д1 = А + В1 > 0;
2) пусть верно при i = ];
3) докажем при i = ] + 1:
А + В А ... А А
А А + В2 ... А А
д;+і -
А
А
А
А
А + В А А А
А А + В2 А А
А А . А + Ву А
А А А А
А + В А
А
+ В:
j+1
А + В А А 0
А А + В2 А 0
А А .. А + В 0
А А А В+1
і 0 А 0
0 В2 • А 0
— +
0 0 В А
0 0 0 А
А + В А А 0
А А + В2 А 0
А А .. А + В 0
А А А В+1
— АВі .. Ву + Ву*+іА: > 0.
Значит, точка (к*,к*—і) является единственной точкой минимума функции F(k1, ..., kn_1). Следовательно, в этой точке функция достигает своего наименьшего значения. Поскольку k■
и* и*
должны быть целыми, то значения % ,..., необходимо округлить до ближайшего целого и перебрать значения, удовлетворяющие условию k1 + ... + kn = т:
П—1
Ип — т — Е И* — т + п — 1 — і—1
— (т + п)Е г—1 4рІ = (т + п)4РП — і
Т,Пі—і4Рі Т,Пі—і4рі
Наименьшая доля времени, проведенного в состояниях «сброса хвоста»:
1
т + п
РР =у-^- = у
к ь+1 &
(Е пі=і4рі
ІРІ ^ Рі 1=1
т + п
Общий случай.
Введем обозначение
^т (А1’ Ап ) —
Ш1П
-...+й„ =
Е р*(к1) І—1
где Zm — доля времени, которое процесс проводит в состоянии «сброса хвоста», при оптимальном разбиении памяти размером т между очередями; р) — доля времени, в течение которого происходит потеря элементов только для ^й очереди при размере памяти ki.
Рассмотрим рекуррентную формулу
%т (*1, • • •, *п ) = ^т-1 (*1, •*п ) _
(рНь ) - Р*(к1 +1))'
Начальное значение Z0 равно [по формуле (*)]
го (0,.... 0) = Е-^^_ = Еп
■ тах
1<Кл
<к_
Рі
— 1
т. е. при отсутствии памяти любая попытка включения элемента в одну из очередей будет приводить к его потере.
Был реализован эффективный алгоритм решения задачи на основе предложенной модели динамического программирования, который за время О(тп) вычисляет оптимальное разбиение памяти и долю времени, проведенного в состояниях «сброса хвоста». Также была построена математическая модель этого процесса в виде случайного блуждания по целочисленному п-мер-ному параллелепипеду с вершиной в начале координат, ребрами, параллельными осям координат, и длинами ребер k1 + 1, ..., kn + 1. Гиперплоскости соответствуют состояниям «сброса хвоста». Была предложена нумерация состояний и на ее основе разработан алгоритм генерации соответствующей цепи Маркова и решения задачи с использованием результатов теории регулярных цепей Маркова. Этот метод решения задачи будет подробно изложен далее на примере анализа связанного представления очередей. Метод динамического программирования в данном случае приводит к более эффективному алгоритму.
Связанное представление очередей
При связанном представлении каждая очередь хранится в виде связанного списка, в кото-
ром 1/1-я часть памяти тратится на хранение указателей. Пусть Ш = m(1 - 1/1). В качестве математической модели рассмотрим блуждание по целочисленной п-мерной пирамиде с ребрами 0 < х1 < < Ш, 0 < х2 < Ш, ..., 0 < хп < Ши основанием х1 + х2 + ... + хп = Ш. Для каждого состояния (х1, х2, ..., хп) на плоскости х1 + х2 + ... + хп = Ш, т. е. когда вся память уже занята, введем состояние (х1;х2, ...,хп), соответствующее «сбросу хвоста». В это состояние можно попасть в случае попытки включить элемент в любую из очередей, когда вся память занята. Переход процесса из состояния (х1, х2, ..., хп) определяется по следующим правилам:
•)-
Рі
(. .., хі , . .., -
[(..., Хі +1,..., Xj, •), 0 < хі + . + хп < М;
!(•
,..., xj,...), хі +
(. . . , , . . . , Ху , . . .) -
- хп — М;
Чі
(. . ., Хі 1, . . ., Ху , . .), Хі < 0,
(. . . , Хі , . . . , Ху , . .), Хі ---- 0 ,
(. .., хі, . .., xj, ...)
(. .., хі , . .., х;, . .) -
>(. .., хі, . .., xj, . .), “>(. . ., Хі , . . ., Xj , . .);
Чі
(..., хі , ..., xj , ...)
(..., хі 1,..., xj,..хі > 0,
(..., хі,..., xj,..хі — 0,
(..., хі ,..., xj,. . ^ > (..., хі ,..., xj,..).
На плоскости х1 + х2 + ... + хп = М количество состояний «сброса хвоста»
(М + п — 1)!
С,
М
п+М—1
(п — 1)!М!
Перечислим все состояния области блуждания: (0, 0, 0, ..., 0, 0), (1, 0, 0, ..., 0, 0), ..., (М - 1, 0, 0, ..., 0, 0), (М, 0, 0, ..., 0, 0);
(0, 1, 0, ..., 0, 0), (1, 1, 0, ..., 0, 0), ..., (М - 2, 1, 0, ..., 0, 0), (М - 1, 1, 0, ..., 0, 0);
(0, М - 1, 0, ..., 0, 0), (1, М - 1, 0, ..., 0, 0);
(0, М, 0, ..., 0, 0);
(0, 0, 1, ..., 0, 0), (1, 0, 1, ..., 0, 0), ..., (М - 2, 0, 1, ..., 0, 0), (М - 1, 0, 1, ..., 0, 0);
(0, 1, 1, ..., 0, 0), (1, 1, 1, ..., 0, 0), ..., (М - 3, 1, 1, ..., 0, 0), (М - 1, 1, 1, ..., 0, 0);
(0, 0, М - 1, ..., 0, 0), (0, 0, М, ..., 0, 0);
(0, 0, 0, ..., 0, 1), (1, 0, 0, ..., 0, 1), ..., (М - 2, 0, 0, ..., 0, 1), (М - 1, 0, 0, ..., 0, 1);
(0, 1, 0, ..., 0, 1), (1, 1, 0, ..., 0, 1), ..., (Ш - 3, 1, 0, ...,
0, 1), (Ш - 2, 1, 0, ..., 0, 1);
(0, Ш - 2, 0, ..., 0, 1), (1, Ш - 2, 0, ..., 0, 1);
(0, Ш - 1, 0, ..., 0, 1);
(0, 0, 0, ..., 0, Ш).
Введем нумерацию этих состояний, начиная с 0. Для того чтобы построить матрицу переходных вероятностей, построим функцию F(X) = I,
X = (х,, х2, ..., хп), где X
1
, хп — текущие длины
очередей; I — номер состояния. Будем искать ее в виде
I х„
F(x1, ..., хп) = F(0, ..., 0, хп) + ^(0,
- F(0, ..., 0, хп)) + ... + ^(0, х2, х3,
- F(0, 0, х3, ..., хп-1, хп)) + ^(хх, х2, х3, ..., х
х„) - F(0,
''га-1
хп))’
"га-1, Хп) -■ х--Р хп) -«-Р
т. е. будем увеличивать значения аргументов, начиная с последнего, и вычислять, на сколько увеличится значение функции. Увеличение значения разности функций F(0, 0, ..., 0, хі, хі+1, ..., хп) - F(0, 0, ..., 0, 0, х;+1, ..., хп) зависит от номера і, от значения хі и от суммы хі+1 + ... + хп, т. е. от количества уже занятых ячеек памяти. Теперь пронумеруем состояния «сброса хвоста» таким образом, чтобы состоянию на плоскости х1 + х2 + . + + хп = М с меньшим номером соответствовало состояние «сброса хвоста» с меньшим номером.
На рисунке показан пример нумерации состояний при п = 2, М = 4. Для нахождения доли времени, проведенного в состояниях «сброса хвоста», необходимо найти предельный вектор а и просуммировать его компоненты с номерами от
)! (М + п — 1) (М + п — 1)!
до ----• В приведен-
(М +п п! М!
п! М!
(п — 1)! М!
ном примере необходимо найти сумму а15 + + а19.
+
■ Нумерация состояний при п = 2, М = 4
■ Таблица 1. М = 16, п = 5
г Р1 Р2 Р3 Р4 Р5 ?2 ?3 ?4 ?5 Р* 11 12 14 18
0 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.15 0.2273 0.1923 0.1786 0.1667
0 0.25 0.15 0.05 0.03 0.02 0.25 0.15 0.05 0.03 0.02 0.1208 0.2273 0.1923 0.1786 0.1667
0 0.3 0.03 0.15 0.1 0.05 0.05 0.03 0.05 0.04 0.03 0.61 0.6989 0.6923 0.6902 0.6886
0 0.05 0.2 0.05 0.04 0.03 0.3 0.2 0.15 0.1 0.05 0.01 0.012 0.0045 0.0027 0.0017
0 0.05 0.05 0.05 0.05 0.05 0.15 0.15 0.15 0.15 0.15 0.005413 0.0002506 0.000559 0.000113 0.000021
0 0.07 0.07 0.07 0.07 0.07 0.13 0.13 0.13 0.13 0.13 0.0249 0.0322 0.0168 0.0083 0.00395
■ Таблица 2. М = 16, п = 4
г Р1 Р2 Р3 Р4 ?1 ?2 ?3 ?4 Р* Р* Р2 11 12 14 18
0.2 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.08 0.08 0.1333 0.1143 0.1 0.089
0 0.44 0.02 0.02 0.02 0.44 0.02 0.02 0.02 0.1 0.06 0.1667 0.1429 0.125 0.1111
0 0.5 0.07 0.07 0.07 0.08 0.07 0.07 0.07 0.462 0.459 0.5964 0.5964 0.5964 0.5964
0 0.08 0.05 0.05 0.05 0.5 0.07 0.07 0.07 0.042 0.039 0.08 0.0677 0.0589 0.0517
0 0.15 0.08 0.05 0.02 0.35 0.2 0.1 0.05 0.0049 0.0061 0.0067 0.0022 0.00068 0.0000198
Численные результаты Был разработан комплекс программ для ЭВМ, который реализует вышеописанные алгоритмы нахождения доли времени, проведенного в состояниях «сброса хвоста». Приведем некоторые численные результаты. Сравним последовательное и связанное представление очередей с точки зрения доли времени, в течение которого происходят потери пакетов (табл. 1). В строке Р* указана минимальная доля времени, проведенного в состояниях «сброса хвоста», для последовательного представления. В строке 11 указана доля времени, проведенного в состояниях «сброса хвоста», для связанного представления, когда на связи тратится 1/2 часть памяти (размер информационной части равен размеру указателя), в строке 12 — когда на связи тратится 1/3 часть памяти (размер указателя равен 1/2 размера информационной части), в строке 14 — когда на связи тратится 1/5 часть памяти (размер указателя равен 1/4 информационной части), в строке 18 — когда на связи тратится 1/9 часть памяти (размер указателя равен 1/8 информационной части). На практике вероятности включения и исключения, которые считались известными, не всегда могут быть вычислены. В этом случае будет логичным разделить память поровну между всеми структурами данных в случае последовательного представления. В табл. 2 сравнивается связанное и последовательное представление в том случае, если память разделена поровну между очередями. В строке Р± указана доля времени, проведенного в состояниях «сброса хвоста», когда память разделена поровну между очередями, в строке /2 указана минимальная доля времени, проведенного в состояниях «сброса хвоста», когда память разделена оптимально. Строки 11, 12, 14, 18 такие же, как в табл. 1. Заключение Из приведенных таблиц видно, что связанное представление предпочтительнее использовать, если вероятности включения элемента в очереди меньше, чем вероятности исключения, и на связи тратится 1/3 часть памяти или меньше. В остальных случаях лучше использовать последовательное представление, даже если вероятностные характеристики очередей заранее неизвестны и разбиение памяти может быть неоптимальным. Работа выполнена при финансовой поддержке РФФИ, грант № 09-01-00330-а.
Литература 3. Боллапрагада В., Мэрфи К., Расс У. Структура операционной системы Cisco ЮS. — М.: Вильямс, 2002. — 208 с.
1. Кнут Д. Искусство программирования для ЭВМ. Т. 1. — М.: Вильямс, 2001. — 736 с. 2. Седжвик Р. Фундаментальные алгоритмы на С++. — Киев: Диасофт, 2001. — 688 с.
4. Соколов А. В. О распределении памяти для двух стеков // Автоматизация эксперимента и обработки данных: Сб. ст. / Карельский филиал АН СССР. Петрозаводск, 1980. С. 65-71. 5. Flajolet P. The evolution of two stacks in bounded space and random walks in a triangle // Lecture Notes 7. Аксенова Е. А., Соколов А. В. Оптимальное управление двумя параллельными стеками // Дискретная математика. 2007. № 1. С. 67-75. 8. Соколов А. В., Тарасюк А. В. Об оптимальном управлении циклическими FIFO-очередями // Системы управления и информационные технологии.
in Computer Science. 1986. Vol. 223. P. 325-340. 6. Louchard G., Schott R., Tolley M., Zimmermann P. Random walks, heat equation and distributed algorithms // Journal of Computational and Applied Mathematics. 1994. N 53. P. 243-274. 2005. № 3 (20). С. 29-33. 9. Аксенова Е. А. Оптимальное управление FIFO-очередями на бесконечном времени // Стохастическая оптимизация в информатике: Межвуз. сб. СПб.: СПбГУ, 2006. Вып. 2. С. 71-76.
/
уважаемые авторы!
С сентября 2ОО9 г. основные элементы статей, размещенные на платформе РУНЭБ, индексируются в крупнейшей поисковой системе Интернета Google.
На сайте РУНЭБ (http://www.elibrary.ru) доступна новая услуга — «обсуждение статьи». Авторы и читатели теперь могут вступить в диалог и ответить на вопросы и комментарии друг друга.