Files
BarotraumaLuaProjects/atlas_os/docs/01-hardware.md

6.2 KiB
Raw Blame History

01 — Аппаратный слой (Hardware)

1. Физические компоненты

AtlasOS использует следующие компоненты Barotrauma + MicroLua:

Компонент Кол-во Назначение Ёмкость / пины Примечание
MicroLua n+2 (+резерв) TBC (n шт.), CMC, MMC 32 in / 32 out по одному TBC на терминал + центральные CMC/MMC
Memory n (≥2) сегменты SEG0..SEGn 4096 символов UTF-8 хранилище
Terminal / Display n экраны по одному TBC на терминал (изоляция сессий)

Дополнительно:

  • Кнопки / переключатели — источники ввода команд.
  • Memory-компоненты подключаются к MMC по WE- и RD-линиям (подробно ниже).

2. Распределение контроллеров

Контроллер Роль Входы (примеры) Выходы (примеры)
TBC (n шт.) изоляция терминала, login/logout, сессия ввод с терминала команды к CMC, вывод на терминал
CMC (1) центральный CPU — только предопределённые команды сообщения от TBC команды к TBC и MMC
MMC (1) MMU + inode-ФС запросы от CMC операции с SEG

Оставшиеся до 5 контроллеров:

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

3. Пины и типы сигналов (MicroLua)

Тип на пине Формат Пример Использование
integer 0, 1, -100 out[2] = 1 (clear) флаги, адреса, коды
string UTF-8 out[1] = "ls -l" тексты, имена файлов, JSON-подобные сообщения шины
color "R,G,B" "255,0,128" цвет текста на терминале

Важно: строковые сигналы неэкранированы по умолчанию. При передаче по шине специализированные символы (|, \n, ,) экранируются внутри протокола (см. 02-bus-protocol.md).

4. Физическая топология (схема пинов)

          Терминал 1         TBC1          Терминал 2         TBC2
          ┌────────┐       ┌────────┐      ┌────────┐       ┌────────┐
          │экран   │◀──────│        │      │экран   │◀──────│        │
          │ввод    │──────▶│        │      │ввод    │──────▶│        │
          └────────┘       └────▲───┘      └────────┘       └────▲───┘
                                 │                                │
                                 └──────────────┬─────────────────┘
                                                │ (однонаправленно)
                              ┌─────────────────▼─────────────────┐
                              │              CMC (1)              │
                              │        центральный CPU            │
                              └─────────────────▲─────────────────┘
                                                │ (однонаправленно)
                              ┌─────────────────▼─────────────────┐
                              │              MMC (1)              │
                              │         память + inode-ФС         │
                              └─────────────────▲─────────────────┘
                    WE/RD/DATA (однонаправленно)
               ┌──────────────┬──────────┬─────────────┐
           ┌───┴───┐      ┌───┴───┐   ┌───┴───┐     ┌───┴───┐
           │ SEG0  │ ...  │ SEGk  │   │SEG n-1│     │ SEGn  │
           └───────┘      └───────┘   └───────┘     └───────┘
  • Сигналы только in → out.
  • На каждый терминал — свой TBC (изоляция, login/logout, user context).
  • Один CMC — центральный исполнитель всех предопределённых команд.
  • Один MMC — доступ к памяти и ФС.

См. детальную организацию пинов и протокол в 02-bus-protocol.md.

5. Ограничения и рекомендации по экономии

  • Каждый SEG несёт ** overhead сериализации** (|, \n). Минимизируйте мелкие записи.
  • Храните метаданные только в SEG0 (системная область).
  • Используйте агрегированные сообщения шины (batch) вместо множества мелких пинов.
  • Резервные контроллеры подключайте только когда нужно вынести тяжёлые вычисления.

См. следующие документы для деталей протокола, памяти и ФС.