программирование моего собственного ядра - PullRequest
1 голос
/ 07 апреля 2011

Мне нужны некоторые указания, чтобы начать изучать программирование собственного ядра операционной системы.

Только для образовательных целей.

Как мне написать собственное ядро?

Ответы [ 3 ]

6 голосов
/ 07 апреля 2011

Сначала я бы спросил: почему вы выбрали "запись ядра?"Любой ответ, кроме «идея реализации моих собственных структур задач в памяти для замены планировщиком, который я пишу, и использованием памяти, которая управляется кодом, который я написал, и защищена абстракциями атомарных инструкций машинного уровня и дается мне/ O доступ через абстракции, которые располагаются поверх реальных аппаратных интерфейсов, мне кажется «плохим ответом, который указывает на то, что вы не проводили никаких исследований и тратите свое время.

Если вы ответили аналогично вышесказанному,тогда у вас есть хорошая отправная точка, и вы знаете, что вам нужно исследовать (то есть вы в какой-то степени можете точно определить, какую информацию вы не знаете, но вам нужно ее выяснить).

В любом случае, яне думаю, что этот вопрос стоит задаватьВ одном случае вы не провели собственного исследования, чтобы выяснить, действительно ли вы можете это сделать, а в другом случае вы задали слишком широкий вопрос.

1 голос
/ 09 апреля 2011

Возможно, вы можете начать с изучения OS / 161 , упрощенной операционной системы Гарварда для образовательных целей. ОС работает на симуляторе, поэтому вам не нужна новая машина для ее запуска. Я использовал его для курса по операционной системе, и это действительно очень помогло.

Также я думаю, что вы, возможно, действительно захотите пройти курс обучения по операционной системе, если вы этого еще не сделали.

1 голос
/ 08 апреля 2011

Это не так сложно, но вам нужно узнать о правильном управлении ресурсами и низкоуровневом устройстве ввода-вывода.Если вы нацелены на стандартную коробку x86, вам нужно узнать, как работает BIOS и как устроен диск.Например, BIOS будет считывать первый блок диска в память по какому-либо фиксированному адресу, а затем перейдет по этому адресу.Поскольку в одном блоке, вероятно, не хватит места для хранения вашего ядра, вам нужно написать загрузчик, чтобы прочитать ядро ​​с диска и загрузить его.

Написание минимального ядра, которое выполняет некоторые задачи.Простая многозадачность и выполнение операций ввода-вывода с использованием только BIOS не так уж и сложны, просто не ожидайте, что в ближайшее время выскочит окно и повозитесь.Вы будете заняты попыткой реализовать простую файловую систему и заставить работать read() и write().

...