7 ответов
Википедия обычно отлично подходит для этих целей.
RPC:
Удаленный вызов процедур (RPC) - это технология межпроцессного взаимодействия, которая позволяет компьютерной программе запускать подпрограмму или процедуру в другом адресном пространстве (обычно на другом компьютере в общей сети) без явного кодирования программистом подробностей для этого удаленного взаимодействие.
IPC:
Межпроцессное взаимодействие (IPC) - это набор методов для обмена данными между несколькими потоками в одном или нескольких процессах. Процессы могут выполняться на одном или нескольких компьютерах, подключенных к сети.
Итак, RPC - это всего лишь один из видов IPC.
RPC - Удаленный вызов процедур - это особый тип связи, но может быть на одной машине или по сети между машинами. http://en.wikipedia.org/wiki/Remote_procedure_call
IPC - межпроцессное взаимодействие - это общий термин для связи между различными процессами (которые обычно находятся на одной машине). http://en.wikipedia.org/wiki/Inter-process_communication
RPC (удаленный вызов процедуры) является формой IPC (межпроцессное взаимодействие) - последний является более общим термином, охватывающим множество механизмов, помимо RPC.
IPC - это набор методов для связи с двумя процессами, которые могут находиться на одном и том же компьютере или на другом компьютере. Он включает прямую и косвенную связь, синхронную и асинхронную связь и явную буферизацию. Но RPC - это метод для вызова процедуры от сервера к клиенту и получения результата в виде сообщения.
- Удаленный вызов процедур (удаленный вызов методов в системе)
- Межпроцессное взаимодействие (метод, позволяющий процессам в одной системе взаимодействовать).
Чтобы ответить на ваш вопрос, лучше хорошо разобраться в том, что такое IPC и RPC, как они работают и какими свойствами они обладают, чтобы мы могли лучше определить их различия, если таковые имеются.
В своем ответе я буду ссылаться на книгу под названием «Концепции операционных систем, 10-е издание», написанную Ави Зильбершацем, Питером Баером Галвином и Грегом Ганье и опубликованную John Wiley & Sons Inc., дополнительная информация. о книге здесь .
МПК
Почему и когда нам следует использовать IPC?
Существует два типа процессов: независимые процессы и взаимодействующие процессы. независимые процессы не взаимодействуют с другими процессами, как следует из их названия. Но с другой стороны, взаимодействующий процесс должен иметь связь и взаимодействие с другими процессами, именно тогда на сцену выходит IPC, как мы читаем в разделе 3.4, стр. 123 книги:
Для взаимодействующих процессов требуется механизм межпроцессного взаимодействия (IPC), который позволит им обмениваться данными, то есть отправлять данные и получать данные друг от друга. Существует две фундаментальные модели межпроцессного взаимодействия: общая память и передача сообщений.
Как упоминается в книге, существует два типа общения. общая память и передача сообщений. Модель, используемая для RPC, часто основана на последней, поэтому, чтобы лучше сравнить их (IPC и RPC), я бы предположил, что оба используют схему передачи сообщений.
Так что же такое передача сообщений и как она работает в IPC?
В разделе 3.6 на странице 128 книги говорится:
Передача сообщений предоставляет механизм, позволяющий процессам взаимодействовать и синхронизировать свои действия, не используя одно и то же адресное пространство. Это особенно полезно в распределенной среде, где взаимодействующие процессы могут находиться на разных компьютерах, подключенных к сети.
а также:
Существует несколько методов логической реализации ссылки:
- Прямое или косвенное общение
- Синхронная или асинхронная связь
- Автоматическая или явная буферизация
Следовательно, мы должны учитывать, что процессы, которые пытаются взаимодействовать друг с другом посредством передачи сообщений, могут находиться либо на одной, либо на отдельной машине (и в одной сети).
Существует также множество способов установления связи (логически) между процессами, которые взаимодействуют с использованием передачи сообщений, как упоминает @vrnithinkumar в ответах, а также предлагает книга. но в любом случае следует учитывать один момент: сами процессы в основном участвуют в отправке и получении сообщений, или здесь это может показаться таковым. Конечно, ОС (или любая другая среда) могла бы предоставить средства для такой связи и иметь возможность контролировать ее, тем не менее, с этой стороны для этой цели было введено не так уж много интерфейса.
ПКП
Что такое RPC, когда он используется и как работает?
В книге RPC определяется как:
Вызовы процедур, отправляемые по сети для выполнения на другом компьютере; обычно используется в клиент-серверных вычислениях.
далее в разделе 3.8.2:
Одной из наиболее распространенных форм удаленного обслуживания является парадигма RPC, которая была разработана как способ абстрагировать механизм вызова процедур для использования между системами с сетевыми соединениями. Он во многом похож на механизм IPC и обычно строится поверх такой системы.
здесь в книге упоминается особая разница между IPC и RPC:
В отличие от сообщений IPC, сообщения, которыми обмениваются при связи RPC, хорошо структурированы и, таким образом, больше не являются просто пакетами данных. Каждое сообщение адресовано демону RPC, прослушивающему порт удаленной системы, и каждое сообщение содержит идентификатор, определяющий выполняемую функцию и параметры, передаваемые этой функции. Затем функция выполняется по запросу, и любые выходные данные отправляются обратно запрашивающей стороне в отдельном сообщении.
В RPC используется так называемая заглушка, которая выполняет часть тяжелой работы по отправке/получению сообщений в системе. в книге поясняются заглушки на странице 150:
Система RPC скрывает детали, позволяющие осуществлять связь, предоставляя заглушку на стороне клиента. Обычно для каждой отдельной удаленной процедуры существует отдельная заглушка. Когда клиент вызывает удаленную процедуру, система RPC вызывает соответствующую заглушку, передавая ей параметры, предоставленные удаленной процедуре. Эта заглушка находит порт на сервере и маршалирует параметры. Затем заглушка передает сообщение на сервер, используя передачу сообщений. Аналогичная заглушка на стороне сервера получает это сообщение и вызывает процедуру на сервере. При необходимости возвращаемые значения передаются обратно клиенту с использованием того же метода.
Еще один момент, который следует учитывать, — это то, как работает заглушка, обеспечивающая системе некоторую степень инкапсуляции.
Заключение
Итак, теперь, когда мы лучше понимаем RPC и IPC, давайте ответим на следующие вопросы:
Is there a difference between RPC and IPC?
Да, есть.
What are the differences between RPC and IPC?
Как правило, цель RPC — просто вызвать функцию (процедуру) для вызывающей стороны и вернуть сообщение, содержащее результат вызова этой функции. Однако целью IPC является исключительно обмен данными между процессами, связанными со связью. Даже в тех случаях, когда RPC используется как форма IPC, например, в среде связывания Android , мы могли бы сказать, что модель предполагает упор на инкапсуляцию и интерфейс (используя здесь слово RPC), используемый для взаимодействия между процессами. Или, проще говоря, он выполняет IPC способом RPC (или, возможно, наоборот).
Are RPC and IPC synonyms?
Хотя у них много общего и свойств, технический ответ будет отрицательным.
RPC = IPC + местоположение сервера, сортировка, сбой сети, задержки - специальные приемы копирования, скорость
Для получения дополнительной информации:-https://www.cs.cmu.edu/~410-f03/lectures/L31_IPCRPC.pdf