Я думал о написании хобби операционной системы для некоторых процессоров ARM. Есть много популярных одноплатных компьютеров с ARM MPU, поэтому я просто хотел купить один из них (выбирая один с более открытой документацией). Я был удивлен, когда узнал, что даже платы с действительно достаточным объемом памяти не имеют MPU с модулем управления памятью.
Поскольку я всегда работал с процессорами i386 + и никогда с чем-либо еще (за исключением некоторых микрочип-PIC), я теперь растерялся и не уверен, что можно написать работающую операционную систему, функциональность которой не будет ограничена по сравнению с написанными операционными системами. для MPU с MMU.
Я мог бы придумать несколько решений для «замены» или «симуляции» MMU, и у меня есть несколько вопросов:
- На процессорах Intel в 16- и 32-разрядных режимах существует способ использования сегментов и селекторов сегментов для использования разных блоков памяти для разных задач. Это означает, что я мог бы изменить пространство памяти, изменив содержимое регистров сегмента при переключении задач в x86. Существуют ли общие концепции сегментации памяти, которые можно использовать в архитектуре ARM?
- Загружая связанный объектный файл вместо исполняемого, я мог бы использовать перемещения (исправления) или позиционировать независимый код, чтобы указывать задачи на куски памяти таким же образом, как если бы я отображал память с использованием структур подкачки. Будет ли это достаточно эффективным?
- Я также читал кое-что о модулях защиты памяти на процессорах ARM. Могут ли они быть полезными?
Существуют ли «обычные» способы управления задачами в системах без MMU?