Poprzednia - Następna

Koncepcja systemu RTLinux

Jak zmienić system nie-real-time w system real-time? Narzucającą się metodą jest modyfikacja jądra tego systemu tak, by stało się ono przewidywalne. To jednak nie jest proste:

Linux jest dużym i złożonym systemem operacyjnym, w dodatku podlega ciągłym modyfikacjom. Dlatego wszelkie duże zmiany w kodzie są trudne do utrzymania, jeżeli chce się nadążać za rozwojem Linuksa.

Twórcy RTLinuksa zdecydowali się na zupełnie inne rozwiązanie: bezpośrednio nad procesorem x86 zbudowane zupełnie nowe jądro czasu rzeczywistego, które działa niezależnie od zwykłego jądra Linuksa.

Rysunek 1 pokazuje standardowe jądro Linuksa.

Rysunek 1: Standardowe jądro Linuksa
Rysunek 2 pokazuje jądro RTLinuksa.
Rysunek 2: Jądro RTLinuksa
Nowe jądro implementuje tylko podstawowe usługi takie jak scheduler. Jądro to jest wywłaszczalne. Linux jest tylko jednym z procesów RT działających na tym jądrze, dzieli procesor z procesami czasu rzeczywistego. Dokładniej, Linux jest uruchomiony w tle, z najniższym priorytetem i jest uruchamiany tylko wtedy, gdy nie ma działających procesów RT. Zmiany w kodzie Linuksa są niewielkie i przez to łatwe w utrzymaniu.

Taka koncepcja systemu narzuca koncepcję tworzenia programów RT. Programy RT nie są uruchamiane na jądrze Linuksa, lecz na jądrze RTLinuksa, a które oferuje ograniczone usługi. Nakłada to na programy RT szereg ograniczeń: nie mogą one np. dynamicznie alokować pamięci. Pomysł jest taki, że w systemie RT wyróżnia się część, która musi być wykonywana w czasie rzeczywistym i część, która nie wymaga przewidywalności. Często jest tak, że program czasu rzeczywistego wykonuje jakieś akcje (np. mierzy jakąś wielkość w stałych odstępach czasu) a jednocześnie udostępnia graficzny interfejs, który wyświetla te dane. Wtedy graficzny interfejs powinien zostać zaimplementowany jako program Linuksa, który odczytuje dane przesłane mu przez cześć RT.


Poprzednia - Koncepcja systemu RTLinux - Następna