Sisteme Distribuite de Supervizare si Control - Executive in Timp Real - C Task

Imagine preview
(8/10)

Acest referat descrie Sisteme Distribuite de Supervizare si Control - Executive in Timp Real - C Task.
Mai jos poate fi vizualizat un extras din document (aprox. 2 pagini).

Arhiva contine 1 fisier doc de 12 pagini .

Profesor indrumator / Prezentat Profesorului: gabi radulescu

Iti recomandam sa te uiti bine pe extras si pe imaginile oferite iar daca este ceea ce-ti trebuie pentru documentarea ta, il poti descarca. Ai nevoie de doar 4 puncte.

Domeniu: Calculatoare

Extras din document

CTask este un set de rutine care permite unui program C sa execute mai multe funcţii în paralel. Ctask se ocupa de repartizarea timpului procesor catre taskuri aceasta realizandu-se prin prioritizare, programarea anterioara a executiei si furnizeaza si un set complet de rutine pentru comunicarea intre taskuri, semnalizarea indeplinirii unor evenimente si intreblocarea intre taskuri (excluderea mutuala).

Exemplu

Pentru a ilustra o posibilitate de utilizare CTask, putem presupune ca tocmai am terminat un program de telecomunicatii, completat cu protocoale de descărcare si script-uri. Pentru a putea tipari fisierul descarcat in timp ce urmatorul se descarca si pentru a putea face comentarii la mesajele descarcate anterior fara a intrerupe transmisia avem nevoie de Ctask.

CTask permite unui program C sa faca foarte multe lucruri in acelaşi timp prin comutarea procesorului intre taskurile definite de noi. Şi, deoarece de cele mai multe ori programul aşteapta dupa dispozitive mai lente pentru a furniza feedback-ul, acest mod de comutare este complet transparent, şi nu încetineste programul.

Comutarea taskurilor

Ceea ce este necesar pentru a permite utilizatorului să editeze un fişier în timp ce al doilea se descarca si al treilea se tipareste este o metoda de comutare.

Aceasta înseamnă că trebuie sa fie posibila oprirea procesului de descarcare atunci când utilizatorul apasă o tastă, procesarea noii comenzi , şi revenirea la descarcare exact in acelaşi punct in care a fost întreruptă. O solutie ar fi introducerea unuei cereri de la tastatura in rutina de descarcare si chemarea editorului de taskuri atunci cand o tasta este disponibila. Dar pe langa incarcarea programului cu o multime de apeluri mai apare si o alta problema. Daca operatia ceruta de utilizator dureaza mai mult decat afisarea unui caracter pe ecran ca de exemplu scrierea pe un CD descarcarea poate fi anulata deoarece a fost oprita pentru un timp prea indelungat. Trebuie gasita o modalitate de comutare intre cele doua taskuri astfel incat nici un task sa nu fie intarziat pentru o perioada de timp prea mare

Acest mod de comutare este denumit "planificator", în CTask. Planificatorul este invocat de fiecare sistem şi va salva contextul taskului curent . Planificatorul ia apoi primul element din coadă de sarcini care sunt eligibile pentru a fi rulate, şi restabileşte contextul aceastei sarcini, intorcandu-se în punctul în care sarcina a fost întreruptă. Acest lucru este complet automat , şi nu necesită o programare speciala a sarcinilor în sine. Tot ce trebuie facut este de a spune programului CTask că există trei sarcini, sarcina de a descărca, sarcina de a tipari si sarcina de a edita.

Dar pe langa aceasta trebuie gasita si o modalitate de a spune sarcinii de tiparire ce fisiere sa tipareasca si sarcinii de descarcare ce fisiere sa descarce deoarece aceste sarcini nu pot fi apelate ca niste functii obisnuite. Pentru aceasta avem nevoie de comunicare intre taskuri. In Ctask exista mai multe moduri de a transmite mesaje intre taskuri iar unul din moduri este cel al casutei postale. Imprimanta poate folosi o functie wait_mail pentru a astepta ca mesajul sa ajunga in casuta de mail.

Daca nu este primit nici un mesaj atunci functia de tiparire nu va mai fi programata si deci daca nu se mai tipareste nimic nu se va mai folosi procesorul. Atunci când este trimis un mesaj cu send_mail la căsuţa poştală, imprimanta va prelua si procesa comanda. De asemenea, se pot trimite mai multe fisiere catre imprimanta in timp ce se tipareste un fisier, mesajul pastrandu-se in casuta postala pana cand imprimanta este gata sa proceseze urmatorul fisier.

Resurse si reapelari

O alta problema este cea a reapelarii. Reapelarea inseamna chemarea unei rutine in timp ce aceasta este folosita de un alt task si ca aceasta nu va deranja executarea taskului intrerupt. Pentru rezolvarea aceste probleme Ctask foloseste resursele. Atunci cand este solicitata o resursa de un anumit task celelalte taskuri care incearca sa apeleze aceasi resursa sunt puse in asteptare pana cand resursa este eliberata. Numai apoi taskul care are prioritate ridicata primeste acces de a folosi resursa respectiva. Astfel se inlocuiesti apelarea libera din rutina cu apelari ale unor funtii care mai intai solicita o resursa, executa functia si apoi elibereaza resursa.

Priorităţi

Dacă protocolul implementat necesita un raspuns rapid, Ctask poate fi influentat spre al da prin atasarea unei prioritati ridicate taskului respectiv. CTask permite 65535 niveluri de prioritate diferite şi sarcini care au prioritate ridicata sunt programate înaintea celor cu prioritate mai mică. De asemenea, taskurile cu prioritate ridicata vor obtine acces la casuta postala şi la resurse inaintea celorlalte.

CTask oferă foarte multe blocuri de baza necesare pentru construirea unor programe simple şi inteligibile. Întrucât CTask este, in principal, implementat în C, este posibil să nu fie cel mai rapid sistem, dar din cauza designului simplu care utilizează cateva comenzi rapide, codul sursa poate fi modificat pentru a se potrivi necesităţilor. Ctask este un program public şi nu există restricţii privind utilizarea sa.

Deşi este gata pentru a rula sub DOS şi este uşor adaptabil pentru aplicaţii încorporate, CTask este mai degraba o unealta pentru crearea unor noi aplicatii.

Fisiere in arhiva (1):

  • Sisteme Distribuite de Supervizare si Control - Executive in Timp Real - C Task.doc