Небольшое вступление,
В настоящее время я пишу маленькое (крошечное )ядро RTOS, которое должно быть монолитным с большей частью ядра. Однако я не могу найти много информации о нескольких вещах, перечисленных ниже. Это было бы очень полезно, и, кроме того, на самом деле это не какой-то университетский проект, а то, чем я занимаюсь по собственному желанию.
Лучшей альтернативой ответам на все вопросы было бы, если бы вы могли сослаться на свободно доступную RTOS (или даже бесплатную книгу )для рук, предпочтительно , которые реализуют пользовательское пространство и являются вытесняемыми (, но не сложны, как линукс ). У Linux одна из худших документации, которые я когда-либо видел (Я пытался понять что-то из кода Linux, но есть просто тонны определений, разбросанных по миллиону файлов и функциональных хуков со странными именами и прочими вещами, которые переименовываются в каждой версии. тоже иногда шевелится...)
В чем разница между «вытеснением» и «переключением контекста»?
Каковы ключевые различия между вытесняющим и невытесняющим ядром? Какая работа требуется от программиста, чтобы сделать ядро вытесняющим?
Как создать и работать с пользовательским режимом?
В документах ARM говорится, что в пользовательском режиме любая инструкция, переключающаяся в привилегированный режим, будет рассматриваться как неопределенная инструкция.
Если да, то единственный способ для программы пользовательского пространства использовать код ядра — это системные вызовы?
Как тогда ядро отвечает или взаимодействует с пространством пользователя?
Означает ли это, что единственным потоком ядра после загрузки (в простой системе )будет бездействующий поток?
Если страница, на которой находится код ядра и данные, не отображается при переключении на пользовательский процесс,затем при системном вызове или прерывании, как выполняется код ядра без отображения в виртуальном адресном пространстве?
Означает ли «вытесняемое ядро» только то, что ядро было спроектировано таким образом, чтобы было безопасно переключать контекст во время выполнения кода ядра? или это требует дополнительной работы, если таковая имеется?
О, и если такие множественные вопросы здесь не разрешены, извините, ничего не нашел по этому поводу.