В этом посте я буду говорить о страничной организации только в контексте PML4 (Page Map Level 4), потому что на данный момент это доминирующая схема страничной организации x86_64 и, вероятно, останется таковой какое-то время.
Рубрика «страничная организация памяти»
Как устроена страничная организация памяти x86_64
2024-02-02 в 9:05, admin, рубрики: gdb, qemu, x86_64, страничная организация памятиПишем операционную систему на Rust. Реализация страничной памяти (новый вариант)
2019-03-27 в 18:03, admin, рубрики: Rust, x86, виртуальная память, операционная система, отображение полной памяти, рекурсивные таблицы страниц, системное программирование, страничная организация памяти, трансляция адресов, ядро ОСВ этой статье разберёмся, как реализовать поддержку страничной памяти в нашем ядре. Сначала изучим различные методы, чтобы фреймы физической таблицы страниц стали доступны ядру, и обсудим их преимущества и недостатки. Затем реализуем функцию преобразования адресов и функцию создания нового сопоставления.
Этот цикл статей опубликован выложен на GitHub. Если у вас какие-то вопросы или проблемы, открывайте там соответствующий тикет. Все исходники для статьи лежат в этой ветке.
Ещё одна статья о страничной организации памяти?
Если вы следите за этим циклом, то видели статью «Страничная память: продвинутый уровень» в конце января. Но меня раскритиковали за рекурсивные таблицы страниц. Поэтому решил переписать статью, применив иной подход для доступа к фреймам.
Читать полностью »
Операционная система на Rust. Страничная память: продвинутый уровень
2019-02-05 в 18:35, admin, рубрики: Rust, виртуальная память, операционная система x86, рекурсивные таблицы страниц, системное программирование, страничная организация памяти, трансляция адресов, ядро ОСВ этой статье объясняется, как ядру операционной системы получить доступ к фреймам физической памяти. Изучим функцию для преобразования виртуальных адресов в физические. Также разберёмся, как создавать новые сопоставления в таблицах страниц.
Этот блог выложен на GitHub. Если у вас какие-то вопросы или проблемы, открывайте там соответствующий тикет. Все исходники для статьи здесь.
Введение
Из прошлой статьи мы узнали о принципах страничной организации памяти и о том, как работают четырёхуровневые страничные таблицы на x86_64. Мы также обнаружили, что загрузчик уже настроил иерархию таблиц страниц для нашего ядра, поэтому ядро работает на виртуальных адресах. Это повышает безопасность, но возникает проблема: как получить доступ к настоящим физическим адресам, которые хранятся в записях таблицы страниц или регистре CR3
?
Читать полностью »
Пишем операционную систему на Rust. Страничная организация памяти
2019-01-18 в 11:25, admin, рубрики: Rust, x86, операционная система, Процессоры, сегментация, системное программирование, страничная организация памяти, фрагментацияВ этой статье представляем страницы, очень распространённую схему управления памятью, которую мы тоже применим в нашей ОС. Статья объясняет, почему необходима изоляция памяти, как работает сегментация, что такое виртуальная память и как страницы решают проблему фрагментации. Также исследуем схему многоуровневых таблиц страниц в архитектуре x86_64.
Этот блог выложен на GitHub. Если у вас какие-то вопросы или проблемы, открывайте там соответствующий запрос.
Читать полностью »