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

ToDo

  1. Написать минимальный sh(1)
    1. реализовать пользовательские процессы
    2. написать файловую систему
      1. написать драйвер Floppy, ATA, SATA
      2. написать минимальную файловую систему
      3. написать виртуальную файловую систему
  2. APIC, SMT

Ссылки

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

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



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