4
#pramga alloc_text(PAGE, foo)

void foo(){ return; }

このコードは通常、デバイスドライバーで使用されます。foo
関数は 、システムが必要なときにいつでも交換されます。

質問。

  • ユーザースペースコードで機能しますか?関数もページングされますか?
  • プラグマがない場合、つまり、デフォルトでは、すべてのカーネルレベルの関数に非ページメモリが割り当てられていますか?
  • PEファイルローダーは関数が割り当てられる場所を決定しますか?
4

2 に答える 2

5

単純なhelloworldドライバーをコンパイルすると、「。text」というPE(Portable Executable)セクションに「Notpageable」特性フラグが設定されていることがわかります。したがって、デフォルトでは、ページング可能としてマークしない限り、すべてのドライバーコードはそのセクションにあります。これにより、「。text」セクションではなく「PAGE」セクションになります。

于 2011-11-12T14:23:02.847 に答える
2

ユーザー モード プログラムは、既定でスワップされます。他に何かが必要になることはめったにありません。割り込みなどを処理するために常駐する必要があるデバイスドライバーの要件のように聞こえます。ユーザーモードプログラムはそれをしません。

于 2011-02-27T08:56:11.870 に答える