GNU/Linux >> Linux の 問題 >  >> Linux

64 ビット Linux での 32 ビット プロセスのアドレス空間

カーネル ソースの引用:「カーネル ポインターには冗長な情報があるため、同じ戻り値でエラー コードまたは [...] ポインターを返すことができるスキームを使用できます。

値 -1..-4095 (32 ビット モードでは 0xfffff000–0xffffffff にマッピング) は、カーネル レベルの errno 値用に予約されています。 0xffffe000 ~ 0xffffefff の残りの 4KB は、vsyscall vdso マジック ページ用に解放されますが、vdso ページは多くの月から再配置可能であるため、この領域は潜在的に未実装のままです。つまり、[stack] /proc/*/maps のエントリ [vdso] が 0xffffe000 または他の場所にマップされているかどうかに関係なく、常に 0xffffdfff で終了します。

一部のカーネル メモリは、アプリケーションのユーザー空間のアドレス空間内にあり、PROT_NONE で一種の mmap 化されている場合があります。 .その後、一部のアドレス空間が使用されますが、プログラムからアクセスすることはできません (したがって、破損の可能性はありません)。


Linux
  1. Linuxカーネルバッファをユーザー空間にmmapする方法は?

  2. Linux の 32 ビット コードでは、int 0x80 と syscall のどちらが優れていますか?

  3. カーネルがプロセスと同じアドレス空間にマップされるのはなぜですか?

  1. 64 ビット Linux での 32 ビット ライブラリの検索

  2. Linux バイナリ ファイルが 32 ビットか 64 ビットかを判断する方法は?

  3. Linux での 32 ビット、64 ビット CPU op モード

  1. Linux –ユーザースペースとカーネルスペースの違いは?

  2. Linux – Linuxのハイメモリとローメモリとは何ですか?

  3. 32 ビット Ubuntu システムで 64 ビット アプリを実行する