Очереди в вычислительных системах

Идеальным примером кольцевой очереди в вычислительной систе-

мы является буфер клавиатуры в Базовой Системе Ввода-Вывода ПЭВМ

IBM PC. Буфер клавиатуры занимает последовательность байтов памя-

ти по адресам от 40:1E до 40:2D включительно. По адресам 40:1A и

40:1C располагаются указатели на начало и конец очереди соответс-

твенно. При нажатии на любую клавишу генерируется прерывание 9.

Обработчик этого прерывания читает код нажатой клавиши и помещает

его в буфер клавиатуры - в конец очереди. Коды нажатых клавиш мо-

гут накапливаться в буфере клавиатуры, прежде чем они будут про-

читаны программой. Программа при вводе данные с клавиатуры обра-

щается к прерыванию 16H. Обработчик этого прерывания выбирает код

клавиши из буфера - из начала очереди - и передает в программу.

Очередь является одним из ключевых понятий в многозадачных

операционных системах (Windows NT, Unix, OS/2, ЕС и др.). Ресурсы

вычислительной системы (процессор, оперативная память, внешние

устройства и т.п.( используются всеми задачами, одновременно вы-

полняемыми в среде такой операционной системы. Поскольку многие

виды ресурсов не допускают реально одновременного использования

разными задачами, такие ресурсы предоставляются задачам поочеред-

но. Таким образом, задачи, претендующие на использование того или

иного ресурса, выстраиваются в очередь к этому ресурсу. Эти оче-

реди обычно приоритетные, однако, довольно часто применяются и

FIFO-очереди, так как это единственная логическая организация

очереди, которая гарантированно не допускает постоянного вытесне-

ния задачи более приоритетными. LIFO-очереди обычно используются

операционными системами для учета свободных ресурсов.

Также в современных операционных системах одним из средств

взаимодействия между параллельно выполняемыми задачами являются

очереди сообщений, называемые также почтовыми ящиками. Каждая за-

дача имеет свою очередь - почтовый ящик, и все сообщения, отправ-

ляемые ей от других задач, попадают в эту очередь. Задача-владе-

лец очереди выбирает из нее сообщения, причем может управлять

порядком выборки - FIFO, LIFO или по приоритету.