Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС / Тема_2.ppt
Скачиваний:
202
Добавлен:
11.04.2015
Размер:
3.19 Mб
Скачать

Очереди сообщений

В очередях присутствуют не непосредственно сами сообщения, а только их адреса в памяти и размер. Эта информация размещается системой в сегменте памяти, доступном для всех задач, общающихся с помощью данной очереди.

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

161

Операционные системы

Очереди сообщений

Во время чтения из очереди задача- приемник пользуется следующей информацией:

идентификатор процесса (Process Identifier, PID), который передал сообщение;

адрес и длина переданного сообщения;

признак необходимости ждать, если очередь пуста;

приоритет переданного сообщения;

номер освобождаемого семафора, когда сообщение передается в очередь.

162

Операционные системы

Очереди сообщений

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

CreateQueue — создание новой очереди;

OpenQueue — открытие существующей очереди;

ReadQueue — чтение и удаление сообщения из очереди;

PeekQueue — чтение сообщения без его последующего удаления из очереди;

WriteQueue — добавление сообщения в очередь;

CloseQueue — завершение использования очереди;

PurgeQueue — удаление из очереди всех сообщений;

QueryQueue — определение числа элементов в очереди.

163

Операционные системы

2.6.7. Средства взаимодействия ОС между

процессами Почтовые ящики

Почтовые ящики, используемые в Windows 2000, в некоторых аспектах подобны каналам, однако, в отличие от каналов, являются однонаправленными.

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

Для прямой и непрямой адресации достаточно двух примитивов, чтобы описать передачу сообщений по линии связи - send и receive.

164

Операционные системы

Почтовые ящики

В случае прямой адресации их можно обозначать так:

send(P, message) - послать сообщение message процессу Р;

receive(Q, message) - получить сообщение message от процесса Q,.

В случае непрямой адресации мы будем обозначать их так:

send(A, message) - послать сообщение message в почтовый ящик А;

receive(A, message) - получить сообщение message из почтового ящика А.

165

Операционные системы

Почтовые ящики

Примитивы send и receive уже имеют скрытый от наших глаз механизм взаимоисключения.

Более того, в большинстве систем они уже имеют и скрытый механизм блокировки при чтении из пустого буфера и при записи в полностью заполненный буфер.

Реализация решения задачи producer-consumer для таких примитивов становится тривиальной. Надо отметить, что, несмотря на простоту использования, передача сообщений в пределах одного компьютера происходит существенно медленнее, чем работа с семафорами и мониторами.

166

Операционные системы

2.6.7. Средства взаимодействия ОС между процессами

Сокеты

Сокеты (ОС Windows 2000) подобны каналам, с тем отличием, что они при нормальном использовании соединяют процессы на разных компьютерах.

Например, один процесс пишет в сокет, а другой на удаленной машине читает из него.

В принципе сокеты можно использовать для соединения процессов на одной машине, но это связано с большими накладными расходами.

167

Операционные системы

2.6.7. Средства взаимодействия ОС между

процессами Вызов удаленной процедуры

Вызов удаленной процедуры (Remote Procedure Call, RPC) представляет собой способ, которым процесс А просит процесс В вызвать процедуру в адресном пространстве процесса В от имени процесса А и вернуть результат процессу А.

168

Операционные системы

2.6.7. Средства взаимодействия ОС между

 

процессами

 

Разделяемая память

использовать

Процессы

могут

совместно

память для одновременного отображения одного и

того же файла.

 

 

 

Все, что один процесс будет писать в этот файл,

будет появляться в адресном пространстве других

процессов.

 

 

 

С помощью такого механизма легко

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

производителя и потребителя (писатели – читатели).

Запись в этот файл одним из процессов

мгновенно становится видной остальным.

 

Операционные системы

169

 

 

2.7. Аппаратно-программные средства поддержки

мультипрограммирования

2.7.1. Системы прерываний

Классы прерываний: внешние, внутренние, программные

1. Внешние прерывания – результат действий пользователя, сигналы от периферийных устройств компьютера и управляемых объектов.

2. Внутренние прерывания – результат появления аварийных ситуаций при выполнении инструкции программы.

3. Программные прерывания – результат выполнения запланированных в программе особых инструкций (системный вызов).

Принципы построения систем прерываний:

аппаратная поддержка (контроллер прерываний, контроллер DMA, контроллеры

внешних устройств, шины подключения внешних устройств, средства микропроцессора);

векторный, опрашиваемый и комбинированный способы прерываний;

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

приоритетами);маскирование прерываний;

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

170

Операционные системы