Пишу игрушечную ОС (о прерываниях)
Данная статья написана в форме поста для блога. Если она окажется вам интересной, то будет продолжение. Последние четыре месяца посвящаю свободное от работы время написанию игрушечной ОС для x86_64. Исходный код лежит здесь. Общая задумка (пока весьма далёкая от реализации) следующая: единое 64-битное адресное пространство с вечно живущими нитями (как у Phantom OS); виртуальная машина, обеспечивающая безопасность исполнения кода. На данный момент реализованы: 1. загрузка ядра при помощи multiboot-загрузчика (GRUB); 2. текстовый VGA-режим (16-цветов, kprintf); 3. простой интерфейс настройки отображения страниц; 4. возможность обработки прерываний на C; 5. идентификация топологии процессоров (сокеты, ядра, потоки) и их запуск; 6. работающий прототип SMP-планировщика с поддержкой приоритетов; Пропустим описание multiboot-загрузки и работы с VGA-режимом (об этом не писал, разве что, ленивый). Про отображение страниц тоже не хочу писать, боюсь это будет скучно (может, в другой раз). Давайте лучше поговорим об обработке прерываний.Читать дальше →