Tnkernel mutex PIC24

Mutex - RTOS célkitűzése az, hogy egyidejű hozzáférést a megosztott erőforrások. Mutex egy bináris szemafor további tulajdonságokkal (például prioritás inverzió korlátlan bypass protokollok).







Mutex lehet két kimondja: a zárt és nyitott. Mutex kapcsolódó hardver vagy szoftver alkalmazás-erőforrások, biztosítja a megfelelő hozzáférést a források számos feladatot - ha a feladat megpróbál hozzáférni letiltott források, akkor le kell fordítani tétlen állapotban, de úrrá után azonnal a forrás fel van oldva.

Gyakran felmerül a kérdés - miért akar blokkolni forrásokat? Minden elvből munka elővásárlási RTOS - feladat lehet szakítani (kiszorul) bármikor. Ha ebben a pillanatban, akkor használja a rendszer erőforrás (pl UART), mely feladat helyébe a jelenlegi is elkezd dolgozni vele - van egy természetes konfliktus.

A források locked szorosan kapcsolódik a fogalom a prioritás inverzió:

Tnkernel mutex PIC24

Tegyük fel, hogy két feladatot a rendszer alacsony (A) és a magas (B) prioritás. A T1 időpontban a problémát (A) zárak erőforrás és elkezdi kiszolgálni. A feladat T2 (B) időpontban kiszorítja alacsony prioritást (A), és megpróbálja átvenni az erőforrás T3 időpontban. De ahogy a forrás van zárva, a feladat (B) át a várakozás, és a feladat (A) folytatódik. Abban az időben T4 feladat ideje (A) befejezi az erőforrás fenntartása és kinyitja azt. Mivel az erőforrás vár feladat (B), akkor azonnal elkezdi végrehajtani.

Időtartam (T4-T3) nevezik korlátos prioritás inverzió. Ebben az intervallumban van egy logikai ellentmondás az szabályozási terveket - a feladat a magasabb prioritású vár, míg az alacsony prioritású feladat végrehajtásra kerül.

De nem ez a legrosszabb. Tegyük fel, hogy a rendszer három fő célkitűzése van: alacsony prioritás (A), közepes prioritású (B) és kiemelt (B):

Tnkernel mutex PIC24

Ha az erőforrás által lezárt feladat (A), és szükség van rá, hogy a probléma (B), akkor ugyanaz a helyzet - a legfontosabb van tiltva. De tegyük fel, hogy a probléma (B) cserélni (A) és után (B) egy dolog, a forrás várakozást. A probléma (B) nem tud semmit a konfliktus, tehát el lehet végezni a végtelenségig időintervallumban (T5-T4). Továbbá amellett, hogy a (B) a rendszer lehet más problémák a prioritások több mint (A) és kevesebb, mint a (B). Ezért, a futamidő (T6-T3) az általános esetben nem definiált. Ez a helyzet a korlátlan prioritás inverzió.







Korlátozott inverzió prioritásai általában nem lehet elkerülni, de ez nem olyan veszélyes a rendszerre, mint például a korlátlan. Annak elkerülése érdekében, határtalan prioritás inverzió, amely két protokoll változás feladat prioritások:

Prioritás öröklés protokoll (Prioritás öröklés protokoll)

nagyobb prioritást a protokoll (Priority mennyezeti protokoll)

Tegyük fel, hogy két feladatot a rendszer alacsony (A) és a magas (B) prioritás:

Tnkernel mutex PIC24

T2 időpontban a problémát (B) kiszorítja alacsony prioritású feladat (A), majd a T3 időpontban igyekszik megragadni a lezárt (A) erőforrás.

prioritás öröklés protokoll az, hogy a feladat prioritás (A) -ra emelkedett a feladat prioritás (B) a T3 időpontban, azaz ha (B) igyekszik megragadni egy lezárt forrás. Így magasabb prioritású feladatok (A), de kevesebb, mint a (B) nem tudja megvalósítani korlátlan inverziós probléma (B) fogadja a forrás után azonnal (A) nem nyílik.

Miután a feladat (A) elengedi az erőforrás, a prioritás csökkentette az eredeti.

Jegyzőkönyv hogy növelje a prioritás alapja az a tény, hogy a tervezés időpontjában ismert valamennyi igénylő feladatok egy adott erőforrás, valamint a prioritások ezen feladatok ismertek. Ebben az esetben az erőforrás (mutex) hozzá lehet rendelni egy egyedi jellemzője - a legmagasabb prioritást az összes olyan feladatot, amely képes blokkolni azt (a felső határ).

Tegyük fel, hogy van három olyan feladat a rendszer alacsony (A), középső (B) és a magas (B) prioritás, amely képes blokkolni egy forrás:

Tnkernel mutex PIC24

A T3 időpontban, amikor a feladat (B) próbálja megragadni a lezárt (A) erőforrás prioritás (A) emelkedik a prioritást a feladat (B), azaz a legnagyobb prioritást az összes olyan feladatot, amely a saját forrás. Ha a feladat (A) elengedi az erőforrás időben T4, a prioritás csökkentjük a forrást, és a feladat prioritás (B), és várja az erőforrás növeljük (V).

Így, a protokoll növekvő fontosságú feladat lefoglalt erőforrás mindig a legnagyobb prioritású csoport feladatok, amely képes ezt az erőforrást. Ez lehetővé teszi, hogy ne csak megszabadulni határtalan prioritás inverzió, hanem, hogy megakadályozzák a holtpont.

Egymáshoz - Ez a riasztó rendszer állapotát, ami akkor fordulhat elő, ha a beágyazott erőforrás zárak. Tegyük fel, hogy két az alacsony feladat rendszer (A) és a magas (B) prioritás, amely használja a két erőforrás - X és Y:

Tnkernel mutex PIC24

A T1 időpontban a problémát (A) zárak erőforrás X. Ezután a T2 időpontban a probléma (A) kiszorítja a magasabb prioritású feladat (B), amely abban az időben a T3-time erőforrás blokkok Y. Ha a feladat (B) megpróbálja bezárni az erőforrás X (T4) elengedése nélkül az erőforrás Y, akkor le kell fordítani tétlen állapotban, és az a feladat végrehajtása (a) folytatódik. Ha időpontban T5 feladat (A) megpróbálja lezárni a forrás Y, bár nem felszabadító X, ott interlock állapot - sem a problémák (A) és (B) nem képes irányítani.

Biztosítóberendezés csak akkor lehetséges, ha a rendszer beágyazott egyidejű forrásokhoz való hozzáférés. Holtpont lehet kerülni, ha nem használja a mellékleteket, vagy ha a forrásokat arra használják, hogy növeljék a prioritás a protokollt.

A TNKernel megvalósítva mutexek a prioritás öröklődése protokoll és az elsőbbségi protokoll növekedést.

prioritás öröklés protokoll egyszerű és gyors, de nem, hogy elkerülje a holtpont. Ezért nem ajánlott a mellékelt hozzáférést az ilyen mutexek. Jegyzőkönyve növekvő prioritást igényel több időt és erőforrást biztosítja, hogy nincs holtpont.

Mindegyik mutex társított vezérlő a szerkezet:

A készítmény mutex szerkezete a következő elemeket tartalmazza:

Feladat sorban, várva mutexek