ОС ВИНИКС
Winix — это минимальная, любительская, образовательная операционная система в стиле UNIX для микропроцессора с архитектурой Waikato RISC (WRAMP).
Вдохновленная операционной системой Minix1, Winix включает в себя полнофункциональное ядро с такими функциями, как управление процессами и памятью, файловую систему в памяти, контроль исключений и оболочку пользовательского пространства с интерактивной командной строкой. И, ради развлечения, вы даже можете сыграть в классическую игру «Змея», просто набрав snake
в командной строке.
Демо
Играя в змею
Использование Pipe в оболочке
Функции
- Управление памятью ядра: виртуальная память, отображение страниц.
- Управление процессами: поток ядра, создание процессов
- Контроль исключений и обработчик прерываний
- Файловая система в памяти, поддерживающая большую часть API POSIX.
- Оболочка Bourne, поддерживающая несколько каналов и перенаправление.
- Управление пользовательской памятью: malloc() free()
- Пользовательская сопрограмма с поддержкой
ucontext.h
- Дамп Stacktrace, анализ сегментов
Поддерживаемые команды
- змея
- оболочка
- кот
- КП
- эхо
- греп
- история
- лс
- мкдир
- МВ
- пс
- страдающий
- РМ
- статистика
- тест
- трогать
- время безотказной работы
- Туалет
- дф
- ты
- Ин
- хвост
Юнит-тест
тесты
Как бежать
Загрузите последнюю версию Rexsimulator отсюда.
NB mono
требуется для работы в среде Linux/MacOS, инструкция по скачиванию
Загрузите последнюю версию двоичного файла winix.srec
отсюда.
Запустите Rexsimulator.exe
Нажмите Quick Load
, выберите winix.srec
Загрузка Виникс
Как скомпилировать
Примечание. Для компиляции требуется среда Linux.
Предварительное условие
Дебиан/Убунту
sudo apt-get install xutils-dev gcc
Клонировать и компилировать
git clone https://github.com/halfer53/winix.git
cd winix
make -j $(( `nproc` + 2 ))
Советы по отладке
Отладочный Makefile
Подобно Linux kbuild, Winix поддерживает опцию verbose. Вы можете отладить Makefile, установив verbose равным 1.
Отладка ядра
kprintf()
: твой друг.
trace
: введите трассировку в оболочке, чтобы распечатать все системные вызовы в последовательном порту 2.
Поддерживаемый системный вызов
- раз
- Выход
- вилка
- вилка
- исполнять
- брк
- тревога
- подписка
- сигрет
- ожидание
- убийство
- получитьпид
- Winинформация
- ошибка
- dprintf
- системная конфигурация
- сигсуспенд
- в ожидании
- сигпрокмаска
- setpgid
- getpgid
- открыть
- читать
- писать
- закрывать
- создать
- трубка
- мкнод
- чдир
- чаун
- chmod
- статистика
- фстат
- обмануть
- дубликат2
- связь
- отсоединить
- получить вмятину
- доступ
- мкдир
- синхронизировать
- Я ищу
- маска
- ФКНТЛ
- ioctl
- сетсид
- наносон
- getppid
- сигнал
- сбрк
- статистика
- получить cwd
- Твилк
- установитьтаймер
Кредиты
Пол Монигатти