64 bit işlem sanal adres alanı Linux'ta nasıl bölünür?


12

Aşağıdaki görüntü, 32 bit işlem sanal adres alanının nasıl bölündüğünü gösterir:

resim açıklamasını buraya girin

Peki 64 bit işlem sanal adres alanı nasıl bölünür?

Yanıtlar:


10

64-bit x86 sanal bellek haritası adres alanını ikiye ayırır: alt bölüm (üst bit 0'a ayarlı olarak) kullanıcı-alanı, üst bölüm (üst bit 1'e ayarlı olarak) çekirdek alanıdır. (X86-64'ün, "kanonik" "alt yarı" ve "üst yarı" adresleri tanımladığını ve bir dizi bitin etkili bir şekilde 48 veya 56 ile sınırlı olduğunu unutmayın; ayrıntılar için Wikipedia'ya bakın.)

Haritanın tamamı çekirdekte ayrıntılı olarak belgelenmiştir ; şu anda benziyor

========================================================================================
    Start addr    | Offset  |     End addr     |  Size   | VM area description
========================================================================================
                  |         |                  |         |
 0000000000000000 |    0    | 00007fffffffffff |  128 TB | user-space virtual memory
__________________|_________|__________________|_________|______________________________
                  |         |                  |         |
 0000800000000000 | +128 TB | ffff7fffffffffff | ~16M TB | non-canonical
__________________|_________|__________________|_________|______________________________
                  |         |                  |         |
 ffff800000000000 | -128 TB | ffffffffffffffff |  128 TB | kernel-space virtual memory
__________________|_________|__________________|_________|______________________________

48 bit sanal adreslerle. (56 bitlik varyant aynı yapıya sahiptir ve 16K PB deliğinin her iki tarafında 64 PB kullanılabilir adres alanı vardır.)

32 bit durumdan farklı olarak, “64 bit” bellek haritası donanım kısıtlamalarının doğrudan bir yansımasıdır.


Açıklığa kavuşturmak için: bu sınırlama donanım tarafından uygulanır. Şu anda sanal adres alanının ortasında kullanılamaz adreslerden büyük bir delik bırakmayan 64 bit işlemci uygulaması yok. İşlemcilerin hitap edebileceği fiziksel bellek miktarı da 64'ün gücüne 2'nin çok altında.
Johan Myréen

Teşekkürler @Johan, bunu vurgulamaya çalıştım.
Stephen Kitt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.