Szchenyi Istvn Egyetem Thread X Vals idej begyazott

  • Slides: 39
Download presentation
Széchenyi István Egyetem Thread. X Valós idejű, beágyazott többszálas operációs rendszer II. rész 1

Széchenyi István Egyetem Thread. X Valós idejű, beágyazott többszálas operációs rendszer II. rész 1

Széchenyi István Egyetem RTOS építőelemek • Publikus erőforrás: bármelyik szál hozzáférhet. • „Hozzáférés” és

Széchenyi István Egyetem RTOS építőelemek • Publikus erőforrás: bármelyik szál hozzáférhet. • „Hozzáférés” és „birtoklás” nem ugyanaz (pl Mutex: minden szál hozzáfér de csak egy birtokol) 2

Széchenyi István Egyetem Thread. X Adattípusok • Tipikusan C compiler adattípusok 3

Széchenyi István Egyetem Thread. X Adattípusok • Tipikusan C compiler adattípusok 3

Széchenyi István Egyetem Thread. X rendszer adattípusok • A Thread. X oprendszer erőforrásainak azonosítására.

Széchenyi István Egyetem Thread. X rendszer adattípusok • A Thread. X oprendszer erőforrásainak azonosítására. 4

Széchenyi István Egyetem A szál (Thread) • Kvázi-független program szegmens • Osztott memória, saját

Széchenyi István Egyetem A szál (Thread) • Kvázi-független program szegmens • Osztott memória, saját stack • Független feldolgozás. • TCB: rendszer információ. 5

Széchenyi István Egyetem Memória területek (Pools) (byte) • Szekvenciális byte kollekció (hasonlít a „heap”-re)

Széchenyi István Egyetem Memória területek (Pools) (byte) • Szekvenciális byte kollekció (hasonlít a „heap”-re) • Erőforrásként „levédhetőek”. • „First-fit” allokálás. • Thread. X defragmentálja a szabad memóriát 6

Széchenyi István Egyetem Memória területek (Pools) (block) • Fix méretű blokkok (nincs fragment probléma).

Széchenyi István Egyetem Memória területek (Pools) (block) • Fix méretű blokkok (nincs fragment probléma). • Nem flexibilis blokkon belül, de a blokkok száma nincs limitálva. • Preferált módszer bytepool-al szemben. 7

Széchenyi István Egyetem Timerek • Időintervallumonkénti kódvégrehajtás. • „Egylövetű”, vagy priódikus timerek. • Publikus

Széchenyi István Egyetem Timerek • Időintervallumonkénti kódvégrehajtás. • „Egylövetű”, vagy priódikus timerek. • Publikus erőforrás. 8

Széchenyi István Egyetem Mutex • „Mutual exclusion”. • Kritikus Szekció hozzáférés vezérlésére. • „Priority

Széchenyi István Egyetem Mutex • „Mutual exclusion”. • Kritikus Szekció hozzáférés vezérlésére. • „Priority inheritance”: ha engedélyezett az alacsonyabb prioritású szál időszakosan felveheti a magasabb prioritású szál prioritását. 9

Széchenyi István Egyetem Számoló Szemaforok • Publikus erőforrás. • Nincs „birtokosa”. • „Count” megadja

Széchenyi István Egyetem Számoló Szemaforok • Publikus erőforrás. • Nincs „birtokosa”. • „Count” megadja a realizációk számát. • Működését később részletezzük. 10

Széchenyi István Egyetem Esemény zászló csoportok • Publikus erőforrás. • 32 bites csoportok 0

Széchenyi István Egyetem Esemény zászló csoportok • Publikus erőforrás. • 32 bites csoportok 0 -ra inicializálva. • Működést később részletezzük. 11

Széchenyi István Egyetem 12

Széchenyi István Egyetem 12

Széchenyi István Egyetem Üzenet queue-k • Publikus erőforrás. • Szálak közötti kommunikáció. • Egy

Széchenyi István Egyetem Üzenet queue-k • Publikus erőforrás. • Szálak közötti kommunikáció. • Egy üzenetes neve „mailbox”. • FIFO rendszer. 13

Széchenyi István Egyetem Tipikus üzenet queue • Bármely szál beilleszthet illetve kiolvashat üzenetet. 14

Széchenyi István Egyetem Tipikus üzenet queue • Bármely szál beilleszthet illetve kiolvashat üzenetet. 14

Széchenyi István Egyetem 15

Széchenyi István Egyetem 15

Széchenyi István Egyetem Erőforrások javasolt használata 16

Széchenyi István Egyetem Erőforrások javasolt használata 16

Széchenyi István Egyetem A „SZÁL” MINT ALAPKOMPONENS 17

Széchenyi István Egyetem A „SZÁL” MINT ALAPKOMPONENS 17

Széchenyi István Egyetem 18

Széchenyi István Egyetem 18

Széchenyi István Egyetem 19

Széchenyi István Egyetem 19

Széchenyi István Egyetem 20

Széchenyi István Egyetem 20

Széchenyi István Egyetem Szál létrehozása • • TX_THREAD adattípussal. Stack kötelező. Mérete kritikus paraméter.

Széchenyi István Egyetem Szál létrehozása • • TX_THREAD adattípussal. Stack kötelező. Mérete kritikus paraméter. Kisérleti meghatározása javasolt. • Reentrant rutinok több szálból hívhatók. 21

Széchenyi István Egyetem 15 -ös prioritású szál létrehozása 22

Széchenyi István Egyetem 15 -ös prioritású szál létrehozása 22

Széchenyi István Egyetem Szálparaméterek 23

Széchenyi István Egyetem Szálparaméterek 23

Széchenyi István Egyetem Szál 20 -as prioritással és 14 -es Preemtion küszöbbel 24

Széchenyi István Egyetem Szál 20 -as prioritással és 14 -es Preemtion küszöbbel 24

Széchenyi István Egyetem Szál 16 -as prioritással, Preemtion küszöb nélkül 25

Széchenyi István Egyetem Szál 16 -as prioritással, Preemtion küszöb nélkül 25

Széchenyi István Egyetem Szál megszüntetése (törlése) • • Csak terminált, vagy teljesített (completed) állapotban

Széchenyi István Egyetem Szál megszüntetése (törlése) • • Csak terminált, vagy teljesített (completed) állapotban törölhető a szál. Következésképp önmagát nem törölheti 26

Széchenyi István Egyetem Szál azonsítása • my_thread_ptr = tx_thread_identify(); • Pointert generál a jelenleg

Széchenyi István Egyetem Szál azonsítása • my_thread_ptr = tx_thread_identify(); • Pointert generál a jelenleg futó szálra. • Tipikusan ISR-ben adjuk ki. 27

Széchenyi István Egyetem Szál információ lekérdezés • TCB egy részének pillanatnyi állapotát olvassa ki.

Széchenyi István Egyetem Szál információ lekérdezés • TCB egy részének pillanatnyi állapotát olvassa ki. • Futási idő alatti teljesítmény adatok kilvasására más függvények állnak rendelkezésre. 28

Széchenyi István Egyetem Preemtion küszöb megváltoztatása 29

Széchenyi István Egyetem Preemtion küszöb megváltoztatása 29

Széchenyi István Egyetem Szál prioritás megváltoztatása 30

Széchenyi István Egyetem Szál prioritás megváltoztatása 30

Széchenyi István Egyetem Vezérlés „feladása” és újraélesztése • Feladás: tx_thread_relinquish() függvénnyel • Más szál

Széchenyi István Egyetem Vezérlés „feladása” és újraélesztése • Feladás: tx_thread_relinquish() függvénnyel • Más szál „elnyomása”: status = tx_thread_suspend(&some_thread); • „Alvás”: status = tx_thread_sleep(100); • Újraélesztés: 31

Széchenyi István Egyetem Time-Slice megváltoztatás 32

Széchenyi István Egyetem Time-Slice megváltoztatás 32

Széchenyi István Egyetem Abort suspension, hibajelzések • Abort suspension: status = tx_thread_abort(&som_thread); Feloldja a

Széchenyi István Egyetem Abort suspension, hibajelzések • Abort suspension: status = tx_thread_abort(&som_thread); Feloldja a várakozást. • Hibajelzések: tx_thread_entry_exit_notify tx_thread_stack_error_notify Callback függvényeket aktiválnak. 33

Széchenyi István Egyetem Program végrehajtás típusai • Inicializálás. • Szál ütemező hurok. • Interruptok.

Széchenyi István Egyetem Program végrehajtás típusai • Inicializálás. • Szál ütemező hurok. • Interruptok. • Timerek 34

Széchenyi István Egyetem Szálak állapotátmenetei 35

Széchenyi István Egyetem Szálak állapotátmenetei 35

Széchenyi István Egyetem Száltervezés • • Minimalizáljuk a szálak számát. Gondosan jelöljük ki a

Széchenyi István Egyetem Száltervezés • • Minimalizáljuk a szálak számát. Gondosan jelöljük ki a prioritásokat. Minimalizáljuk a prioritási szintek számát. Gondosan jelöljük ki a preemtion küszöböket. Mutexnél használjunk prioritásöröklést. Ha lehet használjunk round-robin ütemezést. Használjunk időszeleteket. 36

Széchenyi István Egyetem Szál lista • Kettős kapcsolású körkörös listába állnak a szálak. 37

Széchenyi István Egyetem Szál lista • Kettős kapcsolású körkörös listába állnak a szálak. 37

Széchenyi István Egyetem „Ready” szál prioritáskép • Azt mutatja, hogy a 32 prioritás szint

Széchenyi István Egyetem „Ready” szál prioritáskép • Azt mutatja, hogy a 32 prioritás szint közül melyiken van „ready” szál. 38

Széchenyi István Egyetem Ready szál pointerek tömbje prioritással indexelve • Innen találja meg az

Széchenyi István Egyetem Ready szál pointerek tömbje prioritással indexelve • Innen találja meg az ütemező a következő aktivizálandó szálat. 39