SayoriOS или о том, как мы пишем свою мини ОС

Небольшое предисловие

Мы пишем ос чисто как хобби, в свободное от всего время, как есть возможность, или как говорят еще "не являемся убийцами Windows и Linux", просто примите это как кто-то коллекционирует разные вещи или рисует картины. А также это мой первый пост на подобных ресурсах как Пикабу. Благодарю.

Почему называется именно SayoriOS?

Это является отсылкой к игре Doki Doki Literature Club, там был один из персонажей, к сожалению, те кто играл в игру поймут более глубокую отсылку.

SayoriOS или о том, как мы пишем свою мини ОС Операционная система, Программирование, Хобби, Проект, Разработка, Программист, Развитие, Длиннопост

Как все начиналось?

Кто заглянет к нам на GitHub, может заметить что отсчет идет с версии v0.2.13.1, дело в том что все до версии v0.3.0 было основано на другой ос (её, версию кстати после нашего релиза (v0.2.13.1) удалили), с версии v0.3.0 было проделано множество работы, прошло уже больше года и я хочу вам рассказать чего мы добились за это время.

На каком языке программирования вы пишете ОС?

Решение использовать C было принято в основном из соображений простоты, программирование ядра само по себе достаточно сложная задача. Не все языки программирования предназначены для использования в среде без ядра/ядра, в этом отношении C идеально подходит для задач такого рода. Меньше борьбы с языком за то, чтобы он работал в среде ядра, означало больше внимания к реальному проекту.

Почему вы пишете именно x86 битную версию, а не x64?

Ограничение себя 32-битной версией x86 также было намеренным и опять-таки во имя простоты. x86_64 намного сложнее, чем 32-разрядный x86, и мы (команда) хотели сначала получить некоторый опыт работы с последним, прежде чем переходить к 64-разрядному режиму.

Немного о действующих лицах

Никита Пиминов - собственно я, как создатель и инициализатор проекта

Андрей Павленко - второй разработчик, написал почти все драйвера для ос

Дима Радеев - добавил поддержку звука ошибок

Даниил Лебедев - добавил поддержку Rust в ядре

Рустем Гимадутдинов - добавил поддержку мыши PS/2

А теперь перейдем к краткому ChangeLog'у

v0.3.0 - Релиз 09.11.2022

Скриншоты версии v0.3.0

Как я и говорил ранее, самое большое обновление было тут.

У нас наконец-то тогда появилась поддержка потоков, можно было выполнять сразу два дело одновременно, но тогда очень ощутима потеря производительности. Для драйвера клавиатуры мы завезли поддержку русских букв, что и сейчас, что и до этого, смена раскладки находиться на F1. Самое интересно тогда было связанно с файлами, было сделано что-то подобие своей файловой системы, и аналог своего формата изображений Duke.

v0.3.1 - Релиз 16.12.2022

Скриншоты версии v0.3.1

У этого релиза, визуальных отличий почти не было, была добавлено поддержка мыши, благодаря Рустему Гимадутдинову, пофиксили большинство предупреждений, добавили поддержку дробных чисел, а также вернули поддержку ELF.

v0.3.2 - Релиз 02.04.2023

SayoriOS или о том, как мы пишем свою мини ОС Операционная система, Программирование, Хобби, Проект, Разработка, Программист, Развитие, Длиннопост

В этой версии ситуация уже по лучше :) Опять же исправили множество багов (и добавили новых)

  • Появилась поддержка нормальных шрифтов PSF

  • Поддержка PCI

  • Поддержка звука через AC97 (в QEMU работает в нормально, в VBox'e заикается ,а на реальном железе не тестировалось)

  • Обновили местами интерфейс

  • Добавили Parallel Desktop - это прототип рабочего стола

v0.3.3 - Релиз 08.10.2023

Скриншоты версии v0.3.3

У этого релиза, также визуальных отличий почти не было, были только небольшие фишки

  • Добавлена система триггеров (событий)

  • Поддержка setjmp/longjmp

  • Поддержка температуры процессора

  • Первые шаги ACPI

  • Поддержка SSE

  • Определение других процессорных ядер

  • Научились работать с жесткими дисками, IDE PIO, ATAPI Дисководы, а также с Floppy (RW)

  • Добавлена поддержка vsprintf(), sprintf(), asprintf(), vasprintf()

  • Ну и пофиксили некоторые моменты, и некоторые другие фишки

v0.3.4 - Релиз 31.12.2023

Скриншоты версии v0.3.4

Это был наш предновогодний релиз, и вот список изменений:

  • Наконец, новый менеджер памяти, со старым были большие проблемы, и именно он создавал большинство багов в ос

  • Исправили детектор имени процессора, раньше выводилась пустота

  • Исправлена работа на видеокартах с Cirrus

  • Добавлена поддержка IDE-дисков (в режиме DMA) и частичная поддержка SATA

  • Переписали полностью, функционал который отвечал за файлы, теперь этим занимается менеджер файловых систем и дисков (nvfs | dpm | fsm)

  • Туда же подключили все устройства (виртуальный диск, диски, floppy)

  • Удалили sefs (был наш аналог файловой системы) и аналог Targa, заменив собственно TarFS + Targa (с 4ю режимами)

  • Добавили базовую поддержку libstring и libvector

  • Добавили проигрыватель miniplay (Воспроизводит wav файлы)

  • Добавили поддержку JavaScript (port elk) => JSE

  • Начата работа над сетью

  • Добавлен эмулятор GameBoy, правда производительность у него очень низкая.

Буду рад обратной связи!

Благодарю всех за внимание!

Ссылка на GitHub: https://github.com/pimnik98/SayoriOS

Мы в VK: https://vk.com/sayorios

И телеграм: https://t.me/sayorios

В соц.сетях, можете найти мемы касаемо разработки, и сами новости.

Всех с наступившим Новым Годом и наступающим Рождеством.

Лига программистов C/C++

60 постов4.8K подписчиков

Добавить пост

Правила сообщества

Соблюдайте правила Pikabu:

https://pikabu.ru/html.php?id=wtf


Помимо этого ЗАПРЕЩЕНО:

- Размещать в сообществе посты стиля "Подскажите как удалить вирус", "Подскажите как установить программу", "Подскажите как починить монитор/телевизор/мышь/тостер/стиральную машину" или "Напишите за меня лабу в универ". Пожалуйста размещайте такие посты вне этого сообщества или в соответствующих для этого сообществах.