Aşağıdaki görüntü, 32 bit işlem sanal adres alanının nasıl bölündüğünü gösterir:
Peki 64 bit işlem sanal adres alanı nasıl bölünür?
Aşağıdaki görüntü, 32 bit işlem sanal adres alanının nasıl bölündüğünü gösterir:
Peki 64 bit işlem sanal adres alanı nasıl bölünür?
Yanıtlar:
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.