Linuxでは、プロセスのスレッドを異なる仮想アドレス空間で実行することは可能ですか?もしそうなら、どのように?
質問する
990 次
3 に答える
7
いいえ 。定義上、スレッドはアドレス空間を共有します。個別のアドレススペースが必要な場合は、複数のプロセスを使用する必要があります。
于 2012-06-19T10:39:09.727 に答える
3
それは不可能。Linuxは、clone
システムコールを使用してスレッドを実装します。取得するフラグにはCLONE_THREAD
、新しいプロセスが呼び出し元のプロセスと同じスレッドグループに配置されることをCLONE_VM
意味する、および2つのプロセス/スレッドが仮想メモリを共有することを意味するが含まれます。Linuxカーネルバージョン2.6.0-test6以降、を指定CLONE_THREAD
せずに指定することはできませんCLONE_VM
。(そのリンクのエラーセクションを参照してください。)
ただし、正確な動機によっては、必要なことを実行するためのフラグの組み合わせを見つけることができる場合がありますclone
。
于 2012-06-19T10:50:01.467 に答える
3
異なる仮想アドレス空間を使用して同じプロセスにスレッドを含めることはできませんが、スレッドローカルストレージを使用することは可能です。あなたはそれに興味があるかもしれません。
于 2012-06-19T12:12:23.153 に答える