В связи с отрицательными отзывами пробной статьи «Разработка микроядерной Unix подобной OC — планировщик» я решил перезапустить серию статей с учетом некоторых замечаний. Теперь, осознав свою целевую аудиторию, я смог сместить фокус с подобных себе на тех кому это действительно нужно.
Читать полностью »
Рубрика «ядро ОС»
Разработка монолитной Unix подобной OS — Начало
2019-09-05 в 14:58, admin, рубрики: C, разработка операционных систем, системное программирование, ядро, ядро ОСПишем операционную систему на Rust. Реализация страничной памяти (новый вариант)
2019-03-27 в 18:03, admin, рубрики: Rust, x86, виртуальная память, операционная система, отображение полной памяти, рекурсивные таблицы страниц, системное программирование, страничная организация памяти, трансляция адресов, ядро ОСВ этой статье разберёмся, как реализовать поддержку страничной памяти в нашем ядре. Сначала изучим различные методы, чтобы фреймы физической таблицы страниц стали доступны ядру, и обсудим их преимущества и недостатки. Затем реализуем функцию преобразования адресов и функцию создания нового сопоставления.
Этот цикл статей опубликован выложен на GitHub. Если у вас какие-то вопросы или проблемы, открывайте там соответствующий тикет. Все исходники для статьи лежат в этой ветке.
Ещё одна статья о страничной организации памяти?
Если вы следите за этим циклом, то видели статью «Страничная память: продвинутый уровень» в конце января. Но меня раскритиковали за рекурсивные таблицы страниц. Поэтому решил переписать статью, применив иной подход для доступа к фреймам.
Читать полностью »
Операционная система на Rust. Страничная память: продвинутый уровень
2019-02-05 в 18:35, admin, рубрики: Rust, виртуальная память, операционная система x86, рекурсивные таблицы страниц, системное программирование, страничная организация памяти, трансляция адресов, ядро ОСВ этой статье объясняется, как ядру операционной системы получить доступ к фреймам физической памяти. Изучим функцию для преобразования виртуальных адресов в физические. Также разберёмся, как создавать новые сопоставления в таблицах страниц.
Этот блог выложен на GitHub. Если у вас какие-то вопросы или проблемы, открывайте там соответствующий тикет. Все исходники для статьи здесь.
Введение
Из прошлой статьи мы узнали о принципах страничной организации памяти и о том, как работают четырёхуровневые страничные таблицы на x86_64. Мы также обнаружили, что загрузчик уже настроил иерархию таблиц страниц для нашего ядра, поэтому ядро работает на виртуальных адресах. Это повышает безопасность, но возникает проблема: как получить доступ к настоящим физическим адресам, которые хранятся в записях таблицы страниц или регистре CR3
?
Читать полностью »