Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



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

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

Для взаимодействия процесса-производителя и процесса-потребителя создается совместный буфер заполняемый процессом-производителем и потребляемым процессом потребителя.

Буфер имеет фиксированные размеры и, следовательно, процессы могут находится в состоянии ожидания, когда:

– буфер заполнен – ожидает процесс-производитель;

– буфер пуст – ожидает процесс-потребитель.

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

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

Транспортеры (каналы). Являются средством взаимодействия родственных процессов, представляют собой область памяти имеющую файловую организацию, для которой обеспечивается запись и считывание данных в транспортеры. Реализуется очередь обслуживания. Порядок записи данных на транспортер не изменен, не допускается повторное считывание данных. Обмен данными происходит не непосредственно, а через транспортер. Из вызвавшего процесса задается размер транспортера. Дочерние процессы могут использовать родительский транспортер.

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

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

– создание очереди;

– просмотр очереди;

– чтение очереди;

– закрытие очереди.

Записывающий процесс осуществляет действия:

– открыть очередь;

– записать в очередь;

– закрыть в очередь.

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

–определение количества элементов в очереди в текущий момент;

– очистка очереди создавшим ее процессом.

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

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

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

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

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

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

– установки семафора с целью сигнализации;

– ожидания вызывающим потоком, пока семафор не будет выключен;

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





Дата публикования: 2015-10-09; Прочитано: 549 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...