LAMP OS
LAMP OS - учебный проект по созданию ядра для процессоров архитектуры x86.
Содержание
Зависимости
Для сборки проекта вам потребуются make(1), компилятор gcc с установленным пакетом gcc-multilib, genisoimage(1) из набора cdrkit и qemu(1) для тестирования работы проекта.
На дистрибутиве Debian установить зависимости можно следующим образом:
# apt-get install make git qemu gcc genisoimage gcc-multilib
Установка
Скачайте проект с нашего github аккаунта или пропишите:
$ git clone https://github.com/amplab-ru/lampos/
Проект можно собрать с помощью команды:
$ make
Проект можно протестировать с помощью команды:
$ make test
Проект можно протестировать с получением отладочной информации с помощью команды:
$ make debug
Устройство проекта
Все исходные коды заголовков помещаются в include/. исходные коды же находятся в src/.
В src/boot.s находится ассемблерный код функции start() отвечающий за первоначальную загрузку и включения страничного механизма, который после отработки передает управление функции main() в файле src/main.c.
В src/main.c находится основной код инициализвации ядра. Функция main() запускает:
- инициализацию VGA драйвера в vga_init()
- инициализацию COM портов с помощью com_init()
- инициализацию сегментов в segm_init()
- инициализацию прерываний в int_init()
- обработку Multiboot заголовка с помощью mb_parse()
- инициализацию аллокаторов в mem_init()
Реализованный функционал
- Вывод текста на VGA монитор с помощью iprintf() или dprintf() (вывод отладочной информации)
- Ввод и вывод данных из COM порта (iprintf() и dprintf() дублируют вывод в COM1)
- Реализована почти полная работа с памятью.
- Реализована работа с сегментами
- Реализован аллокатор физических страниц
- Реализован аллокатор виртуальных страниц
- Реализован аллокатор для ядра поверх двух вышеназванных аллокаторов
- написана ядерная отладочная командная оболочка
- написан простой драйвер клавиатуры
- реализована поддержка прерываний с помощью PIC
- Поддержка TIP (программируемый таймер).
ToDo
- Написать минимальный sh(1)
- реализовать пользовательские процессы
- написать файловую систему
- написать драйвер Floppy, ATA, SATA
- написать минимальную файловую систему
- написать виртуальную файловую систему
- APIC, SMT
Ссылки
- OSDev - англоязычная вики про создания операционных систем
- Intel® 64 and IA-32 Architectures Software Developer’s Manual
Страницы посвященные этой теме
КатегорияПроекты