Вы находитесь на странице: 1из 4

1

Laborator PATR 2013 2014


Lista probleme propuse pentru rezolvare

Problemele vor fi rezolvate conform exemplelor prezentate la curs, completand documentul
aferent temei conform template-ului prezentat pe site.
Problemele vor si structurate sub forma de taskuri, se vor trasa organigramele de functionare
pentru fiecare task si se vor evidentia interactiunile intre taskuri, astfel incat sa se obtina global
functionalitatea dorita. Apoi se va implementa cu mecanismele specifice QNX.
Pentru rezolvarea acestor probleme se vor utiliza mecanismele specifice de programare oferite
de sistemul de operare in timp-real QNX. Pentru fiecare tip de mecanism va exista o alta varianta de
implementare.
Studentii se vor grupa in echipe de maxim 3 persoane. Din lista de mai jos fiecare echipa va
alege doua probleme si va propune doua solutii de implementare:
prima utilizand semafoare si / sau mutex-uri, combinate eventual cu variabile conditionale,
daca este necesar;
cea de-a doua, utilizand mecanismele de transmitere de mesaje din QNX;
in ambele cazuri, daca este nevoie, se vor utililiza si functiile speciale pentru plannificarea
deadline-urilor.

Problema 8 contine doua componente, realizarea task-ului proces si a task-ului regulator.
O echipa va selecta doar una dintre aceste componente si va colabora cu echipa ce si-a selectat celalalt
task.

Pot fi propuse si alte probleme care pot fi rezolvate utilizand mecanismele concurentiale
prezentate la curs.

Problema 1. Implementarea problemei exemplu din cursul 1

Sa se implementeze o aplicatie formata din 3 taskuri de tip A (tipareste litera a), B (tipareste
litera b) si C (tiparesc litera c).
Conditiile de tiparire sunt urmatoarele:
un b se scrie intotdeauna inaintea unui c;
b si c trebuie sa alterneze in sir;
numarul de b-uri si c-uri scrise la un moment, dar nu trebuie sa depaseasca numarul de a-uri.

Problema 2. Modelarea accesului la o statie de benzina
Clientii pot alimenta cu combustibil la o benzina in maniera self-service. Organizarea accesului
este urmatoarea:
daca o pompa este libera, clientul o poate folosi;
daca nu este nici o pompa libera, clientul trebuie sa astepte eliberarea unei pompe;
casierul va elibera pompa, semnalizand clientului ca poate alimenta cu combustibil;
dupa ce a finalizat activitatea de alimentare cu combustibil, clientul va plati casierului suma
corespunzatoare.
Sa se implementeze o aplicatie formata din mai multe taskuri, cu mecanismele specifice QNX,
care sa simuleze functionarea specificata. Se vor considera urmatoarele doua cazuri:
(1) se considera ca statia de benzina are o singura pompa, un singur casier, si exista N clienti care
2
incearca sa alimenteze;
(2) se considera ca statia de benzina are M pompe, un singur casier, si exista N clienti care
incearca sa alimenteze.


Problema 3. Rendez-vous
Doua tipuri de procese, A si B, care fac parte dintr-o aplicatie multitasking, trebuie sa-si
coordoneze executia, trebuind sa se intilneasca intr-un punct de sincronizare. Astfel, pentru ca fiecare
dintre procese sa-si poata continua executia independent de celelalte procese, trebuie indeplinite
urmatoarele conditii:
un proces de tip A nu poate trece de punctul de intilnire decat daca intilneste 2 procese de tip
B;
un proces de tip B nu poate trece de punctul de intilnire decat daca intilneste un proces de tip
A.

Sa se implementeze o aplicatie formata din mai multe taskuri, cu mecanismele specifice QNX,
care sa simuleze functionarea specificata. Aplicatia multitasking va fi formata din 3 tipuri de taskuri,
astfel incat:
(1) sa existe taskuri de tip A;
(2) sa existe taskuri de tip B;
(3) sa existe un task care va monitoriza executia proceselor de tip A si B, conditionand executia
acestora relativ la cele doua conditii enuntate anterior.


Problema 4. Procese de tip client server
Sa se scrie o aplicatie multitasking pentru monitorizarea accesului mai multor procese (taskuri)
la 2 imprimante (de tip A sau B). Se presupune ca exista 3 tipuri de procese care pot utiliza
imprimantele:
procese care utilizeaza doar imprimanta A;
procese care utilizeaza doar imprimanta B;
procese care pot utiliza fie imprimanta A, fie imprimanta B.

Sa se implementeze o aplicatie formata din mai multe taskuri, cu mecanismele specifice QNX,
care sa simuleze functionarea specificata. Aplicatia multitasking va fi formata din 3 tipuri de taskuri,
astfel incat:
(1) sa existe taskuri care pot accesa cele doua tipuri de imprimanta sunt procese de tip client care
vor face cereri de alocare / dealocare resursa (imprimanta);
(2) sa existe un proces de tip server care monitoriza alocarea imprimantelor pentru procesele de tip
client.

Observatie: se va considera faptul ca un proces de tip client poate elibera imprimanta pe care o
foloseste (dealocare resursa) la un anumit moment de timp.

Problema 5. Gestionarea unui cont bancar
Un cont bancar poate fi utilizat de mai multe persoane (taskuri). Fiecare persoana poate
depozita sau retrage anumite sume de bani din contul comun.
3
Sa se implementeze o aplicatie formata din mai multe taskuri, cu mecanismele specifice QNX,
care sa simuleze functionarea specificata. Aplicatia multitasking va fi formata din urmatoarele tipuri
de taskuri:
(1) task depunere: va depune o suma in contul comun (va face o cerere de depunere);
(2) task retragere: va incerca sa retraga o suma de bani din contul comun (va face o cerere de
retragere);
(3) task server: va monitoriza situatia depunerilor / retragerilor in/din contul comun, astfel incat
balanta (suma depunerilor minus suma retragerilor, la zi) sa nu fie negativa. Va afisa de
asemenea balanta contului.

Problema 6. Gestionarea unei biblioteci publice
O biblioteca publica poate deservi mai multe persoane (taskuri). Fiecare persoana poate returna
sau imprumuta o carte.
Sa se implementeze o aplicatie formata din mai multe taskuri, cu mecanismele specifice QNX,
care sa simuleze functionarea specificata. Aplicatia multitasking va fi formata din urmatoarele tipuri
de taskuri:
(1) task returnare: se va returna o carte imprumutata anterior;
(2) task imprumutare: se va incerca imprumutarea unei carti (se verifica cate exemplare au mai
ramas in biblioteca);
(3) task bibliotecar: va monitoriza situatia imprumuturilor / returnarilor astfel incat sa sesize cand
termenul de imprumut a fost depasit si daca exemplare dintr-o carte se gasesc sau nu in
biblioteca.

Problema 7. Gestionarea unui restaurant
Un restaurant deserveste clienti, prin intermediul chelnerilor ce preiau comenzi de la acestia si
le trimit bucatarului. Un client poate solicita o comanda, clientul trimite cererea bucatarului si atunci
cand aceasta este gata o aduce clientului.
Sa se implementeze o aplicatie formata din mai multe taskuri, cu mecanismele specifice QNX,
care sa simuleze functionarea specificata. Aplicatia multitasking va fi formata din urmatoarele tipuri
de taskuri:
(1) task comanda: se va face o comanda de catre client (dintr-o lista predefinita, fiecare comanda
are o durata de executie specifica); un client este asociat unui anumit numar de clienti, daca
sunt clienti ce nu au chelner asociat, vor astepta pana cand se va elibera o pozitie;
(2) task livrare comanda: o data ce comanda asociata unui client este terminata, va fi preluata de
chelnerul atasat si adusa clientului;
(3) task executie comanda: se trimite comanda de catre chelner bucatarului (acesta le va aseza intr-
o coada de asteptare FIFO).

Problema 8. Implementarea unei aplicatii de conducere de procese, conform Digital Control
Tutorial (Carnegie Mellon), disponibil la (vezi si pe site):
http://www.library.cmu.edu/ctms/ctms/matlab42/digital/digital.htm
Se va alege un proces discretizat, controller-ul corespunzator, si se va implementa aplicatia
formata din taskurile Controller, Proces.
Se vor scrie rezultatele simularii intr-un fisier text si apoi se vor afiza grafic, eventual in
Matlab.
4
Se va folosi acelasi template de rezolvare.
Se poate propune si alta aplicatie de acelasi tip (conducere de procese in timp real) similar cu
materia predata la cursul de IRA.

Вам также может понравиться