Туториалы по написанию "операционной системы" ;)
Для того, чтобы интересующиеся могли легко разобраться в основах осеписания, я сделал несколько простеньких примеров написания оси.
------------------------------------------------------------------
ostut01/ - Простое ядро, загружается по адресу 0x100000 (1Мб).
Получает управление из grub, устанавливает собственную
таблицу дескрипторов (GDT) и выводит сообщение на экран.
ostut02/ - Большой набор улучшений. Инициализируется IDT, представлены
обработчики 0x00-0x20. IRQ переназначаются на адрес 0x20 и т.д.
Устанавливается обработчик прерывания от таймера (IRQ 0).
Работу обработчика таймера можно увидеть по выводимому символу в верхнем правом углу экрана.
Добавлена функция vsprintf() (нагло упёрта из linux-0.01 :) )
На основе этой функции реализован printk() (аналог printf() с некоторыми ограничениями)
Подробнее - см. исходные тексты.
ostut03/ - Пример страничной адресации памяти.
Написан простейший менеджер памяти.
Создаётся и заполняется каталог страниц. Монтируются все физически существующие страницы.
Для примера работы страничной адресации производится монтирование страницы видеопамяти (0xB8000) по адресу 0xF0000000 и тестовая запись по этому адресу.
ostut04/ - Невытесняющая аппаратная многозадачность.
Реализованы два процесса, работающих в 0 кольце.
Переключение задач происходит при помощи ljmp на селектор следующего процесса.
(видимо придётся упростить этот пример - слишком много лишнего кода написал)
В следующей версии планируется реализация вытесняющей многозадачности.
------------------------------------------------------------------
Прошу извинить за возможные (а как же без них?) ошибки. Если тема интересна - пишите.
Скачать версию 0.4 можно с http://fos.net.ru/ostuts/ostuts-0.4.tar.bz2
Последние версии искать здесь на http://fos.net.ru/