Есть ли способ заставить процесс совместно использовать адресное пространство от другого процесса? - PullRequest
0 голосов
/ 18 декабря 2018

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

Есть ли способ, особенно в некоторых системах UNIX, изменить это поведение.Чтобы быть более понятным, чтобы два процесса использовали одно и то же адресное пространство?Или сделать так, чтобы два потока одного процесса имели разное адресное пространство?

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Да.Google gvisor или rump для примеров того, как это сделать.Короткая история: вы начинаете с процесса Mother, который разветвляется () для создания новых детей.Этими дочерними объектами управляет ptrace (), который изолирует их от ядра.Затем материнский процесс манипулирует адресным пространством (ами) детей так, как считает нужным;сделать их идентичными - это один из вариантов.

Обычно здесь используется небольшая хитрость при начальной загрузке, поэтому, когда ребенок вызывает fork (), Мать разветвляется и исполняет известный двоичный файл (re: aspace layout), а затем продолжаетдля клонирования оригинального fork () пробел в новый.

0 голосов
/ 18 декабря 2018

Я думаю, вам следует прочитать this .

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

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