Přeskočit na hlavní obsah

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.
Nejste tam sami

Program, který vytvoříte, bude běžet současně s dalšími aplikacemi a sdílet s nimi zdroje počítače.

Spustitelné soubory

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ý.

  • Windows používá koncovku .exe
  • Linux based OS používájí příznak x v metadatech souboru.

⚙️ 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í.
Co je to MCU?

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í.