Принцип управління пам'яттю, що використовується 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.