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