Extras din curs
APD-C1
3.2 Executivul de timp real RTK
A fost dezvoltat de On Time Company. (www.on-time.com)
RTK permite executia intercala a task-urilor.
3.2.1 Caracteristici:
a) Necesita spatii modeste de memorie (16 KB pentru cod,6 kb pentru date)
b) Poate opera cu un numar teoretic nelimitat de task-uri. Task-urilor li se pot asocia prioritati. Prioritatile
sunt un numar intreg intre 1 si 64.
c) O aceeasi prioritate poate fi alocata mai multor task-uri.
d) Timpul de comutare a starii unui task in jur de 6 microsecunde
e) Comutarile se pot efectua la orice moment de timp
f) Pune la dispozitia programatorului semafoare cutii postale si mesaje pentru implementarea operatiilor
multitasking
g) pune la dispozitia programatorului drivere specializate pentru ecran, tastatura, port serial. port paralel si
retea.
3.3.2 Task-uri sub RTK
In context RTK un task reprezinta o functie C sau C++ sau o procedura Pascal fara parametri si cu
stiva proprie. Structura unui program RTK impune utilizare de functii C la care se adauga functii RTK.
Este obligatorie existenta unui task main.
Hardware
BIOS
MS-DOS
RTK
Aplicatii
Task-urile pot fi in diverse stari. Ne imaginam task-urile ca evoluand intr-un spatiu in care sunt identificate
mai multe stari. Tranzitia intre stari se realizeaza prin directive de tip: start, stop etc
In context RTK un task se poate gasi intr-una din urmatoarele stari: Current, Ready, Suspended,
Delaying, Blocked, Timed (temporizat)
Starea Current: * In cadrul acestei stari un task e in aceasta stare daca este in executie un singur
In starea Current se ajunge numai din Ready. Insa din starea Current se poate ajunge in orice alta stare.
Starea Ready: * Se gasesc toate task-urile care indeplinesc toate conditiile pentru a fi executate
Starea Suspended: *In aceasta stare se gasesc task-urile care au fost suspendate explicit printr-o functie
RTK Suspend. Ele pot fi in orice moment activate prin functia RTK Resume.
Starea Delaying: => task intarziat. * El cedeaza controlul microprocesorului in urma executiei functiei RTK
Delay. Dupa expirarea timpului are loc tranzitia din starea Delaying in starea Ready.
Un task Blocked e un task blocat in asteptarea unui eveniment extern care reprezinta un semnal de semafor,
un mesaj dintr-o cutie postala, un mesaj de trecere etc. D.p.d.v al timpului asteptarea e nedefinita.
Se trece in starea Ready numai daca evenimentul s-a produs. Functie de natura evenimentului la care se
asteapta exista mai multe substari:
Blocked_Wait - asteapta semnalul semaforului
Blocked_Put - asteapta depunerea unui mesaj intr-o cutie postala
Blocked_Get - asteapta preluarea unui mesaj dintr-o cutioe postala
Blocked_Send - transmite un mesaj de la un task catre alt task
Blocked_Receive - legat de receptionarea unui mesaj
Substarile starii Blocked
Starea Timed este apropiata de starea Blocat Numai ca se indica si un interval de timp in care sa aiba
loc blocarea. Iesirea din Timed are loc fie la producerea evenimentelor fie la expirarea timpului.
DIRECTIVE
Ready
Suspended
Current
Delaying Blocked Timed
Timed_Wait - asteapta semnalul semaforului
Timed_Put - asteapta depunerea unui mesaj intr-o cutie postala
Timed_Get - asteapta preluarea unui mesaj dintr-o cutioe postala
Timed_Send - transmite un mesaj de la un task catre alt task
Timed_Receive - legat de receptionarea unui mesaj
Substarile starii Timed
Prin functiile sale RTK ofera posibilitatea implementarii operatiilor multitasking.
Cu exceptia Current pentru toate celelalte stari task-urile sunt organizate in stari.
Preview document
Conținut arhivă zip
- Executivul de Timp Real RTK.pdf