Kube по радио Вирта · кластер из трёх машин Оберона

машина лаборатории загрузка…

Три машины RISC5 на схеме самого Вирта (RTL, скомпилированный в WebAssembly), каждая в своём потоке. У каждой радио nRF24L01+ из Project Oberon; эфир между ними — эта страница. При включении каждая машина читает свою роль с последовательной линии, как облачная машина читает cloud-init: управляющая запускает Kube и применяет деплоймент, узлы подключаются. Набирать ничего не нужно. Время внутри машин идёт в несколько раз медленнее нашего: их секунда — несколько наших.

Кластер, как его видно по эфиру

узелслышенвыполняетназначено

Лабораторные

Эфир

На управляющей машине

Команда набирается под последней строкой окна System.Tool и запускается средней кнопкой, как это сделал бы человек; вывод идёт в журнал машины. Можно и самим щёлкнуть в экран и работать в нём: Alt (⌥) + щелчок — средняя кнопка.

Нарушитель в эфире

Ничья станция шлёт узлу с подами «ничего не выполняй» сразу после назначения управляющей машины, чтобы узел держал его в момент отчёта. Какое из них узел выполнит?

Как устроена эта страница

Машины — та же модель RTL, что и в других лабораторных, с радио и последовательной линией в периферии (impl/tb/memradio.h). Ретранслятор и разбор сообщений Kube — impl/web/kube-air.js, тот же протокол, что в qemu/radio/relay.py и listen.py. На диске Kube, KubeNet, Pods, нагрузки Ticker и Boot, собранные impl/tools/install_modules.py. Ключ кластера здесь 00c0ffee00c0ffee, кластер kube.