Межпроцессное взаимодействие в Unix

Межпроцессное взаимодействие.

Сигналы

Сигналы (signals) – программные прерывания, уведомляющие процесс о наступлении определенного события.

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

Сообщения

Передача сообщений может являться двунаправленной:

1. Send (receiver Process, message);

2. Receive (sender Process, message);

Передача

       
   

 


При блокирующей передаче( blocking send) процесс вынужден ожидать до тех пор, пока сообщение не будет доставлено получателю, требуя подтверждения приёма.

При неблокирующей передаче(nonblocking send) процесс – отправитель может продолжать выполнение других операций, даже если сообщение ещё не было доставлено получателю.

 

Блокирующая – синхронная связь

Неблокирующая – асинхронная связь

Канал

Канал(pipe) – механизм передачи сообщений. Защищённая область памяти, которая выступает в качестве буфера, позволяющего нескольким процессам обмениваться между собой данными.

       
   
 


Process B  
shared
1

M

       
   
 
 


2

2 1

       
 
   
kernel
 


сообщения общая память

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

Сокеты

Сокеты (socket) – программная конструкция, являющаяся конечным элементом соединения, которая позволяет общаться процессам в сети.

Удаленный вызов процедуры (RPC) – взаимодействие между процессами в распределенных системах.

 

Межпроцессное взаимодействие в Unix

способы взамодействия тип связи способ применения системные вызовы
разделяемая память общий доступ высокопроизводит, обмен данными shmem, mmap
переменные окружения односторонняя, при запуске режим работы программы setenv
сигналы односторонняя уведомления signal
каналы односторонняя базовый ввод-вывод pipe
сокеты двусторонняя сетевой обмен socket, ...

 

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

 

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

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

 

Для операционной системы этот способ является наиболее простым — ведь все страницы виртуальной памяти процессов в любом случае проецируются на какую-то область физической памяти. Такое взаимодействие не требует каких-либо накладных расходов, процессы обмениваются информацией со скоростью обращения к памяти.

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

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








Дата добавления: 2017-01-29; просмотров: 1978;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.008 сек.