Szeregowanie w systemach czasu rzeczywistego
Transkrypt
Szeregowanie w systemach czasu rzeczywistego
Szeregowanie w systemach czasu rzeczywistego Witold Paluszyński Katedra Cybernetyki i Robotyki Wydzial Elektroniki, Politechnika Wroclawska http://www.kcir.pwr.edu.pl/~witold/ 2011–2015 Ten utwór jest doste֒ pny na licencji Creative Commons Uznanie autorstwaNa tych samych warunkach 3.0 Unported Utwór udoste֒ pniany na licencji Creative Commons: uznanie autorstwa, na tych samych warunkach. Udziela sie֒ zezwolenia do kopiowania, rozpowszechniania i/lub modyfikacji treści utworu zgodnie z zasadami w/w licencji opublikowanej przez Creative Commons. Licencja wymaga podania oryginalnego autora utworu, a dystrybucja materialów pochodnych może odbywać sie֒ tylko na tych samych warunkach (nie można zastrzec, w jakikolwiek sposób ograniczyć, ani rozszerzyć praw do nich). Szeregowanie procesów i watków ֒ Proces jest dynamicznym obiektem wykonuja֒cym w systemie operacyjnym określony program. Istotna֒ cecha֒ procesu jest izolacja jego środowiska i zasobów od innych procesów, np. proces posiada wlasny przydzial pamie֒ ci. W systemach z pamie֒ cia֒ wirtualna֒ przestrzeń adresowa procesu jest adresowana liniowo od zera. Wie֒ kszość nowoczesnych systemów wspiera watki, nazywane czasem procesami ֒ lekkimi (lightweight processes). Wa֒tki funkcjonuja֒ w ramach procesu, wykonuja֒ kod procesu, i wspóldziela֒ mie֒ dzy soba֒ jego dane globalne i globalnie alokowane zasoby. Każdy wa֒tek posiada wlasna֒ sekwencje֒ wykonywanych instrukcji programu, zwana֒ śladem wykonania (execution trace). W kontekście systemów czasu rzeczywistego najcześ ֒ ciej używa sie֒ poje֒ cia zadania (task). W wielu przypadkach zadanie jest identyczne z procesem, aczkolwiek w niektórych systemach jest utożsamiane z wa֒tkiem. System operacyjny czasu rzeczywistego może wspierać tylko procesy, procesy z wa֒tkami, albo tylko wa֒tki. Podstawowa֒ rola֒ systemu w odniesieniu do zadań jest ich planowanie (scheduling ), zwane również szeregowaniem, umożliwiaja֒ce ich równolegle lub quasi-równolegle wykonywanie. Planowanie oznacza wyznaczenie zadania, które powinno naste֒ pnie rozpoczać ֒ wykonywanie na procesorze. Szeregowanie w systemach czasu rzeczywistego 3 Zadania Utworzenie zadania polega na przydzieleniu mu pamie֒ ci i zaladowaniu doń kodu programu, oraz zainicjalizowaniu struktury zwanej TCB (Task Control Block). Informacje typowo zawarte w TCB: • ID zadania • adres startowy • kontekst: zawartość rejestrów, PC, rejestru stanu, itp. • informacje do planowania: typ zadania, faza, okres, termin, liczba instancji, itp. • ... Umieszczenie przez planiste֒ zadania w kolejce oznacza umieszczenie TCB tego zadania na liście innych TCB zadań w tej kolejce. Usunie֒ cie zadania z systemu polega na wykasowaniu jego TCB i dealokacji zajmowanej pamie֒ ci. Szeregowanie w systemach czasu rzeczywistego — zadania 4 Zadania okresowe Zadania okresowe wykonuja֒ sie֒ w sposób powtarzalny. Ponieważ każdorazowe tworzenie, a naste֒ pnie kasowanie zadania byloby nieefektywne, zatem system operacyjny, który wspiera zadania okresowe, po zakończeniu zadania reinicjalizuje je i umieszcza w kolejce zadań oczekuja֒cych, a na pocza֒tku naste֒ pnego okresu wyzwala je (release), tzn. umieszcza w kolejce zadań gotowych. Do parametrów zadań okresowych, dostarczanych w chwili tworzenia zadania, i przechowywanych w TCB zadania należa֒: faza, okres, wzgle֒ dny termin, i liczba instancji. Jeśli zadanie okresowe ma skończona֒ liczbe֒ instancji, to system może je wykasować po uruchomieniu zadana֒ liczbe֒ razy. Wiele systemów operacyjnych nie wspiera zadań okresowych. Moga֒ one być zaimplementowane w postaci programu, który naprzemiennie wykonuje jakiś fragment swojego kodu, i zasypia do pocza֒tku naste֒ pnego okresu. Przykladowe systemy wspieraja֒ce zadania okresowe: Real-Time Mach, EPIQ. Szeregowanie w systemach czasu rzeczywistego — zadania 5 Zadania aperiodyczne i sporadyczne Innym specyficznym rodzajem zadań sa֒ zadania aperiodyczne. Sa֒ one wyzwalane w odpowiedzi na wysta֒pienie określonych zdarzeń. Zdarzenia te wyste֒ puja֒ sporadycznie i moga֒ być wyzwolone przez zewne֒ trzne przerwanie. Po zakończeniu, zadanie aperiodyczne jest również reinicjalizowane i zawieszane. Zadania aperiodyczne moga֒ być różnego rodzaju, moga֒ pojawiać sie֒ w dowolnym momencie, i moga֒ mieć wymagania czasowe zarówno twarde jak i mie֒ kkie. Wśród nich jako specjalny rodzaj wyróżnia sie֒ zadania sporadyczne. Zadania sporadyczne maja֒ typowo twarde wymagania czasu rzeczywistego, ale jednocześnie maja֒ określony maksymalna֒ cze֒ stotliwość pojawiania sie֒ . Gdyby nie ta gwarancja, to nie daloby sie֒ obliczyć bilansu czasowego calego systemu, i zapewnić spelnienie przezeń ograniczeń czasu rzeczywistego. Szeregowanie w systemach czasu rzeczywistego — zadania 6 Planowanie zadań Algorytmy planowania maja֒ na celu zapewnienie spelnienia wymagań czasowych calego systemu. Musza֒ podejmować decyzje֒ o przydzielaniu zasobów systemu biora֒c pod uwage֒ najgorszy możliwy przypadek, lub czas odpowiedzi. Glówne grupy strategii planowania to: planowanie przed wykonaniem, i planowanie w czasie wykonywania. Celem planowania przed wykonaniem, albo inaczej: planowania statycznego, jest wyznaczenie odpowiedniej kolejności wykonywania zapewniaja֒cej spelnienie ograniczeń i bezkolizyjny doste֒ p do zasobów systemu. Planowanie przed wykonaniem może również minimalizować pewne narzuty systemowe, takie jak przela֒czanie kontekstu, co zwie֒ ksza szanse na wyznaczenie poprawnego porza֒dku wykonania. Planowanie w czasie wykonywania, inaczej: planowanie dynamiczne, zadaniom przyznawane sa֒ priorytety, i zasoby sa֒ naste֒ pnie przydzielane wedlug tych priorytetów. W tym podejściu zadania moga֒ generować przerwania i ża֒dać zasobów w dowolny sposób. Jednak aby potwierdzić poprawność pracy systemu, konieczne sa֒ testy i symulacje, w tym stochastyczne. Szeregowanie w systemach czasu rzeczywistego 7 Algorytmy planowania ogólnego przeznaczenia W systemach operacyjnych ogólnego przeznaczenia (GPOS - General Purpose Operating System) rozważa sie֒ szereg modeli planowania, takich jak: • algorytm FCFS — First-Come-First-Served • algorytm SJTF — Shortest-Job-Time-First • algorytm SRTF — Shortest-Remaining-Time-First Algorytmy te sa֒ zorientowane na maksymalizacje֒ wykorzystania procesora oraz skrócenie czasu oczekiwania dla zadań typowo obliczeniowych. W systemach czasu rzeczywistego nie maja֒ one zastosowania. Do pewnego stopnia stosowane sa֒ natomiast algorytmy: • algorytm Round-Robin, inaczej planowania rotacyjnego • algorytmy planowania oparte na priorytetach W przypadku wszystkich algorytmów planowania może być stosowane wywlaszczanie. Szeregowanie w systemach czasu rzeczywistego 8 Planowanie rotacyjne W najprostszym podejściu, planowanie rotacyjne (Round-Robin), zwane również karuzelowym, polega na sekwencyjnym uruchamianiu wszystkich zadań po kolei, aż do zakończenia każdego z nich. W wersji z podzialem czasu, każde zadanie dostaje kwant czasu na wykonanie, i jeśli nie zakończy sie֒ w ramach tego czasu, to generowane jest przerwanie, po którym zadanie jest skladowane i umieszczane na końcu kolejki zadań gotowych. Pierwsze zadanie z kolejki jest odtwarzane, i jego wykonywanie wznawiane. W efekcie, planowanie rotacyjne przydziela czas procesora sprawiedliwie wszystkim zadaniom o tym samym priorytecie. Szeregowanie w systemach czasu rzeczywistego 9 Planowanie rotacyjne plus priorytety Planowanie rotacyjne można pola֒czyć z planowaniem priorytetowym z wywlaszczaniem. Szeregowanie w systemach czasu rzeczywistego 10 Strategie szeregowania RTOS – priorytety i wywlaszczanie W najprostszym podejściu można osia֒gnać ֒ wymagane szeregowanie zadań stosuja֒c priorytety pola֒czone z wywlaszczaniem: Szeregowanie w systemach czasu rzeczywistego 11 Szeregowanie w systemach czasu rzeczywistego 12 Szeregowanie terminowe Jednym z popularnych i przydatnych podejść do szeregowania zadań w systemach czasu rzeczywistego jest szeregowanie terminowe (deadline scheduling ). Opiera sie֒ ono na uwzgle֒ dnieniu wymagań wszystkich zadań sformulowanych w postaci nieprzekraczalnych terminów wykonania. Moga֒ to być terminy zakończenia lub terminy rozpocze֒ cia. Sam algorytm bywa nazywany EDF (Earliest Deadline First) i określa, że w pierwszej kolejności wykonywane jest zadanie, którego termin (rozpocze֒ cia lub zakończenia) przypada najwcześniej. Algorytm jest bardzo intuicyjny, ponieważ ludzie cze֒ sto podejmuja֒ decyzje w podobny sposób. Czlowiek, który jest obciaż ֒ ony duża֒ liczba֒ zadań, do tego stopnia, że nie wie za co sie֒ zabrać najpierw, cze֒ sto zabiera sie֒ za zadanie, którego nieuchronny termin wykonania nadchodzi najpierw. Szeregowanie w systemach czasu rzeczywistego 13 Szeregowanie terminowe dla zadań okresowych Decyzje planistyczne sa֒ podejmowane okresowo. Odcinek czasu wystarczaja֒co dlugi aby wykonać wszystkie zadania okresowe jest nazywany ramka֒. Dlugość ramki musi być równa co najmniej sumie czasów wykonywania wszystkich zadań gotowych. Szeregowanie w systemach czasu rzeczywistego 14 Szeregowanie w systemach czasu rzeczywistego 15 Szeregowanie w systemach czasu rzeczywistego 16 Szeregowanie czestotliwościowe (RMS) ֒ Szeregowanie czestotliwościowe (Rate-Monotonic Scheduling, RMS) polega ֒ na przydziale zadaniom stalych priorytetów, odpowiadaja֒cych ich okresom wykonywania. Poniższe twierdzenie, jedno z najważniejszych osia֒gnieć ֒ teoretycznych RTOS, określa optymalny algorytm planowania dla zestawu zadań okresowych. Twierdzenie (Liu): dla zestawu zadań okresowych, i planowania priorytetowego z wywlaszczaniem, przydzial priorytetów nadaja֒cy wyższe priorytety zadaniom z krótszym okresem wykonywania, daje optymalny algorytm planowania. Algorytm określania priorytetów zgodnie z powyższym twierdzeniem zwany jest algorytmem Rate-Monotonic. Szeregowanie w systemach czasu rzeczywistego 17 Szeregowanie w systemach czasu rzeczywistego 18 Wlasności algorytmu planowania RM Be֒ dziemy sie֒ poslugiwać wartościa֒ maksymalnego wykorzystania procesora U : U= n X ei i=1 pi gdzie dla n zadań, ei jest czasem wykonania a pi okresem i-tego zadania. Twierdzenie (o kresie dla algorytmu RM): dla dowolnego zestawu n istnieje poprawny harmonogram planowania jeśli: U ≤ n(21/n − 1) Szeregowanie w systemach czasu rzeczywistego 19 Wlasności algorytmu planowania RM (cd.) Przedstawione twierdzenie określa, że im wie֒ cej zadań, tym trudniej be֒ dzie znaleźć harmonogram planowania wykorzystuja֒cy pelna֒ wydajności procesora. Można obliczyć limit teoretyczny wykorzystania procesora dla nieskończonego zestawu zadań. Wynosi on ln 2 ≈ 0.69. Co wie֒ cej, już dla kilku zadań zbliża sie֒ on do 70%. Dokladniej: n kres RMA 1 1.0 2 0.83 3 0.78 4 0.76 5 0.74 6 0.73 ... ... ∞ 0.69 Określony w twierdzeniu warunek jest jednak tylko warunkiem wystarczaja֒cym. W określonych przypadkach jest możliwe planowanie zestawu zadań, których wykorzystanie procesora przekracza powyższy limit teoretyczny. Zlożone systemy czasu rzeczywistego osia֒gaja֒ cze֒ sto wykorzystanie procesora rze֒ du 80% bez wie֒ kszych problemów. Szeregowanie w systemach czasu rzeczywistego 20 Planowanie RMS — przyklad Szeregowanie w systemach czasu rzeczywistego 21 Szeregowanie w systemach czasu rzeczywistego 22 Planowanie dynamiczne W przypadku gdy zestaw zadań nie ma stalego, okresowego charakteru, metody planowania przed wykonaniem nie maja֒ zastosowania. Planowanie w czasie wykonania, inaczej planowanie dynamiczne, musi brać pod uwage֒ wszystkie ograniczenia aktualnie istnieja֒cych zadań. Szeregowanie w systemach czasu rzeczywistego 23 Szeregowanie w systemach czasu rzeczywistego 24 Zwróćmy uwage֒ , że szeregowanie terminowe (okresowe lub nie) ma sens bez stosowania wywlaszczania w przypadku uwzgle֒ dniania nieprzekraczalnych terminów rozpocze֒ cia, natomiast w przypadku nieprzekraczalnych terminów zakończenia zwykle wlaściwa jest strategia szeregowania z wywlaszczaniem. Szeregowanie w systemach czasu rzeczywistego 25 Planowanie dynamiczne — algorytm EDF Jednym z prostych i dobrze znanych algorytmów planowania dynamicznego jest algorytm najbliższego terminu Earliest-Deadline-First (EDF). Najwyższy priorytet ma zawsze zadanie z najbliższym terminem (rozpocze֒ cia lub zakończenia). Można sformulować naste֒ puja֒ce twierdzenie dla algorytmu EDF zastosowanego do zestawu zadań okresowych: Twierdzenie (o kresie dla algorytmu EDF): zestaw n zadań okresowych, których termin wykonania jest równy ich okresowi, może być poprawnie planowany algorytmem EDF jeśli: n X ei i=1 pi ≤1 Algorytm EDF jest optymalny dla pojedynczego procesora z wywlaszczaniem. Inaczej, jeśli istnieje poprawny harmonogram, to EDF be֒ dzie dzialal poprawnie. Szeregowanie w systemach czasu rzeczywistego 26 Zadania sa֒ uwalniane równocześnie, lecz τ1 jest uruchamiane jako pierwsze ze wzgle֒ du na bliższy termin. Szeregowanie w systemach czasu rzeczywistego 27