В ядро MyOs добавлена полноценная поддержка управления процессами,
а в оболочку — новые команды для работы с ними, включая
myfetch, ps, kill и
spawn.
Система процессов: от теории к практике
Мы реализовали базовую, но функциональную систему управления
процессами, которая включает:
-
Структуру процесса с PID, PPID, именем и состоянием
(
running, sleeping,
zombie, stopped)
- Таблицу процессов (максимум 64 одновременно)
- Иерархию «родитель–потомок»
-
Процесс
init с PID 1 как корневой элемент системы
-
Автоматическое усыновление «сирот» процессом
init
Новые команды оболочки
В shell добавлены команды для взаимодействия с процессами и
получения системной информации:
-
ps — вывод списка процессов с цветовым выделением
PID, PPID и состояния
-
kill <PID> — принудительное завершение
процесса по его идентификатору
-
spawn <TEXT> — запуск нового фонового
процесса с заданной строкой
-
threads — совместимость с предыдущими версиями
(информация о потоках)
-
myfetch — отображение информации о системе с
логотипом MyOs
Пример использования
myos> spawn "Hello from background"
myos> ps
PID PPID STATE NAME
1 0 running init
2 1 running Hello from background
myos> kill 2
Process 2 terminated.
Технические детали
Вместе с подсистемой процессов были улучшены и другие
компоненты:
- Устранено дублирование кода в
memory.c
-
Добавлена валидация длины пути в
filesystem.c
-
Унифицированы сообщения об ошибках в
shell.c
- Улучшена обработка ошибок в драйвере ATA
-
Везде, где возможно, добавлены квалификаторы
const для повышения безопасности
Это обновление — важный шаг на пути к полноценной многозадачной
операционной системе. В будущем планируется добавить виртуальную
память, расширенные системные вызовы и поддержку сигналов.