Re: System czasu rzeczywistego?

Autor: Andrzej Karpinski (KARPIO_at_golem.umcs.lublin.pl)
Data: Sat 21 Mar 1998 - 21:39:23 MET


>No wlasnie... co to znaczy, ze dany system operacyjny, np. QNX jest
>systemem czasu rzeczywistego? Jakie roznice / przewagi w porownaniu do
>windy 95 i reszty linuxow :-) Do czego sie takie systemy stosuje i na
>ile przecietny zjadacz oprogramowania moze z nich skorzystac?

Witam!

Troche pozno, ale odpowiem, bo kilka osob mnie o to pytalo :)

System RT (real time) jest to system, ktory na okreslone zdarzenie bedzie
w stanie zareagowac w scisle przewidywalny sposob i w scisle okreslonym
czasie. Oznacza to, ze w takim systemie istnieje specjalnie
uprzywilejowana warstwa priorytetow, i jesli jakis program w niej dziala
to moze wywlaszczyc dokladnie wszystko (lacznie z kernelem, procedurami
obslugi urzadzen typu dyski itd) aby byc w stanie zareagowac w czasie
jaki jest wymagany.

Systemy tego typu stosuje sie najczesciej w przemysle do sterowania
procesami technologicznymi, automatami, miernikami, gdzie konieczna jest
natychmiastowa i bezwzgledna reakcja na zdarzenie, bez wzgledu na stan
komputera/systemu. Nie dopuszcza sie sytuacji, ze proces RT nie dostanie
czasu z powodu braku pamieci (te procesy zawsze siedza w RAM i nie
dopuszcza sie do przeniesienia ich na swap-file), dzialania innego
procesu badz jakichs zadan systemowych (chociazby transmisja z dysku). W
momencie wystapienia przerwania, wymagajacego takiej nadzwyczajnej
obslugi system porzuca dokladnie wszystkie (!) zadania i przekazuje
sterownie procesowi obslugi takiego zdarzenia.

Jest to dosc istotne, bo wyobrazmy sobie komputer, sterujacy praca
jakiegos noza czy innego urzadzenia do ciecia. W momencie gdy wystapi
przerwanie "koniec ciecia, zrobiles ile potrzeba" nalezy natychmiast
przekazac sterowanie procesowi RT ktory wylaczy automat z nozem, aby nie
doszlo do uszkodzenia elementu nad ktorym automat wlasnie pracuje wskutek
zbyt dlugiego czasu reakcji. Oczywiscie to tylko przyklad, ale mysle ze
wyjasnia mniej wiecej o co chodzi.

Po obsludze takiego procesu RT system znow zachowuje sie normalnie i
powraca do czynnosci wykonywanych wczesniej. Najczesciej jest tak, ze
defaultowy priorytet dla procesow to 0, normalne procesy moga dzialac z
priorytetami +-20, czyli dostawac mniej lub wiecej czasu, w zaleznosci od
obciazenia systemu. Procesy RT dostaja np. priorytety -128 co pozwala im
przejac calkowicie czas procesora i wywlaszczyc dokladnie wszystkie
zadania lacznie z kernelem. Oczywiscie programy dzialajace w warstwie RT
musza byc napisane w specjalny sposob - nie moga korzystac z wywolan
systemowych do obslugi dysku itd (bo przeciez maja wyzszy priorytet od
nich i nigdy nie doczekalyby sie na realizacje przez system np. zlecenia
transmisji z dysku), musza zapewniac obsluge dokladnie wszystkich bledow,
no i nie dzialac zbyt dlugo, aby system sie nie przytykal, cholernie
skomplikowanym problemem sa sytuacje w ktorych przerwanie RT przerywa
proces RT itd itd... Ble... zaczynam o glupotach pisac :)

Czesto caly system RT realizowany jest na jednoukladowych komputerkach i
siedzi sobie w pamieci ROM, chociaz istnieja implementacje takich
rozwiazan takze dla PC (QNX, RT-Linux).

mam nadzieje ze troche ulatwilem ;)
karpio

PS. Zwyklemu uzytkownikowi PC nijak taka wiedza nie wydaje sie byc
potrzebna, poza tym, ze nalezy miec swiadomosc, ze sa zastosowania w
ktorych nie da sie zastosowac innego systemu niz real time.



To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 17:06:32 MET DST