BeagyRendEllenorzTinyOS

A VIK Wikiből

Ez az oldal a korábbi SCH wikiről lett áthozva.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor, kérlek, javíts rajta egy rövid szerkesztéssel!

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót.


TinyOS

Melyek a TinyOS/NesC környezet építőelemei, hogyan épülnek fel, mik a tulajdonságai?

Komponensalapú, köztük kétirányú interfészen keresztül lehet kapcsolódni. Beszélhetünk a modulról és a konfigurációról.

  • module: implementálja az interfészeket (parancsokat és eseményeket tartalmaznak)
  • konfiguráció: egy hierarchikus huzalozás, mely modulokat és konfigurációkat tartalmazhat.

Milyen szabályok érvényesek az elemek kapcsolódására?

Kétirányú interfészeken keresztül kapcsolódnak, általuk képes a komponens szolgáltatást használni és nyújtani.

Hogyan épülnek fel a TinyOS modulok? Mit definiál és mit implementál a modul?

A modulok

  • definiálják a használt és szolgáltatott interfészeket,
  • implementálják a szolgáltatott command-okat és a felhasznált eseményeket.

Mik a TinyOS konfigurációk? Hogyan épülnek fel?

A konfigurációk a komponensek huzalozására használatosak (több almodult/alkonfigurációt tartalmazhat). Hierarchikus felépítésű.

Mi a top-level konfiguráció, mik ennek sajátosságai?

A top-level konfiguráció tartalmaz egy main komponenst, mely a reset utasítás után közvetlenül indul, meghívja a StdControl interfész =init= és =start= utasításait. Ezután az ütemező indítása következik, majd az erőforrások kímélése érdekében =stop= utasítással standby állapotba kerül.

Hogyan épül fel egy TinyOS interfész?

A komponens szolgáltatást nyújt (provides) [a felette lévőnek, parancsokat fogad tőle és eseményeket küld neki] és használ [-ja az alatta lévő komponens szolgáltatásait, parancsokat küld neki, eseményeket fogad tőle] (uses).

Kétféle elemet tartalmazhatnak: parancs (=command=) és esemény (=event=). Paraméterezhetőek: "interfésztömb".


Hogyan működnek a taszkok és a HW kezelő események? Hogyan működik az ütemezés?

  • Taszk függvényhívás késleltetett (kezdeményezés után valamikor elindul és lefut) végrehajtással, ezáltal nincs végtelen ciklus és blokkoló utasítás. Indítását kezdeményezheti másik taszk, esemény vagy utasítás. Taszk nem szakíthat meg taszkot, a taszk megszakítható HW eseményt kezelő függvény által. Taszk akár hosszabb végrehajtási idejű is lehet.
  • A HW eseményt kezelő függvényeket HW IT-hez rendeljük futása bármikor elindulhat és bármely más taszkot (vagy másik HW kezelőt) megszakíthat, célszerű a rövid implementáció.
  • Ütemezés során a taszkok FIFO lista szerint indulnak, kivéve a már említett HW megszakítások

Történik-e kontextus váltás az ütemezőben?

Igen, de csak HW IT esetén. Taszk nem szakít meg taszkot.

Mi a fő oka a primitív taszk megvalósításnak?

Nincsenek blokkoló hívások, nem kell kontextusváltás és szinkronzicáiós primitívek. Hátránya: bonyolultabbá válik az alkalmazás logikája.


Mikor kell mindenképpen taszkokat használnunk és mik az ún. splitphase műveletek?

Splitphase: kétfázisú

  • egyik taszk a kérést (command) küldi el, majd beszúr egy választ várót a FIFO végére
  • a másik taszk kezeli a választ, eredményt (event)


Mit nevezünk szinkron ill. aszinkron kódterületeknek?

  • szinkron kódnak nevezzük azon függvényeket, eseményeket, parancsokat, taszkokat, amelyeket csak taszkokból lehet elérni.
  • ezzel szemben az aszinkron kód elérhető legalább egy IT kezelőből.

Milyen szabályok vonatkoznak a közös erőforrások (változók) elérésére?

  • Elérés csak szinkron kódból.
  • Atomikus utasítások használata.
    • Késleltetik a megszakítások végrehajtását, növeli a válaszidőt, jittert okoznak.

-- adamo - 2006.06.28. -- palacsint - 2006.06.28.