В компании «СофтКом» прорабатывается создание собственной операционной системы для платформ и задач заказчика. Как правило, это вычислительные задачи реального времени: задачи реализации моделей управления памятью, интерфейса работы с аппаратными таймерами и другие технические задачи. Предпочтительный язык реализации задач – Rust.
https://github.com/IvanArkhipov1999/MartosВозможные темы для курсовых работ:1)
Non-preemptive диспетчер задач для процессора архитектуры mips64Диспетчер задач распределяет процессорное время между задачами. В самом простом случае — задачи просто запускают по очереди. И для простых микроконтроллеров большего и не надо. Но в более сложных процессорах имеются, например, различные уровни доступа к ресурсам. Операционная система имеет один уровень доступа, пользовательские задачи — другой. Переключение между этими уровнями доступа происходит за счёт специальных ассемблерных команд. Организовать диспетчер задач и переключение уровней доступа при переходе управления от ос к прикладным программам и наоборот — цель предлагаемой темы.
2)
Работа с таймерами процессора архитектуры mips64Разные процессоры имеют различные аппаратные таймеры. Реализовать апи для таймеров специализированного процессора — цель данной темы.
3)
C-совместимость операционной системы, реализованной на rustОперационная система пишется на rust, а прикладные программы хочется писать и на C. Rust это позволяет, но на практике возникает множество задач, связанных с правильной компиляцией и сборкой библиотеки операционной системы и компиляцией, линковкой с операционной системой и сборкой прикладных программ. Помимо всего, ещё и сишный api необходимо реализовать. Всё это — данная тема.
4)
Preemptive диспетчер задач для процессора архитектуры esp32Есть диспетчеры задач, которые предоставляют программистам прикладным программ реализовать завершение задачи, а есть, которые переключают задачи по прерыванию таймера. Предлагается реализовать второй вариант для простого микроконтроллера esp32. Если выберете эту тему, то вам предстоит погрузиться в ассемблерные дебри, поработать с таймерами и с памятью для сохранения и восстановления контекстов задач