Pojawia się (oczywiste z racji naszego zafascynowania Linuksem) pytanie, czy Linux jest lub mógłby być real-time systemem operacyjnym. Aby odpowiedzieć sobie na to pytanie, warto spojrzeć ogólnie na "zwykle" systemy operacyjne i ich inklinacje do bycia RTOSami.
Ogólnozadaniowe systemy operacyjne nie są dobrymi kandydatami na RTOSy. Z czego to wynika? Aby odpowiedzieć na to pytanie, należy przyjrzeć się zadaniom i oczekiwaniom wobec "normalnego" systemu operacyjnego, a real-time systemu.
Zwyczajne OS maja cele inne niż real-time systemy, mianowicie:
Natomiast w przypadku systemu RT (również RTOSa) kwestia priorytetowa jest zapewnienie wykonywania zadań real-time stosunkowo szybko, lecz przede wszystkim - przewidywalnie.
Wyobraźmy sobie dwa systemy: w pierwszym przełączenie kontekstu zajmuje zazwyczaj 10 jednostek czasu, w najgorszym przypadku osiągając 12 jednostek czasu; drugi - w którym zazwyczaj przełączenie kontekstu trwa 3 jednostki czasu (a wiec dużo mniej niż w pierwszym systemie), natomiast w najgorszym wypadku zajmuje 20 jednostek czasu.
Jako "normalny" system operacyjny drugi system byłby preferowany. Z punktu widzenia idei real-time systemu, pierwszy z systemów jest lepszy, gdyż drugi zaczyna być niebezpieczny (choć wciąż mamy gwarancje czasu pesymistycznego).
Z jednej strony Linux wspiera rozszerzenia real-time ze standardu POSIX 1003.13. POSIX 1003.13 (któremu dokładniej przyjrzymy się nieco później) definiuje minimalny real-time system, i m.in. techniki do "blokowania" procesów w pamięci, aby nie mogły być zrzucane na dysk, a także specjalny scheduler, który zapewnia deterministyczne wykonywanie procesów.
Aby być zgodnym ze standardem, Linux zapewnia zgodny z POSIXem
mlock
, specjalne wywołania systemowe, oraz sygnały POSIX RT.
Mimo zgodności z POSIX 1003.13, Linux nie może być określony mianem RT systemu - choćby z racji faktu, ze procesy mogą być blokowane przez aktywność jadra (którego do jadra 2.6 nie dało się wywłaszczyć).
Wymagania Linuksa jako ogólnozadaniowego systemu operacyjnego są odmienne od wymagań i potrzeb RTOSa. Ta różnica prowadzi do pewnych kwestii, które ograniczają potencjał Linuksa jako real-time systemu operacyjnego:
Powtarzając: ogolnozadaniowe OSy i RTOSy maja często sprzeczne potrzeby, a efekt pożądany w jednym jest często szkodliwy w drugim.
Poprzednia - Linux jako RTOS - Następna