1

したがって、プロセスは次のとおりです。

------DOSヘッダー/PEヘッダー

------実行可能コードと静的にリンクされたライブラリ

------スラックスペース?

------いくつかのダイナミックリンクライブラリ

------ヒープの開始

------スラックスペース

------スタックの一番上

------スタックの一番下

プロセススタックに割り当てられた仮想メモリ内で、カーネルモードスタックとユーザーモードスタックが相互に関連している場所がわかりません。また、マルチスレッドプロセスによって新しいスレッドが生成された場合、仮想メモリはどこに割り当てられますか?

ありがとう!

4

1 に答える 1

1

0x80000000x86 Windows では、カーネル モード モジュールは、ユーザー モード プロセスからはアクセスできない から(仮想) メモリ空間に配置され、すべてのユーザー モード モジュールは より前のメモリ空間に配置されます0x80000000

新しい (ユーザー モード) スレッドが生成されると、ユーザー モード メモリ空間 (ユーザー モードとカーネル モードの両方からアクセス可能) とカーネル モード メモリ空間 (のみアクセス可能) の両方で、そのスタックに新しいメモリ ページが割り当てられます。カーネルモードから)。ユーザー モード コンテキストを持たないシステム スレッドがいくつかあることに注意してください (したがって、どのユーザー モード プロセスにもスタックが割り当てられません)。これらのスレッドは純粋にカーネル内で実行され、ユーザー モードでは実行されません。

于 2013-02-16T16:16:36.930 に答える