Идеальным примером кольцевой очереди в вычислительной систе-
мы является буфер клавиатуры в Базовой Системе Ввода-Вывода ПЭВМ
IBM PC. Буфер клавиатуры занимает последовательность байтов памя-
ти по адресам от 40:1E до 40:2D включительно. По адресам 40:1A и
40:1C располагаются указатели на начало и конец очереди соответс-
твенно. При нажатии на любую клавишу генерируется прерывание 9.
Обработчик этого прерывания читает код нажатой клавиши и помещает
его в буфер клавиатуры - в конец очереди. Коды нажатых клавиш мо-
гут накапливаться в буфере клавиатуры, прежде чем они будут про-
читаны программой. Программа при вводе данные с клавиатуры обра-
щается к прерыванию 16H. Обработчик этого прерывания выбирает код
клавиши из буфера - из начала очереди - и передает в программу.
Очередь является одним из ключевых понятий в многозадачных
операционных системах (Windows NT, Unix, OS/2, ЕС и др.). Ресурсы
вычислительной системы (процессор, оперативная память, внешние
устройства и т.п.( используются всеми задачами, одновременно вы-
полняемыми в среде такой операционной системы. Поскольку многие
виды ресурсов не допускают реально одновременного использования
разными задачами, такие ресурсы предоставляются задачам поочеред-
но. Таким образом, задачи, претендующие на использование того или
иного ресурса, выстраиваются в очередь к этому ресурсу. Эти оче-
реди обычно приоритетные, однако, довольно часто применяются и
FIFO-очереди, так как это единственная логическая организация
очереди, которая гарантированно не допускает постоянного вытесне-
ния задачи более приоритетными. LIFO-очереди обычно используются
операционными системами для учета свободных ресурсов.
Также в современных операционных системах одним из средств
взаимодействия между параллельно выполняемыми задачами являются
очереди сообщений, называемые также почтовыми ящиками. Каждая за-
дача имеет свою очередь - почтовый ящик, и все сообщения, отправ-
ляемые ей от других задач, попадают в эту очередь. Задача-владе-
лец очереди выбирает из нее сообщения, причем может управлять
порядком выборки - FIFO, LIFO или по приоритету.