2013-08-19 6 views
9

Wie groß ist der Adressraum des Kernels für 64-Bit-Linux, also der Adressbereich der von ihm verwendeten Code-, Stack-, Heap- und Datensegmente.Welcher Adressraum ist vom Kernel in 64-Bit Linux belegt?

+7

Eine nette Sache über Linux ist, dass Sie tatsächlich die Quelle herunterladen und durchsehen können. Die Linker-Skripte könnten ein guter Anfang sein. –

Antwort

13

Auf einem 64-Bit-Linux sind alle 64-Bit-Adressen mit dem höchstwertigen Bit, das auf 1 gesetzt ist, für den Kernel reserviert. Mit anderen Worten, die obere Hälfte des virtuellen Adressraums.

Für vollständige Details siehe http://en.wikipedia.org/wiki/X86-64#Virtual_address_space_details

+0

Sie meinen die Hälfte für 48 Bit oder 64 Bit? Ist es von 0xffffffff80000000 zu 0xffffffffffffffff? – MetallicPriest

+1

@MetallicPriest lesen Sie bitte noch einmal meinen ersten Satz. –

+0

@ArneVogel Das ist, was diese Wikipedia-Seite, die ich zitiert habe, sagt, ist das richtig? –

1

PAGE_OFFSET und ULLONG_MAX Konstanten mit Werten sind, die zu den Start- und Endadressen des Kernel-Speichers gleich sind. Sie können sie direkt in Ihrem Kernel-C-Modul verwenden:

#define START_MEM PAGE_OFFSET 
#define END_MEM  ULLONG_MAX