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.