6.2 KiB
6.2 KiB
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) вместо множества мелких пинов.
- Резервные контроллеры подключайте только когда нужно вынести тяжёлые вычисления.
См. следующие документы для деталей протокола, памяти и ФС.