Принцип управления памятью, используемый в Linux


Ответы:


7

Linux использует оба. Он использует сегментацию для отображения всего доступного адресного пространства, предоставляя различные права доступа: в основном ядро ​​и представление пользовательского пространства. Вы можете получить исходный код Linux для KERNEL_DS (сегмент данных ядра) для некоторых примеров.

Пейджинг затем используется для реализации виртуальной памяти (Grep для "struct gdt_page" в ядре, для начальной точки)


6

Управление памятью под Linux работает исключительно с помощью пейджинга.

Linux поддерживает как «маленькие» (обычно 4 КБ), так и «большие» (2 МБ) страницы. Первые «просто работают», не зная и не делая ничего особенного, а вторые нуждаются в особой обработке (должны быть зарезервированы во время загрузки и отображены через специальное устройство).

Единственный контекст, в котором «сегмент» появляется в Linux, это системный вызов brk (), который используется для увеличения сегмента данных процесса (обычно это вам не нужно, malloc делает это без вашей заботы). Но так или иначе, память поступает в страницы и управляется в страницах, и это не имеет никакого отношения к сегментации x86.


Сегментация X86 была устаревшей, когда вышел i386. Linux никогда не использовал сегментацию для управления памятью. Некоторые производные, такие как ELKS и (возможно) uClinux могут.
LawrenceC
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.