McuLab jediný zdroj v čipu jsou takty

Tohle je statická kopie kapitoly pro vyhledávače. Interaktivní verze má animované obrázky, kontrolní otázky a tlačítka, která příklad načtou do kalkulačky.

Priority: kdo čeká na koho

Když v čipu běží víc periodických úloh, otázka „stihne se to?“ má přesnou odpověď. Není to odhad ani zkušenost — je to rovnice, která má jediné řešení.

proud8 / 50 µsperioda 50 µs, práce 8 µspoloha144 / 1000 µsperioda 1000 µs, práce 120 µskomunikace624 / 5000 µsperioda 5000 µs, práce 400 µslog4768 / 100000 µsperioda 100000 µs, práce 3000 µsvlastní prácečekání na vyšší priorityzatížení 39,0 % · mez 75,7 %všechny termíny se stíhajípod mezí — schůdnost je zaručená bez počítání
Modrá je vlastní práce úlohy, zlatá je čekání na vyšší priority, rám je termín. Přidávej práci nejnižší úloze a sleduj, kdo přeteče první.

Doba odezvy je pevný bod

Úloha čeká na všechny, kdo jsou nad ní — a ti se během jejího čekání můžou spustit znovu. Odtud rovnice, ve které je R na obou stranách:

R = C + Σj∈hp ⌈R / Tj⌉ · Cjřeší se iterací, dokud se nepřestane měnit

Ta horní celá část je celý vtip: úloha s periodou 50 µs se během 300 µs čekání spustí šestkrát, ne 5,7krát. Proto odezva neroste plynule, ale skokem, kdykoli se do ní vejde jedno další spuštění něčeho rychlého.

Jak se to v téhle labce ověřuje: ta rovnice se dá napsat věrohodně a špatně, takže testy nestaví na ní — simulují skutečný rozvrh, takt po taktu, s preempcí a bez jediného vzorce, přes celou hyperperiodu. Analýza musí vyjít stejně, a nikdy optimističtěji. To je nejsilnější orákulum v celém McuLabu.

Nejvyšší priorita nikdy nečeká

Je to vidět v obrázku: první řádek nemá zlatou část. Odtud pravidlo rate monotonic — nejkratší perioda dostane nejvyšší prioritu — a je dokázané, že když to nejde takhle, nejde to žádným pevným přiřazením priorit.

Co se z toho dá číst

co je vidětco to znamená
zlatá část je velkáúloha víc čeká, než pracuje — jitter bude velký
přeteče nejnižšíobvyklé a nejméně bolestivé; log se prostě někdy nestihne
přeteče prostředníšpatně: nejde to spravit snížením priority
přeteče nejvyššíúloha sama se nevejde do své periody

Vzorce v této kapitole

R — doba odezvy
R = C + Σ ⌈R/T_j⌉·C_j [s] Joseph a Pandya, 1986