Это старая версия (1.9) ПроектLAMPOS.

LAMP OS

LAMP OS - учебный проект по созданию ядра для процессоров архитектуры x86.

Содержание

Зависимости

Для сборки проекта вам потребуются make(1), кросс компилятор, genisoimage(1) из набора cdrkit и qemu(1) для тестирования работы проекта.

На дистрибутиве Debian установить зависимости можно следующим образом:

 # apt-get install make git qemu gcc genisoimage

Установка

Скачайте проект с нашего 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)
  • Реализована почти полная работа с памятью.
    • Реализована работа с сегментами
    • Реализован аллокатор физических страниц
    • Реализован аллокатор виртуальных страниц
    • Реализован аллокатор для ядра поверх двух вышеназванных аллокаторов

ToDo

  1. написать минимальный sh(1)
    1. написать драйвер клавиатуры
      1. сделать поддержку прерываний и работы с PIC
  2. написать файловую систему
    1. написать драйвер Floppy, ATA, SATA
    2. написать минимальную файловую систему
    3. написать виртуальную файловую систему

Ссылки

  • OSDev - англоязычная вики про создания операционных систем
  • Intel® 64 and IA-32 Architectures Software Developer’s Manual

Страницы посвященные этой теме



КатегорияПроекты