Co je kritický stav a co při něm hrozí? V praxi nebezpečné stavy u takových zařízení vznikají buď vnějším zásahem uživatele, případně v kombinaci s chybou v aplikačním programu, který ne vždy je jednoduchý a spolehlivý. Použití OS typu Linux může přinést nějaké riziko navíc, ale není to zásadní.
V průmyslu jde typicky o strojní zařízení, a na to jsou functional-safety normy (IEC61508, ISO13849), specializovaný HW/SW certifikovaný podle těchto norem, a metodiky, jak to celé řešit. Ve zkratce je takový stroj vybaven nezávislým safety subsystémem, který detekuje nebezpečné stavy a vhodně na ně reaguje - v nejjednodušším případě odpojením napájení nebezpečné části. Každou takovou funkci na základě analýzy rizik zařadíte do jedné z definovaných kategorií spolehlivosti - tím říkate, jakou pravděpodobnost selhání bezpečnostní funkce můžete v daném případě akceptovat. Podle toho je pak nutné vybrat všechny prvky v "kritické cestě" a jejich zapojení.
V nejjednodušším případě může být takovým safety subsystémem jen redundantní relé s monitorovacím obvodem (safety relay) a nějaké Emergency Stop tlačítko - hříbek.
U složitějších zařízení to pak je programovatelný controller, s interní redundancí (dva CPU se vzájemnou kontrolou, případně lockstep CPU, background check paměti apod.). Případně je takový safety controller součástí např. průmyslového robotu, ale podstatné je, že jeho program/konfigurace jsou oddělené od provozní aplikace. Změna je možné pouze s autentizací, a je tam nějaký hash celé konfigurace, a provozovatel zařízení by si měl hlídat, že se nezměnil oproti zdokumentovanému stavu.
Všechny vstupy a výstupy u vyšších bezpečnostních kategorií jsou pak dvoukanálové. Hlídá se funkce spínacích prvků atd. Když se zjistí jakákoliv anomálie, přechází se do fail-safe stavu "všechno vypnuto". Pokud vypnutí napájení nevede na inherentně bezpečný stav, nebo by to mohlo vést k destrukci zařízení/materiálu, tak se to celé samozřejmě komplikuje...
Poslední dobou vznikají i techniky, jak tohle celé dělat virtualizovaně i nad Linuxem a běžným HW, viz např.: https://www.codesys.com/products/codesys-safety/codesys-virtual-safe-control.html
U hraček jako domácí 3D tiskárny se aspoň můžete držet těch fail-safe principů. Tedy aby např. při pádu userspace aplikace došlo k okamžitému zastavení všech pohybů.