"Информатика (базовый и углублённый уровни) (в 2 частях)", Поляков К.Ю., Еремин Е.А.
Система массового обслуживания принимает заявки и направляет их на обслуживание к одному или нескольким каналам. Заявки могут приходить в разные моменты, ожидать освобождения устройства или получать отказ, если места нет. Для анализа такой системы моделируют поступление заявок, длительность обслуживания и изменение очереди. Это помогает оценить число отказов, среднее ожидание и сравнить разные правила работы.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Система массового обслуживания (СМО) — система, в которую поступают заявки и где их обслуживают одно или несколько устройств. В ней выделяют входящий поток заявок, каналы обслуживания и очередь. Такое описание нужно, чтобы представить работу реального сервиса в виде понятной модели.
Заявка — объект или запрос, требующий обслуживания: например, телефонный вызов, автомобиль у кассы или задание для процессора. Заявки поступают не обязательно через равные промежутки времени, поэтому их появление часто считают случайным. Для каждой заявки можно задать момент поступления и длительность обслуживания.
Канал обслуживания — устройство или исполнитель, который обслуживает одну заявку за раз. Число каналов показывает, сколько заявок система может обслуживать одновременно: при двух каналах параллельно работают два устройства или сотрудника. От количества каналов зависят вероятность ожидания и скорость обработки потока.
Очередь — заявки, ожидающие свободного канала. В одной СМО ожидание разрешено без строгого ограничения, в другой длина очереди ограничена, а в системе с отказами ожидание вообще не допускается. Это правило определяет, сохранится ли занятая заявка до начала обслуживания.
Работа СМО начинается с поступления заявок в определённые моменты времени. Если промежутки между ними различаются, образуется случайный входящий поток, поэтому заранее нельзя точно сказать, сколько заявок окажется в системе к нужному моменту. Для модели достаточно задать последовательность моментов поступления или правило их случайной генерации.
Если все каналы заняты, судьба новой заявки определяется правилами системы. При разрешённом ожидании она помещается в очередь, чтобы не потерять запрос и использовать освободившийся канал позже. При отказах заявка уходит сразу, а при ограниченной длине очереди уходит только тогда, когда в очереди уже нет места.
Когда канал освобождается, система выбирает следующую заявку по принятому правилу, например в порядке поступления. Такой порядок влияет на время ожидания: заявка, пришедшая раньше, обычно получает преимущество, а при другом приоритете первой может обслуживаться более важная заявка. Поэтому при моделировании нужно явно задавать правило выбора, иначе результаты разных вариантов нельзя корректно сравнить.
Время обслуживания заявок может быть разным, поскольку запросы требуют неодинакового объёма работы. Канал занят от момента начала обслуживания до его завершения, а не просто до следующего шага модели. Поэтому учитывают и число заявок, и момент освобождения каждого канала: именно эти данные показывают, когда появится возможность принять следующую заявку.
Модель СМО имитирует последовательность событий: поступлений и окончаний обслуживания. После каждого события обновляют занятость каналов, состав очереди, число отказов и время ожидания. Затем по накопленным данным оценивают работу системы, например находят число обслуженных заявок, долю отказов или среднее ожидание.
| Характеристика | СМО с отказами | СМО с ожиданием | СМО с ограниченной очередью |
|---|---|---|---|
| Что происходит, если все каналы заняты | Новая заявка сразу получает отказ. | Заявка помещается в очередь. | Заявка ждёт, пока очередь не заполнена; при заполнении получает отказ. |
| Допускается ли ожидание | Нет. | Да, обычно без заданного предела. | Да, но число ожидающих заявок ограничено. |
| Как система принимает следующую заявку | Только если есть свободный канал. | Принимает заявку в очередь и позже передаёт её освободившемуся каналу. | Принимает её в очередь только при наличии свободного места. |
| Что можно оценивать при моделировании | Число и долю отказов, загрузку каналов. | Среднее ожидание, длину очереди, загрузку каналов. | Отказы из-за заполнения, ожидание и загрузку каналов. |
Сначала определите, что происходит с заявкой при занятых каналах, а затем выберите нужный столбец. Для сравнения вариантов смотрите не на один показатель: малая доля отказов может сопровождаться слишком долгим ожиданием.
В одноканальную систему заявки поступают в заданные моменты времени, а для каждой известна длительность обслуживания. Нужно определить, какие заявки начинают обслуживаться сразу, а какие ждут. Считаем, что очередь разрешена и заявки рассматриваются в порядке поступления.
Ответ получают в виде последовательности заявок с моментами начала обслуживания. Например, если первая заявка освободила канал в момент 5, а следующая пришла в момент 3, она ждёт до 5. Такой последовательный расчёт учитывает, что один канал не может обслуживать две заявки одновременно.
Нужно смоделировать работу одного канала за заданный промежуток времени, если моменты поступления и длительности обслуживания генерируются случайно. Требуется подсчитать обслуженные заявки и отказы. Предположим, что ожидание не разрешено, поэтому занятый канал сразу приводит к отказу.
После последнего события ответом будут два счётчика: число обслуженных заявок и число отказов. Если ожидание разрешить, вместо отказа пришлось бы добавлять заявку в очередь. Значит, одно изменение правила меняет алгоритм и итоговые показатели.
Нужно сравнить системы с несколькими каналами и разными ограничениями очереди на одном потоке заявок. Требуется выяснить, где меньше отказов и ожидание. Чтобы сравнение было честным, обе системы должны получать одинаковые моменты поступления и одинаковые длительности обслуживания.
Побеждает не обязательно вариант с самой короткой очередью: он может чаще отказывать заявкам. Итоговый ответ формулируют по выбранному критерию, например меньшее среднее число отказов при приемлемом ожидании. Серия одинаково организованных прогонов делает вывод устойчивее.
Считать, что заявка обслуживается сразу после поступления. Так делают, забывая проверить занятость всех каналов. Проверьте перед началом обслуживания, есть ли свободный канал или место в очереди.
Освобождать канал в момент поступления заявки. Канал остаётся занятым до окончания обслуживания, а не до появления нового запроса. Для проверки храните момент освобождения и сравнивайте с ним время поступления.
Не учитывать ограничение очереди. При заполненной очереди новая заявка может не попасть в систему, даже если ожидание в целом разрешено. После добавления заявки проверяйте текущую длину очереди и фиксируйте отказ при достижении предела.
Сравнивать варианты по одному случайному прогону. Один набор событий может случайно оказаться удобным для одной системы. Проведите серию прогонов с одинаковыми исходными потоками и сравните средние показатели.
Для построения модели нужны алгоритмы, циклы и условные операторы. Цикл перебирает события, а условия определяют, ждать заявке, получить отказ или начать обслуживание. Состояние каналов и очереди удобно хранить в переменных и структурах данных.
Случайный поток заявок моделируют генератором случайных чисел. Он помогает проводить вероятностные эксперименты с моментами поступления и длительностями обслуживания. Несколько запусков позволяют оценить не отдельный случай, а типичное поведение системы.
СМО применяются при анализе сервисов, транспорта, компьютерных сетей и вычислительных систем. Везде сравнивают ограниченные ресурсы с потоком запросов. Имитационное моделирование помогает проверить решение до изменения реальной системы.
Чем заявка отличается от канала обслуживания?
Заявка — это объект или запрос, которому требуется обслуживание. Канал обслуживания — устройство или исполнитель, который принимает и обслуживает заявку.
Что происходит с заявкой, если все каналы заняты?
Она может встать в очередь, получить отказ или покинуть систему, если очередь заполнена. Конкретный вариант зависит от правил выбранной модели.
Чем система с отказами отличается от системы с ожиданием?
В системе с отказами заявка не обслуживается, если все каналы заняты. В системе с ожиданием она сохраняется в очереди до освобождения канала.
Почему в модели нужно учитывать время обслуживания каждой заявки?
Канал освобождается не сразу, а только после завершения обслуживания. Разная длительность работы меняет моменты освобождения каналов, длину очереди и время ожидания.
Зачем повторять имитационный эксперимент несколько раз?
Поступления заявок и длительности обслуживания могут быть случайными. Несколько прогонов уменьшают влияние случайного отклонения и позволяют получить более надёжные средние показатели.
§ 11. Системы массового обслуживания