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

Содержание

Слайд 2

Для достижения поставленной цели различные процессы (возможно, даже принадлежащие разным пользователям)

Для достижения поставленной цели различные процессы (возможно, даже принадлежащие разным пользователям)

могут исполняться псевдопараллельно на одной вычислительной системе или параллельно на разных вычислительных системах, взаимодействуя между собой.
Для чего процессам нужно заниматься совместной деятельностью? Какие существуют причины для их кооперации?
Повышение скорости работы. Пока один процесс ожидает наступления некоторого события (например, окончания операции ввода-вывода), другие могут заниматься полезной работой, направленной на решение общей задачи. В многопроцессорных вычислительных системах программа разбивается на отдельные кусочки, каждый из которых будет исполняться на своем процессоре.
Совместное использование данных. Различные процессы могут, к примеру, работать с одной и той же динамической базой данных или с разделяемым файлом, совместно изменяя их содержимое.
Модульная конструкция какой-либо системы. Типичным примером может служить микроядерный способ построения операционной системы, когда различные ее части представляют собой отдельные процессы, взаимодействующие путем передачи сообщений через микроядро.
Наконец, это может быть необходимо просто для удобства работы пользователя, желающего, например, редактировать и отлаживать программу одновременно. В этой ситуации процессы редактора и отладчика должны уметь взаимодействовать друг с другом.
Слайд 3

Межпроцессное взаимодействие (англ. inter-process communication, IPC) — обмен данными между потоками

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

(англ. inter-process communication, IPC) — обмен данными между потоками одного или разных

процессов. Реализуется посредством механизмов, предоставляемых ядром ОС или процессом, использующим механизмы ОС и реализующим новые возможности IPC. Может осуществляться как на одном компьютере, так и между несколькими компьютерами сети.
Слайд 4

Условно все IPC можно разделить на обмен данными и синхронизацию обмена.

Условно все IPC можно разделить на обмен данными и синхронизацию обмена.
Более

детально IPC делятся на следующие:
механизмы обмена сообщениями;
механизмы синхронизации;
механизмы разделения памяти;
механизмы удалённых вызовов (RPC).
Межпроцессное взаимодействие, наряду с механизмами адресации памяти, является основой для разграничения адресного пространства между процессами.
Слайд 5

Сигнальные IPC Передается минимальное количество информации – один бит, "да" или

Сигнальные IPC

Передается минимальное количество информации – один бит, "да" или "нет".

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

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

Канальные IPC

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

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

Два или более процессов могут совместно использовать некоторую область адресного пространства.

Два или более процессов могут совместно использовать некоторую область адресного пространства.

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

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

Слайд 8

Для оценки производительности различных механизмов IPC используют следующие параметры: пропускная способность

Для оценки производительности различных механизмов IPC используют следующие параметры:
пропускная способность (количество

сообщений в единицу времени, которое ядро ОС или процесс способна обработать);
задержки (время между отправкой сообщения одним потоком и его получением другим потоком).
Слайд 9

Условия Бернстайна

Условия Бернстайна

 

Слайд 10

ошибка проектирования многопоточной системы или приложения, при которой работа системы или

ошибка проектирования многопоточной системы или приложения, при которой работа системы или

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

Race condition

Слайд 11

Критическая секция это часть программы, исполнение которой может привести к возникновению

Критическая секция

это часть программы, исполнение которой может привести к возникновению race

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

Взаимная блокировка Условие взаимного исключения. Каждый ресурс либо выделен в данный

Взаимная блокировка

Условие взаимного исключения. Каждый ресурс либо выделен в данный момент

только одному процессу, либо доступен.
Условие удержания и ожидания. Процессы, удерживающие в данный момент ранее выделенные им ресурсы, могут запрашивать новые ресурсы.
Условие невыгружаемости. Ранее выделенные ресурсы не могут быть принудительно отобраны у процесса. Они должны быть явным образом высвобождены тем процессом, который их удерживает.
Условие циклического ожидания. Должна существовать кольцевая последовательность из двух и более процессов, каждый из которых ожидает высвобождения ресурса, удерживаемого следующим членом последовательности.
Слайд 13

Слайд 14

Неименованные каналы - pipe Для обмена между родственными процессами используют pipe.

Неименованные каналы - pipe

Для обмена между родственными процессами используют pipe. Pipe

представляет собой два файловых дескриптора: один для чтения, другой для записи.