Як розділений 64-бітний процес віртуального адресного простору в Linux?


12

На наступному зображенні показано, як розділено 32-бітний процес віртуального адресного простору:

введіть тут опис зображення

Але як розділений віртуальний адресний простір 64-бітного процесу?

Відповіді:


10

64-розрядна карта віртуальної пам'яті x86 розділяє адресний простір на два: нижній розділ (верхній біт встановлений на 0) - це простір користувача, верхній розділ (з верхнім бітом встановлено 1) - простір ядра. (Зауважте, що x86-64 визначає "канонічну" "нижню половину" та "верхню половину" адреси, кількість бітів фактично обмежена до 48 або 56; див. Вікіпедію для деталей.)

Повна карта детально задокументована в ядрі ; в даний час це схоже

========================================================================================
    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-бітовими віртуальними адресами. (56-бітний варіант має таку ж структуру, з 64 PB корисного адресного простору з обох боків отвору 16K PB.)

На відміну від 32-розрядного випадку, карта пам'яті «64 біт» є прямим відображенням апаратних обмежень.


Для уточнення: це обмеження накладається апаратним забезпеченням. Наразі не існує 64-бітної процесорної реалізації, яка б не залишала величезної діри непридатних адрес посеред віртуального адресного простору. Обсяг фізичної пам’яті, на який зможуть звернутись процесори, також значно нижчий за потужність 64.
Йохан Мірен

Дякую @Johan, я намагався висвітлити це.
Стівен Кітт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.