rtlinux - system czasu rzeczywistego cała książka, 123ebooki
[ 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 ] |