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

6.1 KiB

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

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

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

Компонент Кол-во Назначение Ёмкость / пины Примечание
MicroLua 3 (+5 резерв) IOC, CMC, MMC 32 in / 32 out контроллеры блоков
Memory n (≥2) сегменты SEG0..SEGn 4096 символов UTF-8 хранилище
Terminal / Display n экраны по одному IOC на терминал, login/logout per-terminal

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

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

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

Контроллер Роль Входы (примеры) Выходы (примеры)
IOC (n шт.) терминал + login in1 = ввод строки out1 = текст, out2 = clear, out3 = цвет
CMC (1) центральный CPU, shell сообщения от IOC команды к IOC и MMC (однонаправленно)
MMC (1) MMU + inode-ФС ответы от SEG WE/RD/DATA к сегментам

Оставшиеся до 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          IOC1          Терминал 2          IOC2
          ┌────────┐       ┌────────┐      ┌────────┐       ┌────────┐
          │экран   │◀──────│out1-3  │      │экран   │◀──────│out1-3  │
          │ввод    │──────▶│in1     │      │ввод    │──────▶│in1     │
          └────────┘       └────▲───┘      └────────┘       └────▲───┘
                                 │                                │
                                 └──────────────┬─────────────────┘
                                                │ (однонаправленно)
                              ┌─────────────────▼─────────────────┐
                              │              CMC (1)              │
                              │        центральный CPU            │
                              └─────────────────▲─────────────────┘
                                                │ (однонаправленно)
                              ┌─────────────────▼─────────────────┐
                              │              MMC (1)              │
                              │         память + inode-ФС         │
                              └─────────────────▲─────────────────┘
                    WE/RD/DATA (однонаправленно)
               ┌──────────────┬──────────┬─────────────┐
           ┌───┴───┐      ┌───┴───┐   ┌───┴───┐     ┌───┴───┐
           │ SEG0  │ ...  │ SEGk  │   │SEG n-1│     │ SEGn  │
           └───────┘      └───────┘   └───────┘     └───────┘
  • Сигналы только in → out (никаких bidirectional пинов между контроллерами).
  • Каждый терминал имеет свой IOC — отдельная сессия + login/logout.
  • CMC — единственный исполнитель команд (центральный CPU).
  • MMC — единственный доступ к памяти.

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

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

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

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