Inter-process Communication (IPC) — подробное руководство по механизму/программе

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

Этим и займемся.

Cодержание:

Теоретическая страничка

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

А теперь представьте, что привычная для нас работа нашей ОС превратилась в своего злого двойника, который не просто не похож на свой оригинал, но еще и выполняет все свои обязанности.

Рис. 1. Если хотя бы одна шестерня перестанет крутиться, то вся система перестанет работать справно

Рис. 1. Если хотя бы одна шестерня перестанет крутиться, то вся система перестанет работать справно

Такое развитие событий вполне могло происходить, не будь встроен в нашу систему IPC.

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

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

Рис. 2. Если не будет передачи актуальных данных, то все процессы и вычисления будут неправильны

Рис. 2. Если не будет передачи актуальных данных, то все процессы и вычисления будут неправильны

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

Хоть «ядро» нашего компьютера запрограммировано искать информацию в каком-то определенном источнике, принцип роботы по сути тот же.

Рис. 3. Активный поиск информации

Рис. 3. Активный поиск информации

к содержанию ↑

Принцип работы

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

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

Такие механизмы или программы носят название «межпроцессорное взаимодействие» – с перевода Inter-process Communication (IPC).

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

Работает данная программа непосредственно в самой операционной системе, и является основой для передачи любой информации.

Рис. 4. Потоки информации

Рис. 4. Потоки информации

к содержанию ↑

Примеры работы IPC

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

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

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

Более старые версии современного IPC присутствовали еще в MS-DOS.

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

В то время решение данного вопроса было очень проблематичным.

Дело в том, что такая связь могла проводить обмен данными, если только их платформы или операционные системы относились к одинаковым моделям.

В современной сети данные проблемы уже давно никого не беспокоят. Вот вам краткий наглядный пример работы в таких сетях.

 Когда вы совершаете любой выход в Интернет, ваш браузер – один процесс (программа) – входит во взаимосвязь с web-сервером – другим процессором (программой). 

Данные процессы выполняются на двух разных компьютерах, в двух разных местах:

  • браузер у вас в системе;
  • сервер – в любой другой системе или абсолютно в любом месте.

И вы совершенно не задаетесь вопросом, какая у серверов операционная система.

Затрагивая общий принцип работы таких форм как IPC, и не только таких, как она, используется в основном концепция «клиент-сервер».

Понятно, что «клиент» — это приложение, которое запрашивает информацию, а запрос информации идет уже к «серверу» — приложению которое предоставляет нужную информацию.

Рис. 5. Принцип действия сети

Рис. 5. Принцип действия сети

к содержанию ↑

Общее положение

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

Ниже будут перечислены области взаимодействия IPC, как в одной системе, так и в многопользовательской сети.

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

Данный рост вызван тем, что каждый день на наши операционные системы выходит все больше и больше каких-то дополнений которые в свою очередь улучшают характеристики нашего компьютера. 
Рис. 6. Чем выше уровень технологии, тем больше на него спрос

Рис. 6. Чем выше уровень технологии, тем больше на него спрос

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

Данные критерии имеют очень высокую важность в роботе нашего компьютера.  

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

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

Для получения данной возможности, на уровне операционной системы водятся специальные ресурсы, которые предоставляют им данную возможность.

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

 Например: при совместной работе, каждый процесс, обращающийся к разделяемым данным, делает невозможным для всех остальных процессов одновременное обращение к этим данным – данный феномен называется взаимоисключением. 
к содержанию ↑

Три основных вида IPC

  • Локальный

Этот вид IPC полностью привязан к своему компьютеру, работа осуществляется только в пределах одной системы (компьютера).

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

Из-за своей ограниченности, в плане коммуникационного пространства, данные IPC, могут работать лишь в пределах своей локальной системы.

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

  • Удаленный

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

  • Высокоуровневый

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

Данный вид представляет собой пакет программного обеспечения.

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

к содержанию ↑

Обеспечение корректной работы обмена данных

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

Вот примеры их области деятельности:

1Конкурентные ситуации между процессами. Можем представить себе идеальную систему, в которой проходит лишь одно действие, это считывание данных с одного файла. Данная система находиться в полном спокойствии до тех пор, пока одному из процессов не понадобиться изменить данный файл. В таком случае между процессами возникает «конкурентная ситуация». Это можно сравнить с камешком в каком-то механизме.
2Очередь последовательной записи информации. Для того чтобы предоставить пользователям возможность быстрой и надежной записи данных, создаются специальные очереди. Я думаю вам известно, что такое очередь. Но на самом деле создается не одна, а две очереди. Отличаются данные очереди от настоящих только тем, что одна из них используется только для чтения, а другая уже позволяет нам записывать нужную информацию. Данная очередь создается в целях предотвращения тупиков, которые мы обсудим немного ниже.
Рис. 7. Очередь процессов для записи данных

Рис. 7. Очередь процессов для записи данных

А что насчет тех процессов, которые требуют неотъемлемой скорости своего решения?

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

 Через некоторое время была придуманная идея создания очередей, которые осуществляли такой распорядок процессов, которые не мешали основным или более важным процессам.

Также, существует термин, который и в теории, и на практике обоснован своим названием – это тупик.

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

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

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

Такого «замыкания» можно избежать, если пользователь позаботиться о том, чтобы ресурсы были пронумерованы.

Также они должны быть построены строго в восходящем порядке номеров.

Рис. 8. Наглядный «тупик»

Рис. 8. Наглядный «тупик»

к содержанию ↑

Современные примеры работы ICP

Чтобы наглядно изобразить взаимодействие программ на одном компьютере, существует знакомый нам ресурс – буфер обмена.

Не удивляйтесь, наш старый добрый буфер обмена также является одной из механизмов IPC.

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

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

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

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

Стоит заметить, что множество из них были реализованы в Windows 9x, а еще большее количество в Windows NT/2000.

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

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

Но можем вас уверить в том, что после этой статьи вас больше не затруднит ориентирование в ресурсах, связанных с IPC или выбор того или иного метода роботы, взвешивая все плюсы и минусы.

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

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

Пишу об интернет-сервисах, ну и обо всем понемногу :) Увлекаюсь современными технологиями. Люблю футбол, рок и читать - такое вот сочетание несочетаемого. https://www.work.ua/ru/resumes/1679218/ Мой телеграмм: @ProstoludinCFC

Добавить комментарий

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Извините, для комментирования необходимо войти.
Geek-Nose