Prostředí pro běh programu
To, na čem program běží, zásadně ovlivňuje, co při programování můžeme dělat a jak.
Základní rozdělení je na dvě prostředí:
🖥️ Programování s OS
Program běží na zařízení s operačním systémem (Linux, Windows, Android, …). Operační systém přiděluje čas procesoru, paměť, stará se o soubory a komunikaci s hardwarem. Program využívá služby OS a nemusí řešit nízkoúrovňové věci. Více o operačních systémech se dozvíte zde.
Zpravidla se používá na počítačích, noteboocích nebo telefonech.
- Výhoda: Snazší programování — OS se stará o nízkoúrovňové detaily jako správu paměti nebo práci s IO registry.
- Nevýhoda: Nepřesné časování — OS rozděluje výkon mezi všechny běžící procesy.
Program, který vytvoříte, bude běžet současně s dalšími aplikacemi a sdílet s nimi zdroje počítače.
Pokud program běží pod operačním systémem a je nutné jej zkompilovat, zkompulují se to tzv. spustitelného souboru. Identifikace tohoto soubor je pro každý typ OS jiný.
⚙️ Programování bare-metal
Program běží přímo na mikrokontroléru (MCU). Nemá žádný operační systém — všechno musí dělat sám. Má ale plnou kontrolu nad čipem a tím i nad časováním.
Zpravidla se používá na malých vestavěných zařízeních.
- Výhoda: Plná kontrola nad během programu — ovládáte každý takt procesoru.
- Nevýhoda: Nutnost řešit hardware na nízké úrovni, složitější paralelní programování.
MCU (mikrokontrolér) je malý počítač určený pro vestavěné systémy. Může jít o vývojové platformy jako Arduino, ESP32 nebo Raspberry Pi Pico. Na rozdíl od běžného počítače nemá plnohodnotný operační systém.
⏱️ Real-time operační systémy (RTOS)
Existují i speciální malé operační systémy, které se snaží vyvážit výhody a nevýhody obou přístupů.
Zajišťují přesnější časování a přitom dovolují běh více úloh najednou.
Mezi nejznámější patří FreeRTOS, NuttX nebo Zephyr.
Existují i „real-time“ verze běžných OS (Linux,
Windows), ale ty nedosahují tak přesného časování.