Можно ли запустить каждый поток в отдельном виртуальном адресном пространстве?

В Linux возможно ли иметь потоки процесса, работающего в разных виртуальных адресных пространствах? Если так, то как?

3 ответа

Решение

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

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

Это невозможно. Linux использует clone системный вызов для реализации потоков. Требуемые флаги включают CLONE_THREAD это означает, что новый процесс помещается в ту же группу потоков, что и вызывающий процесс, и CLONE_VM это означает, что два процесса / потоки совместно используют виртуальную память. Поскольку ядро ​​Linux версии 2.6.0-test6, вы не можете указать CLONE_THREAD без указания CLONE_VM, (См. Раздел ошибок этой ссылки.)

Однако, в зависимости от вашей точной мотивации, вы можете найти комбинацию флагов для clone делай что хочешь.

Другие вопросы по тегам