rtlinux - system czasu rzeczywistego full, ebooki
[ Pobierz całość w formacie PDF ]
4
RTLinux — system czasu rzeczywistego
Moduły czasu rzeczywistego ............................................................................................43
Uruchamianie modułów systemowych.......................................................................43
Uruchamianie modułów czasu rzeczywistego u)ytkownika ......................................47
Rozdział 4. Aplikacje czasu rzeczywistego ...........................................................49
Standard POSIX................................................................................................................49
Struktura systemu RT-Linux.............................................................................................54
8ródła pomocy przy programowaniu zada, czasu rzeczywistego .............................56
Kompilacja modułów........................................................................................................57
Przykładowe problemy spotykane w aplikacjach RTLinuksa ..........................................57
Aplikacja „Hello World!”...........................................................................................57
Zadania czasu rzeczywistego......................................................................................59
Kolejki czasu rzeczywistego.......................................................................................60
Obsługa przerwa, systemowych.................................................................................63
Obsługa sygnałów czasu rzeczywistego w procesach Linuksa ..................................64
Zegar i funkcje konwersji czasu .................................................................................66
Pami" dzielona ..........................................................................................................68
Mechanizmy synchronizacji mi"dzyzadaniowej ........................................................69
Rozdział 5. Prosty system pomiarowy czasu rzeczywistego.................................73
Multimetr METEX 3650CR — dane techniczne..............................................................73
Komunikacja z multimetrem.............................................................................................74
Sterownik portu szeregowego...........................................................................................75
Moduł obsługi multimetru.................................................................................................78
Uwagi ko,cowe.................................................................................................................85
Rozdział 6. Podsumowanie ................................................................................87
Dodatek A Pełna lista funkcji implementowanych przez system RTLinux.............89
Funkcje charakterystyczne dla systemu............................................................................89
Podzbiór funkcji interfejsu POSIX, implementowany przez wersj" 3.1...........................91
Opcjonalne funkcje POSIX zale)ne od konfiguracji ........................................................93
Zmienne warunkowe POSIX ............................................................................................93
Semafory POSIX...............................................................................................................93
Funkcje o ograniczonym zakresie u)ywania ........................................................................94
Dodatek B Przykładowe programy z wykorzystaniem API systemu RTLinux.........95
Przechwytywanie przerwa,...............................................................................................95
Sygnały czasu rzeczywistego w procesach Linuksa .........................................................97
Dodatek C Architektura i386, a wielozadaniowe systemy operacyjne .................99
Zarzdzanie pami"ci w trybie chronionym .....................................................................99
Segmentacja................................................................................................................99
Stronicowanie (pami" wirtualna)............................................................................101
Ochrona...........................................................................................................................102
Przerwania i obsługa wyjtków.......................................................................................103
Zarzdzanie zadaniami....................................................................................................105
Bibliografia....................................................................................109
Skorowidz......................................................................................111
Rozdział 2.
RTLinux
Podstawowe załoenia
Dosy oczywistym rozwizaniem, eliminujcym wczeniej wymienione wady, wydaje
si by modyfikacja jdra Linuksa. Tak drog włanie wybrali twórcy systemu KURT
(
). Konieczne zmiany to midzy innymi: wprowadzenie wy-
właszczajcego szeregowania procesów o stałym priorytecie, zwikszenie rozdzielczoci
szeregowania i wprowadzenie zegara wy*szej rozdzielczoci. Osignity kompromis
pozwolił na stworzenie systemu o łagodnych (ang.
firm
) ograniczeniach czasowych.
Całkowicie inn drog do osignicia cech systemu operacyjnego (ale o twardych ograni-
czeniach czasowych — ang.
hard real-time operating system
) wybrali twórcy RTLinuksa
[2, 3]. Inspiracj w tym wypadku była architektura eksperymentalnego systemu MERT,
zbudowanego przez badaczy z Bell Labs w latach siedemdziesitych. W zamierzeniach
system miał mie mo*liwo uruchamiania zarówno aplikacji czasu rzeczywistego,
jak i zwykłych programów. Intencj projektantów systemu MERT było stworzy nie
jeden system operacyjny, który wspiera obydwa typy przetwarzania, lecz sprawi, aby
system czasu rzeczywistego i system ogólnego przeznaczenia współistniały razem.
Twierdzili oni, *e
… dostpno wyrafinowanego systemu ogólnego przeznaczenia na
tym samym komputerze, co system czasu rzeczywistego, dostarcza pot!nego narzdzia,
które mo!e by wykorzystane w projektach interfejsu człowiek-maszyna dla aplikacji
czasu rzeczywistego...
[1].
Architektura systemu
Bazujc na ideach systemu MERT — RTLinux oddziela mechanizmy systemu operacyj-
nego czasu rzeczywistego od systemu operacyjnego ogólnego zastosowania. RTLinux
działa traktujc zwykłe jdro Linuksa jako zadanie pod kontrol niewielkiego i prostego
systemu operacyjnego czasu rzeczywistego. W istocie, Linux jest zadaniem tła (ang.
idle task
) dla RTLinuksa, wykonywanym jedynie wtedy, gdy *adne z zada: czasu rze-
czywistego nie ubiega si o procesor. Z zało*enia zadanie Linuksa nigdy nie mo*e zablo-
16
RTLinux — system czasu rzeczywistego
kowa przerwa: i zapobiec wywłaszczeniu siebie. Technicznym kluczem do osignicia
tego jest dodanie programowej warstwy emulujcej sprztowy mechanizm kontroli prze-
rwa:. Linux nigdy nie mo*e zablokowa przerwa: sprztowych. Kiedy podejmuje tak
prób, cz czasu rzeczywistego przechwytuje ten fakt, zaznacza odpowiednio i oddaje
sterowanie z powrotem do jdra Linuksa. Niezale*nie od trybu, Linuksowi nie pozwala
si na zwikszenie opó=nienia odpowiedzi na przerwanie czasu rzeczywistego. Kiedy zo-
staje zgłoszone przerwanie, jdro RTLinuksa przechwytuje je i decyduje, co z nim zrobi.
Jeli aktualnie istnieje procedura obsługi przerwania, pochodzca z zadania czasu rze-
czywistego — zostaje wywołana. Kiedy przerwanie jest obsługiwane przez Linuksa (lub
współdzielone z nim), jest oznaczane jako oczekujce. Po wykryciu próby włczenia
przerwa: przez jdro Linuksa wszystkie oczekujce przerwania s emulowane i wywo-
ływane s odpowiednie procedury obsługi.
Bez znaczenia jest to, w jakim trybie działa Linux. W trybie u*ytkownika, w trybie
systemowym czy nawet w sekcji krytycznej jdra, RTLinux jest w stanie zareagowa na
przychodzce przerwania. Techniczne aspekty dyskutowanych rozwiza: poddane s
szczegółowej analizie w podrozdziale „Wirtualny system przerwa:”.
RTLinux separuje mechanizmy jdra czasu rzeczywistego i mechanizmy jdra zwykłego
systemu (rysunek 2.1). Tak wic ka*dy z osobna mo*e by optymalizowany niezale*nie.
Jest tak zaprojektowany, *e wyeliminowane s sytuacje, w których musi czeka na zwol-
nienie jakichkolwiek zasobów przez Linuksa. RTLinux nie alokuje pamici, nie dzieli
sekcji krytycznych ani nie synchronizuje *adnych struktur danych, z wyjtkiem sytuacji
niezbdnych do współdziałania obydwu systemów.
Rysunek 2.1.
Architektura systemu
RTLinux [21]
Mechanizmy komunikacyjne u*ywane do wymiany danych pomidzy zwykłymi pro-
cesami a zadaniami czasu rzeczywistego s nieblokujce po stronie RTLinuksa. Nigdy nie
wystpuje przypadek, *e zadanie czasu rzeczywistego czeka na zakolejkowanie lub po-
branie danych z kolejki.
Jedn z kluczowych zasad projektowych RTLinuksa jest, aby pozostawi go jak naj-
mniejszym i jak najprostszym. Im mniej spraw do „załatwienia” po stronie RTLinuksa
i im wicej po stronie Linuksa, tym lepiej. Tak wic startem systemu, inicjalizacj urz-
dze:, ładowaniem modułów, systemem plików i dynamicznym przydzielaniem zasobów
zajmuje si zwykły system. Zadaniem RTLinuksa jest dostarczenie bezporedniego
dostpu do sprztu dla wtków czasu rzeczywistego, szeregowanie, dostarczanie me-
chanizmów odmierzania czasu i technik komunikacji midzyprocesowej.
Rozdział 2.
RTLinux
17
Wirtualny system przerwa
Jdro Linuksa jest du*e i monolityczne. Wielu ludzi zaanga*owanych w jego rozwój czsto
u*ywa wyłczania przerwa: w celu ochrony sekcji krytycznych. Rodzi to wspomniane
ju* wczeniej reperkusje. Niezbdna korekta takiego stanu rzeczy pocignłaby szereg
zmian w jdrze, jednak bez gwarancji wystarczajco dobrych wyników dla przetwarzania
czasu rzeczywistego.
W systemie RTLinux problem ten został rozwizany przez Victora Yodaikena [1, 2]
poprzez zastosowanie programowej warstwy emulacji pomidzy jdrem Linuksa a sprz-
towym układem kontroli przerwa:. Wszystkie wystpienia makr
cli
,
sti
,
iret
w kodzie
=ródłowym jdra zostały zastpione makrami:
S_CLI
,
S_STI
,
S_IRET
. W ten sposób
emulator jest w stanie wykry ka*d prób wyłczenia i włczenia przerwa: przez jdro
Linuksa.
cli — wyzerowanie znacznika IF zezwolenia na przerwania w rejestrze stanu procesora.
sti — ustawienie znacznika IF zezwolenia na przerwania.
iret — instrukcja powrotu z procedury obsługi przerwania.
Budow dwóch pierwszych makr przedstawia listing 2.1 (zapis w konwencji assem-
blera AT&T).
Listing 2.1. Budowa makr S_CLI oraz S_STI
Makro
S_CLI
powoduje, *e zamiast rzeczywistego wyłczenia przerwa: przez procesor
zerowana jest odpowiednia zmienna w emulatorze. Jeli nastpiło przerwanie i zmienna
jest ustawiona, emulator wywołuje bezporednio procedur obsługi przerwania ustalon
przez jdro Linuksa. W przeciwnym razie, gdy przerwania s wyłczone, fakt zgłoszenia
przerwania jest zapamitywany bitowo w zmiennej, przechowujcej informacje o wszyst-
kich oczekujcych przerwaniach. Kiedy Linux na powrót próbuje włczy przerwania,
wszystkie oczekujce przerwania s emulowane. Makro
S_STI
rzeczywicie włcza prze-
rwania i przygotowuje stos procesora jak w przypadku wywołania przerwania: odkłada
na niego flagi procesora, rejestr segmentowy jdra i adres powrotu, w tym wypadku adres
ten oznaczony jest etykiet
1:
. Makro
S_IRET
wykonuje cał prac emulatora przerwa:
(listing 2.2).
[ Pobierz całość w formacie PDF ]