Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Очереди

ПРОЦЕССЫ В UNIX | Префикс программного сегмента PSP | Создание дочерних процессов | Db 0 ; конец дополнительного окружения | Взаимодействие процессов | Взаимное исключение процессов | Критические интервалы | Синхронизация процессов | Синхронизация на основе P и V операций | Монитор Хоара |


Читайте также:
  1. Ну, вне очереди – за дополнительную плату,- заметил кондуктор, принимая деньги.
  2. Очереди и почтовые ящики в WINDOWS

Очередь (queue) представляет cобой некоторый программный механизм синхронизации и передачи информации между процессами. Какой-либо процесс заносит сообщения в очередь, а другой процесс (владелец очереди) вынимает их из очереди. На основе механизма очередей реализованы основные системные механизмы взаимодействия задач, работающих в рамках современных ОС (OS/2, Windows и UNIX).

Очередь представляет собой не один ПЯ, а множество буферов, связанных в список. Отправитель помещает очередное сообщение в свободный буфер. Получатель читает из очередного буфера. Скорости процессов разные, поэтому используется буферизация сообщений.

При этом используется стратегия FIFO - "первый пришел - первый ушел". Для такого способа буфера связываются в циклический список (рис. 4.10).

 
 

Заводятся две переменные типа "якорь" с адресом головы списка и хвоста списка. Когда в буферах ничего нет @головы = @хвоста. Для очистки буферов адресу хвоста присваивают значение головы. Запись осуществляется в хвост, а чтение из головы. Количество буферов известно отправителю.

Схема работы с очередью представлена на рис. 4.11.

 
 

Алгоритм выполняется как неделимая операция, так как меняются адреса и содержимое буферов. Кроме семафоров, связанных с критическими участками, необходимо управление ресурсами множества буферов.

Примером очереди в MS DOS может служить буфер опережающего ввода с клавиатуры. Один процесс, связанный с вводом с клавиатуры, пишет в этот буфер, другой процесс читает из данного буфера в программу пользователя.

Очереди в OS/2

В OS/2 имеются очереди трех типов — организованные в виде стека (LIFO — Last In First Out — последним пришел, первым ушел), собственно очереди (FIFO — First In First Out первым пришел, первым ушел) и приоритетной очереди, в которой порядок выборки элементов зависит от их приоритетов. Процесс, создавший очередь, считается ее владельцем, и только задачи этого процесса могут считывать элементы из очереди. Невзирая на тип очереди, задача процесса — владельца очереди имеет возможность считать любой элемент, проверив предварительно его содержимое.

При занесении элемента в очередь указываются адрес буфера с данными, размер буфера и сопроводительная информация. Реально данные не переписываются при передаче элемента — передается только адрес.


Дата добавления: 2015-10-02; просмотров: 45 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Почтовые ящики| Очереди и почтовые ящики в WINDOWS

mybiblioteka.su - 2015-2024 год. (0.006 сек.)