2013-08-19 8 views
9

64ビットLinux用のカーネルのアドレス空間とは何か、つまり、それが使用するコード、スタック、ヒープ、およびデータセグメントのアドレス範囲はどれくらいですか?64ビットLinuxでは、どのアドレス空間がカーネルによって占有されていますか?

+7

Linuxの素晴らしい点は、実際にソースをダウンロードして見ることができることです。リンカスクリプトは、開始するのに適しているかもしれません。 –

答えて

13

64ビットLinuxでは、最高位ビットが1に設定されているすべての64ビットアドレスがカーネル用に予約されています。つまり、仮想アドレス空間の上半分です。詳細について

http://en.wikipedia.org/wiki/X86-64#Virtual_address_space_details

+0

あなたは48ビットまたは64ビットの半分を意味しますか?それは0xffffffff80000000から0xffffffffffffffffまでですか? – MetallicPriest

+1

@ MetallicPriestは私の最初の文章をもう一度読んでください。 –

+0

@ArneVogelそれは、私が引用したウィキペディアのページが言っていることです、そうですか? –

1

PAGE_OFFSETULLONG_MAX参照は、カーネルメモリの開始アドレスと終了アドレスに等しい値を有する定数です。カーネルのCモジュールで直接使用することができます。

#define START_MEM PAGE_OFFSET 
#define END_MEM  ULLONG_MAX 
関連する問題