Есть только 2 возможности:
слишком сложный, чтобы быть полезным для обучения
слишком простой, чтобы быть полезным для обучения
Такие вещи, как необычные функции / расширенные функциональные возможности, смягчение проблем безопасности, устранение аппаратных ошибок / ошибок, производительность, масштабируемость и поддержка очень широкого спектра различного оборудования, увеличивают сложность кода; и если вы посмотрите на настоящую коммерческую ОС (например, Linux, может быть), которая должна заботиться обо всех этих вещах, то трудно понять одну вещь (например, управление памятью) без всякой сложности, мешающей и значительно усложняющей ее. учиться.
Если у вас есть простая ОС, которая не выполняет ничего из этого (нет причудливых функций, нет проблем с безопасностью и т. д.), тогда гораздо проще выучить основные принципы c из нее. ; но также становится невозможным использовать его, чтобы узнать о необычных функциях, смягчить проблемы безопасности, устранить аппаратные ошибки / ошибки, ...
Решение состоит в том, чтобы начать с простой ОС (например, XV6), чтобы изучить основы, а затем переключитесь на настоящую ОС, чтобы узнать все остальное.
Однако; Большинство курсов ОС в университетах не предназначены для обучения написанию ОС. Вместо этого они предназначены для предоставления вам базовой информации об операционных системах, чтобы вы могли использовать эти знания при написании обычных программ для существующих операционных систем. По этой причине (и из-за временных ограничений) они выполняют только первую часть (с простой ОС, такой как XV6), а затем курс заканчивается.