Systemy czasu rzeczywistego (QNX)

IV rok informatyki, studia dzienne magisterskie
rok akademicki 2006/2007, semestr zimowy


Zasady zaliczania programów, oceniania oraz inne pomocne informacje:

1. Co będziecie Państwo robić w semestrze ?
Same ciekawe rzeczy. Będziecie Państwo tworzyć działające współbieżnie aplikacje  przy użyciu mechanizmów systemowych.
By zrealizować zadania, należy przypomnieć sobie mechanizmy systemowe: czym różnią się procesy od wątków i jak się je programuje, przydatne może okazać się przypomnienie sobie jak działają kolejki komunikatów.

Zadania są pretekstem, by Państwo mogli się wykazać znajomością mechanizmów systemowych.
Na zrealizowanie wymienionych poniżej zadań macie Państwo cały semestr.

2. Zadania, punktacja i ocenianie
Z kolejnych etapów rozliczacie się w terminach podanych na zajęciach.
W przypadku, gdy zrealizowane zadanie nie zostało przez Państwa zaliczone w terminie, za każdy tydzień spóźnienia naliczane są punkty karne. Punkty karne za każdy tydzień przekładają się na obniżenie oceny za zaliczenie o pół oceny. Od tego ew. odejmujemy jeszcze cos za złe wykonanie zadania!
Jeżeli zrealizujecie Państwo w terminie i poprawnie zadania, otrzymujecie ocenę równą 4,5 (słownie: dobry plus).


Zadanie, które będziecie Państwo realizować w semestrze LOSUJECIE i wykonujecie je na dwa sposoby:

A wersja "lokalna"  wszystkie procesy znajdują się na jednym komputerze,
B wersja z użyciem gniazd  część procesów może być uruchamiane na różnych komputerach.

Każdą z wersji wykonujecie Państwo w kilku etapach. Oto plan, wg. którego będziecie Państwo realizować zadania:

  kolejny etap pracy co będziecie Państwo robić na zajęciach co sprawdzam
Zajęcia 1. zajęcia organizacyjne Zajęcia organizacyjne, omówienie literatury, materiałów, zagadnień, sposobów oceniani itp, szkolenie BHP. -
Zajęcia 2. Proces serwera wizualizacji Omówienie schematu działania kolejek komunikatów w QNX-ie. Omówienie bilblioteki ncurses. Pierwszy program na 'okienkach' pod Linux'a ;)
P
rogram wizualizacji, który uruchomiony rysuje na ekranie skrzyżowanie.
-
Zajęcia 3. Proces klienta
(pojazd)
Dokładacie Państwo program pojazdu, który komunikuje się z wizją i przesyła do niej komunikaty (co powoduje narysowanie 'jadącego' autka na ekranie, wszystko jedno, czy po torach, czy po szlabanie). Komunikacja z procesem wizualizacji poprzez kolejki komunikatów. sprawdzenie programu wizualizacji
Zajęcia 4. Wdrożenie procesu klienta (pojazd) Doskonalicie Państwo program klienta, pojazdy mają jechać po wyznaczonych trasach, proszę już rozróżniać, czy pojazdem jest auto, czy pociąg. Program pojazdów uruchamiany jest z odpowiednimi parametrami! Być może trzeba będzie uzupełnić program wizualizacji! sprawdzenie programu pojazdów w wersji beta
(oglądam)
Zajęcia 5. Proces serwera zasobów Piszecie Państwo program serwera zasobów, który 'nadzoruje' stan skrzyżowania, m.in. zajętość poszczególnych 'kratek' drogi, zajętość mostu, stan świateł i szlabanów. Proces ma gwarantować, że poszczególne pojazdy nie będą na siebie najeżdżały! sprawdzenie programu pojazdów w wersji ostatecznej
(na ocenę)
Zajęcia 6. Wdrożenie procesu serwera zasobów Doskonalicie Państwo program zarządcy, wersja ostateczna zawiera m.in. sprawdzenie zajętości poszczególnych elementów drogi, oraz ma przygotowane struktury pamiętające stan świateł (włączone/wyłączone), stan szlabanów (włączone/wyłączone), zajętość mostu (czy wszyscy, którzy wjechali na most zdążyli już wyjechać). Z tych struktur będzie korzystać proces zarządzający mostem. sprawdzenie programu zasobów w wersji beta
(oglądam)
Zajęcia 7. Proces zarządcy Piszecie Państwo program zarządzający mostem (zarządca? dróżnik?). Proces ten umożliwia sterowanie mostem, szlabanami i światłami. Komunikacja z procesem zasobów oraz procesem wizualizacji poprzez kolejki komunikatów. Być może trzeba będzie uzupełnić program wizualizacji! sprawdzenie programu zasobów w wersji ostatecznej
(na ocenę)
Zajęcia 8. Wdrożenie procesu  zarządcy Doskonalicie Państwo program zarządcy, wersja ostateczna zawiera m.in. sprawdzenie zajętości poszczególnych elementów drogi, oraz umożliwia udostępnienie drogi dla pojazdów z pierwszeństwem (łącznie z wykryciem nadjeżdżającego pojazdu, ze zmianą świateł, podnoszeniem/opuszczeniem szlabanów, sprawdzeniem, czy żaden pojazd nie jest na skrzyżowaniu etc.) sprawdzenie programu zarządcy mostu w wersji beta
(oglądam)
Zajęcia 9. Dopracowywanie szczegółów Sprawdzacie Państwo, czy zasady działania Waszego programu są zgodne z wytycznymi. sprawdzenie programu zarządcy mostu w wersji ostatecznej
(na ocenę)
Zajęcia 10. zadania numeryczne Omówienie działania procesów równoległych w QNX'ie.
Przydział zadań matematycznych (numerycznych)
sprawdzenie całości zadania A
(na ocenę)
Zajęcia 11. opracowanie zadania B 'globalnego' Przekształcenie zadania A na wersję 'globalną' - w której każdy proces może być uruchomiony na osobnym węźle sieci qnet. sprawdzenie zadań numerycznych
Zajęcia 12. j/w cd. zadania B -
Zajęcia 13. j/w zadanie B - dopracowywanie szczegółów -
Zajęcia 14.   Prezentacja i zaliczenie zadania B (w wersji równoległej, tzw. globalnej) sprawdzenie całości zadania B
(na ocenę)
Zajęcia 15.   Wpisy ocen końcowych.  

2. Forma zaliczenia
Zaliczenie zadania A, zadania B oraz zadnia numerycznego polega na:
- zaprezentowaniu efektów działania napisanego programu,
- wyjaśnienie zasady działania programu,
- omówienie kodu programu,
-
przedstawieniu stosownego sprawozdania w postaci papierowej (zawierającego w/w),
  oraz przesłaniu treści sprawozdania w formie pliku pdf mailem do prowadzącego.


3. Szczegółowe wytyczne
W swoich programach nie możecie Państwo używać funcji spawn().
Treść zadania A (działającego 'lokalnie') - dostępna | tutaj |
Treść zadania B (działającego 'globalnie' - na kliku węzłach sieci qnet) dostępna |tutaj |
Treść zadań numerycznych - dostępna wkrótce.


4. Literatura

Książki:

QNX - instalowanie i dokumentacja

Materiały dotyczące programowania w QNX-ie:

Materiały z mechanizmów komunikacji międzyprocesowej (bardziej na Linux'a niż QNX-a) ncurses

prof. J. Sadecki
mgr inż. J. Trofimowicz
mgr inż. A.Zatwarnicka