2013-08-19 15 views
9

64 bit Linux için çekirdeğin adres alanı nedir, yani, onun tarafından kullanılan kod, yığın, yığın ve veri bölümlerinin adres aralığı nedir?64 bit Linux'ta çekirdeğin hangi adres alanı kaplıyor?

+7

Linux ile ilgili güzel bir şey, kaynağı gerçekten indirip inceleyebilirsiniz. Linker komut dosyaları başlamak için iyi bir yer olabilir. –

cevap

13

64 bit Linux'ta, en yüksek sipariş biti 1'e ayarlanmış tüm 64 bit adresler, çekirdek için ayrılır. Başka bir deyişle, sanal adres alanının üst yarısı. Tüm detaylar için

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

+0

48 bit veya 64 bit için yarısı mı demek istiyorsun? 0xffffffff80000000'den 0xffffffffffffffff'a mı? – MetallicPriest

+1

@MetallicPriest İlk cümleyi tekrar okuyun lütfen. –

+0

@ArneVogel Bahsettiğim bu wikipedia sayfası ne diyor, doğru mu? –

1

PAGE_OFFSET ve ULLONG_MAX çekirdek bellek başlangıç ​​ve bitiş adreslerine eşit değerlerle sabitlerdir görüyoruz. Onları doğrudan C modülünüzde kullanabilirsiniz:

#define START_MEM PAGE_OFFSET 
#define END_MEM  ULLONG_MAX