Files
BarotraumaLuaProjects/atlas_os/docs/06-execution-model.md

2.7 KiB

06 — Модель выполнения (Execution Model)

1. Роли контроллеров

Контроллер Что хранит в Lua Что делает
IOC (n шт.) цвет, буфер вывода, текущий пользователь вывод на терминал, clear, приём ввода, login/logout
CMC (1) таблица предопределённых команд, сессии парсинг, выполнение только встроенных команд, вызовы MMC
MMC (1) кэш inode (опц.), free list head операции ФС, сжатие/распаковка, проверка прав

2. Сессия (в CMC)

session = {
    uid = 100,
    gid = 10,
    cwd = "/home/captain",
    env = { PATH = "/bin:/usr/bin" }
}
  • Сессия создаётся при login.
  • cwd обновляется командой cd (MMC проверяет x).
  • uid/gid передаются в каждый MEM-запрос.

3. Модель команд

  • Контроллеры выполняют только предопределённые команды, зашитые в прошивку (Lua-код контроллера).
  • Пользователь не может выполнять произвольный Lua-код.
  • Доступные команды: ls, ls -l, ls -la, cat, cd, login, logout и другие, зарегистрированные в CMC.
  • Каждая команда — жёстко заданная функция в firmware CMC.

4. Копроцессоры (опционально)

Оставшиеся 5 контроллеров могут выполнять:

  • тяжёлые команды (find, grep, архивация);
  • фоновые задачи (логи, мониторинг);
  • параллельные сессии нескольких пользователей.

Связь — по той же шине MEM/CMD.

5. Очередь и сериализация

  • CMC допускает только один активный MEM-запрос одновременно.
  • Следующая команда ждёт ответа OK/ERR.
  • При отсутствии ответа — таймаут и ошибка.

6. Экономия памяти Lua

  • Храните в сессии только скаляры (cwd — строка пути, uid/gid — числа).
  • Буферы файлов и большие таблицы — только в SEG (MMC).
  • Избегайте рекурсии и больших локальных таблиц в командах.

См. 07-command-set.md — конкретные команды и их аргументы.