Chyba każdy zainteresowany nowoczesnymi technologiami spotkał się z określeniem system czasu rzeczywistego (Real Time System). Niestety, za znajomością nazwy nie zawsze podąża choćby pobieżna znajomość tematu – często odpowiedzią na pytanie czym jest RTS jest system, który odpowiada szybko. Jak stara się pokazać w swoim tekscie Kevin Dankwardt, nie zawsze tak jest.

Opublikowana niedawno pierwsza część tekstu Real Time and Linux skupia się na wyjaśnieniu RTSów jako takich, następnie opowiada o wykorzystaniu Linuksa jako system czasu rzeczywistego oraz podaje garść informacji i linków dotyczących jego praktycznej implementacji.

Zainteresowanych tematem odsyłam do oryginalnego tekstu, tutaj postaram się pokrótce wyjaśnić, czym RTS właściwie jest i dlaczego jest potrzebny.

Wyobrazmy sobie robota montującego płyty główne. Składa się zwykle, w dużym uproszczeniu, z ruchomego ramienia sterowanego swego rodzaju komputerem. Na ramieniu zamontowane są czujniki, dzięki którym sterownik wie, w jakim położeniu znajduje się poruszające się ze stałą prędkością ramię.

Wyobrazmy sobie teraz, że programiści poszli po najkrótszej linii oporu i zaprogramowali maszynę tak:

      if (połozenie == nad_otworem) then wstaw_procesor();  else      dzialaj_dalej;  

W niektórych przypadkach – czyli gdy ramię przesuwa się bardzo powoli, a sterownik jest bardzo szybko – tego typu algorytm może działać.

Jednak maszyny tego typu pracują zwykle dość szybko, a algorytm wygląda zwykle mnie więcej tak:

      if (połozenie == (nad_otworem - staly_dystans)) then wstaw_procesor();  else      dzialaj_dalej;  

Dzięki dodaniu zmiennej staly_dystans uwzględniamy fakt, że nim sterownik zinterpretuje położenie, a pózniej zatrzyma ramię, mija kilka-kilkadziesiąt milisekund. Te milisekundy mogą spowodować pomyłkę w montażu, tak więc mają duże znaczenie.

Jednak czym byłby nawet najwspanialszy program, gdyby system, pod którego kontrolą pracuje, raz zwracał wyniki po 0.5 sekundy, a raz po 0.01? Praktycznie nie istniałaby możliwość przewidzenia, ile czasu potrzebujemy na zatrzymanie ramienia.

Tu z pomocą przychodzi nam system czasu rzeczywistego, czyli system, w którym znamy z góry czas oczekiwania na odpowiedz. I nieważne, czy wynosi on 0.03s, czy pół minuty – jeśli go znamy i jest on w miarę (+- jakiś b. niewielki, ale również możliwy do oszacowania czas) stały, możemy go uwzględnić w swoim programie.

Standardowy Linux RTSem nie jest – nie był projektowany z myślą o takim wykorzystaniu. Projektantom, którzy mimo wszystko chcą go użyć, z pomocą przychodzą odpowiednie łaty na jądro, które przekształcają naszego poczciwego pingwinka w RTS. Ale to już inna historia…

PS: Mam nadzieję, że nie namieszałem za bardzo, i zapraszam do lektury oryginalnego tekstu 😉
Archiwalny news dodany przez użytkownika: honey.
Kliknij tutaj by zobaczyć archiwalne komentarze.

Oznaczone jako → 
Share →