Я думав написати операційну систему хобі для деяких процесорів ARM. Існує багато популярних однопланових комп'ютерів з ARM MPU, тому я просто хотів придбати один із них (вибравши один із більш відкритою документацією). Я був здивований, коли дізнався, що навіть у плати з дійсно достатньою пам’яттю немає MPU з блоком управління пам’яттю.
Оскільки я завжди працював з процесорами i386 + і ніколи більше (крім деяких мікросхем PIC), я зараз розгублений і не впевнений, чи можна написати операційну операційну систему, функціональність якої не буде обмежена при порівнянні з написаними ОС для МПУ з ММУ.
Я міг би придумати кілька рішень для "заміни" або "імітації" MMU, і у мене є кілька питань:
- На процесорах Intel в 16 і 32-бітових режимах існує спосіб використання сегментів і селекторних селекторів для використання різних блоків пам'яті для різних завдань. Це означає, що я міг змінити простір пам’яті, змінивши вміст регістрів сегментів, коли робив перемикач завдань, коли на x86. Чи є якісь загальні концепції сегментації пам'яті, які можна було б використовувати в архітектурі ARM?
- Завантажуючи пов'язаний об'єктний файл замість виконуваного файлу, я міг використовувати перемещення (виправлення) або незалежний від позиціонування код для наведення завдань на шматки пам'яті так само, як якщо б я відобразив пам'ять за допомогою структури підкачки. Це було б досить ефективно?
- Я також прочитав щось про блоки захисту пам’яті на процесорах ARM. Чи можуть вони бути корисними?
Чи існують "звичайні" способи управління завданнями в системах без MMU?