Poprzednia - Następna

Procesy czasu rzeczywistego (Real Time Tasks)

Procesy czasu rzeczywistego to programy zdefiniowane przez użytkownika, które wykonują się zgodnie z podanym harmonogramem (mogą być okresowe, zasypiać się na określony czas) mają ścisłe wymagania czasowe.

Procesy czasu rzeczywistego implementuje się jako ładowalne moduły jądra. Z punktu widzenia RTLinuksa procesy RT to wątki jądra RT. Scheduler RTLinuksa uważa, że jest tylko jeden prawdziwy proces, który ma wiele wątków. Jeden z tych wątków jest wybierany do wykonania. Linux jest tylko jednym z wątków, ma najniższy priorytet.

Proces i wątki

Procesy RT wykonują się we wspólnej przestrzeni adresowej - przestrzeni jądra. Poprawia to znacznie przewidywalność:

Powoduje to jednak pewne problemy: błąd w programie użytkownika, jakim jest proces RT, może spowodować załamanie się systemu. Pisanie programów RT wymagana takiego samego natężenia uwagi, co programowanie jądra systemu operacyjnego.

Dodatkowym ograniczeniem nałożonym na procesy RT jest fakt, że ich zasoby są definiowane statycznie. W szczególności nie ma (w standardowym RTLinuksie) wsparcia dla dynamicznej alokacji pamięci. W procesie RT nie można używać funkcji kmalloc ani vmalloc. W nowszych wersjach RTLinuksa dostępny jest moduł mbuff, który umożliwia korzystanie z dynamicznie alokowanej pamięci. Moduł ten został napisany przez pana o swojsko brzmiącym nazwisku Tomasz Motylewski.


Poprzednia - Procesy czasu rzeczywistego (Real Time Tasks) - Następna