Operační systémy pro mobilní zařízení (OSMZ)

Týden II. (15.2.-19.2.2021)

K materiálům z minulého týdne jsem Vám připravil dvě kratší video ukázky s demonstrací kompilace jádra a implementací nového systémového volání. Tématem tohoto (druhého) týdne je koncept procesů, jejich životního cyklu a přepínání kontextů.

Proces je název pro spuštěnou instanci počítačového programu. Obsahuje nejen kód vykonávaného programu ale také veškerá jeho dynamická data. Díky tomu na jednom počítači může jedna aplikace (program) běžet v podobě jednoho či více procesů s různými daty. V Linuxu je proces definován strukturou task_struct, kterou naleznete ve zdrojových souborech jádra v include/linux/sched.h V současné podobě se jedná o dosti složitou strukturu, její základní a komentovanou podobu z kernelu verze 0.12 si můžete přečíst v knize A Heavily Commented Linux Kernel Source Code na straně 212. Každý proces je reprezentován touto strukturou, nazývanou obecněji PCB (Process control block), přičemž jejich maximální počet může být pevně určen nebo měněn dynamicky (v závislosti na konkrétním OS). Jinou ilustraci PCB, konkrétně operačního systému Minix, naleznete v prezentaci na str. 49.

Během běhu operačního systému dochází v rámci multitaskingu k rychlému přepínání procesů, spouštění a ukončování jejich běhu, čekáním na vstupy atd. Životní cyklus procesu si tak můžeme ilustrovat diagramem stavových přechodů (prezentace str. 46 a např. animací). U několika souběžných procesů je zařazení k běhu řízeno pravidly jakými jsou časová kvanta, priorita, či hardwarová přerušení (toto si popíšeme příští týden v souvislosti s plánovači úloh). Přepínání mezi procesy se nazývá přepnutí/změna kontextu. Při tomto dochází k uložení aktuálního stavu CPU odpovídající doposud běžícímu procesu a obnovení stav CPU pro pokračování druhého procesu. Ukázku s popisem akcí prováděných při přepnutí procesu naleznete v prezentaci o FreeRTOS. Ukázka demonstruje přepnutí kontextu na architektuře AVR (použitá např. na Arduino deskách) a operačním systému FreeRTOS. V Linuxu je implementace složitější a tak méně vhodná pro demonstraci a vysvětlení.

S přepínáním kontextu se pak prakticky seznámíme ve cvičeních, kde budeme implementovat vlastní plánovač vláken a budeme muset řešit přepnutí kontextu vláken v rámci jednoho běžícího procesu.

PREZENTACE

LITERATURA

Andrew S. Tanenbaum - Moderní operační systémy. 4. vydání:

  • Procesy (str. 39-41)
  • Kapitola Procesy a vlákna (str. 85-106)

BONUS MATERIÁLY

Podrobnější popis procesů s návaznosti na plánovače.
Ve video ukázce jsme si ukázali nástroj strace umožňující sledovat použití systémových volání. Linux disponuje velkou škálu dalších monitorovacích a ladících utilit, jejichž shrnutí naleznete zde. Stránka obsahuje i velmi názorný obrázek s názvy příslušných aplikací.
Podrobnější popis procesů naleznete také v Linux Documentation Project

OTÁZKY

Po přečtení výše uvedených textů byste měli být schopni odpovědět na další otázky z okruhů ke zkoušce, konkrétně:

  • Charakterizujte proces a jeho životní cyklus.
  • Co je to tabulka popisu procesů (Process Control Block, PCB), k čemu slouží a jaké záznamy musí obsahovat.
  • Vlákna vs. procesy, charakteristika – společné a rozdílné rysy, implementace v OS.