Prezentacja programu PowerPoint 2016...Title Prezentacja programu PowerPoint Author Mariusz Rudnicki...

38
PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.3 Mariusz Rudnicki – [email protected]

Transcript of Prezentacja programu PowerPoint 2016...Title Prezentacja programu PowerPoint Author Mariusz Rudnicki...

  • PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.3

    Mariusz Rudnicki – [email protected]

  • Szeregowanie Omawiane zagadnienia

    Czym jest szeregowanie?

    W jakim celu stosuje się mechanizmy szeregowania?

    Algorytmy szeregowania w RT OS:

    QNX Neutrino,

    RT Linux,

    Windows CE.

    Szeregowanie zadań okresowych i aperiodycznych.

    Niebezpieczeństwa związane z szeregowaniem.

    2/38

  • Szeregowanie Algorytm szeregowania (ang. scheduler - planista) to algorytm rozwiązujący jedno z najważniejszych zagadnień programowania systemów czasu rzeczywistego, a mianowicie – w jaki sposób rozdzielić czas procesora i dostęp do innych zasobów tj. pamięć, zasoby sprzętowe, pomiędzy zadania, które w praktyce zwykle o te zasoby konkurują, aby dostęp do tych zasobów był sprawiedliwy i zapewniał terminowe wykonanie zadań krytycznych.

    3/38

  • Szeregowanie Implementacje algorytmu szeregowania mogą być

    różne: zazwyczaj moduł planisty umieszczony jest w jądrze

    systemu – QNX Neutrino; może jednak być jednym ze zwykłych zadań, które

    dostarcza usług dla jądra.

    W niektórych systemach mogą istnieć różne algorytmy szeregowania dla zadań RT i non-RT.

    Algorytm szeregowania musi rozpatrywać wiele czynników: stan zadania (gotowość do wykonania);

    priorytet zadania; przeciwdziałać zagłodzeniu procesu.

    4/38

  • Szeregowanie

    Szeregowanie a wywłaszczanie

    Wymuszone oddawania kontroli – wielozadaniowość z wywłaszczaniem.

    Dobrowolne oddawanie kontroli – wielozadaniowość oparta na współpracy (rzadziej stosowana źle zaprojektowany proces może zdestabilizować system).

    5/38

  • Szeregowanie – stany wątków Wątki posiadają dwa podstawowe stany:

    zablokowany: oczekuje na zdarzenie; istnieje wiele stanów blokowania w zależności od tego na co

    proces oczekuje np.: blokada REPLY – proces oczekuje na odpowiedź IPC; blokada MUTEX – proces oczekuje na mutex; blokada RECEIVE – proces oczekuje na komunikat,

    gotowy: zdolny do użycia CPU; dwa podstawowe stany gotowości:

    RUNNING – proces aktualnie używa CPU; READY – proces oczekuje podczas gdy inny proces jest

    uruchomiony.

    6/38

  • Szeregowanie – stany wątków

    Pozostałe stany wątków:

    DEAD – wątek jest martwy, nie może być przywrócony do pracy, nigdy nie opuści tego stanu;

    STOPPED – zatrzymany przez sygnał stop, nie będzie kontynuowany dopóki nie dostanie sygnału wznowienia.

    7/38

  • Szeregowanie – priorytety

    Wszystkie wątki posiadają priorytety: priorytety są w zakresie od 0 (niski) do 255 (wysoki);

    mechanizm priorytetów tylko dla wątków w stanie gotowy;

    jądro zawsze wybiera wątek o najwyższym priorytecie i będący w stanie READY (pełne wywłaszczanie):

    stan wątku zmienia się na RUNNING,

    zablokowane wątki nawet nie są rozważane;

    większość wątków spędza najwięcej swojego czasu w stanie zablokowanym.

    8/38

  • Szeregowanie – priorytety

    9/38

    References: http://www.qnx.com/developers/docs/6.5.0SP1.update/index.html#com.qnx.doc.neutrino_sys_arch/kernel.html#SCHEDULING

  • Szeregowanie – algorytmy

    Algorytm karuzelowy ang. Round – Robin:

    10/38

    Każdemu procesowi przyporządkowana jest szczelina czasowa ang. timeslice równa 4 x clock period. Clock period zależy od zegara CPU: 40 MHz > fCPU – cp = 10 ms; 40 MHz ≤ fCPU – cp = 1 ms.

    References: http://www.qnx.com/developers/docs/6.5.0SP1.update/index.html#com.qnx.doc.neutrino_sys_arch/kernel.html#SCHEDULING

    Wątek: po wykorzystaniu swojego kwantu

    czasu zostaje wydziedziczony; dobrowolnie oddaje zasoby procesora

    przed upływem interwału czasu; zostaje wydziedziczony przez proces o

    wyższym priorytecie.

  • Szeregowanie – algorytmy Algorytm sporadyczny ang. Sporadic scheduling:

    11/38

    C – initial budgetl; L – Low priority; N – Normal priority; T – Replenishment period; R – stan zablokowania; Max. liczba możliwych przeszeregowań – wpływa na narzuty szeregowania sporadycznego;

    References: http://www.qnx.com/developers/docs/6.5.0SP1.update/index.html#com.qnx.doc.neutrino_sys_arch/kernel.html#SCHEDULING

  • Szeregowanie – algorytmy

    Algorytm sporadyczny ang. Sporadic scheduling – wykorzystywany jest w sytuacji, gdy system reazlizuje Rate Monotonic Analysis (RMA) w celu zapewnienia obsługi procesów periodycznych i aperiodycznych. Dobrze zaprojektowanych system pozwala obsługiwać krytyczne zadania aperiodyczne z zachowaniem terminowego wykonania pozostałych zadań.

    12/38

    References: http://www.qnx.com/developers/docs/6.5.0SP1.update/index.html#com.qnx.doc.neutrino_sys_arch/kernel.html#SCHEDULING

  • Szeregowanie – algorytmy

    Algorytm FIFO ang. First In First Out:

    13/38

    References: http://www.qnx.com/developers/docs/6.5.0SP1.update/index.html#com.qnx.doc.neutrino_sys_arch/kernel.html#SCHEDULING

    Wątek uruchomiony; Dobrowolnie zrzeka się kontroli; Zostaje wydziedziczony przez wątek o wyższym priorytecie.

  • Szeregowanie – algorytmy

    Adaptive partitioning:

    14/38

    W wielu systemach zachodzi konieczność ochrony aplikacji lub grupy aplikacji przed wpływem innych programów.

    Statyczne partycje gwarantują procesom dostęp do zasobów wyspecyfikowanych przez konstruktora systemu: podstawowym zasobem branym pod uwagę jest czas CPU, pozostałe to współdzielone zasoby takie jak pamięć, przestrzeń plików (dysk lub flash).

  • Szeregowanie – algorytmy Adaptacyjność partycji w QNX Neutrino polega

    na: możliwości zmiany konfiguracji w trakcie pracy; stałym rozmiarze w danym czasie; automatycznym dostosowaniu się do warunków pracy

    systemu, dla przykładu: wolny czas CPU jest redystrybuowany do innych partycji; systemy plików mogą rozliczać czas klienta w oparciu o

    mechanizm tymczasowego przenoszenia wątków pomiędzy partycjami.

    W związku z powyższym adaptacyjne partycjonowanie jest mniej restrykcyjne i bardziej wydajne w stosunku do innych algorytmów szeregowania.

    15/38

  • Szeregowanie – algorytmy

    Czym są adaptacyjne partycje?

    nazwanymi zbiorami reguł;

    regułami wybranymi do sterowania zachowaniem globalnych zasobów systemu;

    kiedy proces lub wątek skojarzony jest z daną partycją jego działania zarządzane są zgodnie z regułami tej partycji w danym czasie.

    16/38

  • Szeregowanie – algorytmy

    Adaptacyjne partycje dostarczają:

    ochronę pamięci – każda z partycji jest dyskretna i sterowana przez jednostkę zarządzającą pamięcią ang. Memory Management Unit – MMU;

    ochronę przed przeciążeniem – każda partycja ma zagwarantowany przedział czasu, na wykonywanie powiązanych z nią zadań, wyspecyfikowany przez twórcę systemu;

    17/38

  • Szeregowanie – algorytmy Dlaczego stosujemy adaptacyjne partycje?

    w celu zapewnienia wydajności RT z gwarancją zapobiegania przeciążeniom;

    ponieważ w systemach dynamicznych, statyczne partycję są nieefektywne;

    Dla przykładu statyczny podział czasu CPU pomiędzy partycje może prowadzić do marnowania tego zasobu i wprowadzać opóźnienia: jeżeli większość partycji jest wolna, a jedna bardzo

    obciążona, to obciążona partycja nie otrzymuje dodatkowego czasu, dopóki wątki tła w pozostałych partycjach marnują czas CPU,

    jeżeli przerwanie zostało przypisane do partycji, musi ono poczekać, aż partycja ruszy. To może powodować nieakceptowalne opóźnienia szczególnie w sytuacji sekwencji przerwań.

    18/38

  • Szeregowanie – algorytmy

    Adaptacyjne partycje vs. Bezpieczeństwo

    Wiele systemów podatnych jest na ataki DoS ang. Denial of Service

    19/38

    DoS attack w/o adaptive partitioning

  • Szeregowanie – algorytmy

    Adaptacyjne partycje vs. Bezpieczeństwo

    Wiele systemów podatnych jest na ataki DoS ang. Denial of Service

    20/38

    DoS attack with adaptive partitioning

  • Szeregowanie – algorytmy

    Planista Adaptacyjnego partycjonowania ang. Adaptive partitioning thread scheduler został zaprojektowany aby rozwiązywać następujące problemy:

    gwarancji współdzielenia czasu procesora na wyspecyfikowanym minimalnym poziomie w czasie przeciążenia systemu;

    zapobieganiu monopolizacji systemu przez nieistotne lub niezaufane aplikacje.

    21/38

  • Szeregowanie – algorytmy

    Partitioning Technology projektant systemu:

    definiuje partycje dla mechanizmu priorytetowania;

    przypisuje wątki/procesy do poszczególnych partycji:

    proces/wątek potomny domyślnie zostaje umieszczony w partycji rodzica;

    określa minimalne % zużycie procesora dla każdej partycji.

    22/38

  • Szeregowanie – RT LINUX

    Planista: ładowalny moduł RT Core;

    moduł stworzony przez użytkownika.

    23/38

    Task 1 – T1 = 50 ms, C1 = 25 ms. Task 2 – T2 = 100 ms, C2 = 40 ms.

    Wykorzystanie procesora wyraża wzór 𝑈 =𝐶

    𝑇

  • Szeregowanie – RT LINUX RMS – Rate Monotonic Scheduling

    Algorithm domyślny algorytm szeregowania bazujący na

    statycznych priorytetach – uwzględnia okres wykonywania zadania, krótszy okres zadania – wyższy jego priorytet;

    algorytm optymalny w takim sensie, jeśli zadanie nie jest szeregowalne (nie będzie wykonane na czas) tym algorytmem, to nie będzie szeregowalne według żadnego innego algorytmu bazującego na statycznych priorytetach;

    24/38

  • Szeregowanie – RT LINUX

    RMS – Rate Monotonic Scheduling Algorithm wadą tego algorytmu jest niski limit

    szeregowalności – 69,3%. Oznacza to iż w systemie, w którym zadania zużywają 70% czasu procesora, nie wszystkie zadania będą wykonane na czas.

    25/38

  • Szeregowanie – RT LINUX

    EDF - Earliest Deadline First obecny algorytm szeregowania bazujący na

    dynamicznych priorytetach:

    im bliższy deadline, tym wyższy priorytet;

    zaletą tego algorytmu jest 100% szeregowalność zadań;

    wadę stanowią narzuty związane z przeliczaniem priorytetów.

    26/38

  • Szeregowanie – RT LINUX

    Szeregowanie zadań nieokresowych algorytmy RMS i EDF nie gwarantują wykonania

    na czas zadań aperiodycznych inaczej zwanych sporadycznymi, czyli pojawiającymi się w dowolnym czasie;

    szeregowanie zadań aperiodycznych wykonywane jest przy użyciu następujących algorytmów:

    Slot shifting algorithms ;

    Stack Stealing algorithms.

    27/38

  • Szeregowanie – RT LINUX

    Szeregowanie zadań nieokresowych

    28/38

    http://www.idt.mdh.se/utbildning/exjobb/files/TR1152.pdf

  • Szeregowanie – zakleszczenia Inwersja priorytetów – ma miejsce w sytuacji, gdy

    zadanie o wysokim priorytecie nie otrzymuje czasu procesora, pomimo tego iż powinno;

    Rozważmy sytuację, w której wysokopriorytetowy wątek oczekuje, aż niskopriorytetowy wątek zwolni zasób. Opóźnienie wynikające z tego faktu może być oszacowane i uwzględnione.

    Gorszy przypadek następuje wtedy, gdy pojawi się wątek średniopriorytetowy, który nie korzysta ze wspólnego zasobu. Wówczas wątek o średnim priorytecie wydziedziczy wątek o niskim priorytecie. Przez co wątek o wysokim priorytecie nadal pozostaje blokowany.

    29/38

  • Szeregowanie

    Inwersja priorytetów – rozwiązania

    dziedziczenie priorytetów – polega na tym że niskopriorytetowy wątek otrzymuje priorytet wątku o najwyższym priorytecie, który oczekuje na zasób. Zapobiega to przejmowaniu zasobów procesora przez wątki o średnim priorytecie.

    Czy ciągle możliwe jest zakleszczenie?

    30/38

  • Szeregowanie – zakleszczenia

    Zakleszczenia ang. deadlock – rozwiązania

    Rozważmy sytuację kiedy dziedziczny proces żąda dostępu do innego zasobu, który jest w użyciu przez inny proces o wysokim priorytecie.

    31/38

  • Szeregowanie – zakleszczenia

    Ceiling Semaphore Protocol – pułap zasobów, inaczej mówiąc semafor zapewniający wyłączny dostęp do danego zasobu, jest równy najwyższemu priorytetowi zadania, które może przejąć zasób plus jeden;

    Zgodnie z protokołem CSP poziom zadania, które zajmuje zasób jest równy pułapowi zasobu. Jest to rozwinięcie idei dziedziczenia priorytetów.

    32/38

  • Szeregowanie – zakleszczenia

    Rozważmy przypadek trzech procesów p1, p2, p3 o priorytetach p1>p2>p3. Pułap zasobu = 1.

    33/38

  • Szeregowanie – zakleszczenia Stack Resource Policy (SRP) – zgodnie z szeregowaniem

    SRP zadanie nie może być rozpoczęte dopóki jego priorytet nie jest najwyższy z pośród aktywnych zadań lub poziom wywłaszczenia nie jest wyższy od pułapu systemowego;

    Poziom wywłaszczenia zadania Ti jest zdefiniowany jako 𝑃𝑖 =

    1

    𝐷𝑖 gdzie Di czas do zakończenia zadania.

    Używając algorytmu SRP mamy pewność, że zadanie rozpoczęte nie zostanie zablokowane przed jego zakończeniem.

    Może zostać jednak wydziedziczone przez zadanie o wyższym priorytecie.

    SRP wykorzystuje wspólny stos do przechowywania parametrów wszystkich wykonywanych funkcji i zwracanych adresów.

    34/38

  • Szeregowanie – algorytmy

    Inne algorytmy szeregowania: FCFS (first come, first serve) – podobny do FIFO,

    bardzo słaba interaktywność systemu – pojedynczy długi proces blokuje cały system, brak priorytetów nie ma możliwości wywłaszczenia;

    SJF (shortest job first) – pierwsze najkrótsze zadanie, wada problem głodzenia długich procesów;

    35/38

  • Szeregowanie

    Szeregowanie Windows Embedded CE: Wątki o tym samym priorytecie szeregowane są

    algorytmem Round – Robin;

    domyślny kwant czasu wynosi 100 ms, może być zmieniany przez projektanta systemu;

    256 poziomów priorytetów;

    wątki o priorytetach 0 – 248 są priorytetami czasu rzeczywistego.

    36/38

  • Szeregowanie

    Szeregowanie Windows Embedded CE: Pozostałe wątki opisane są w następujący sposób:

    37/38

  • Szeregowanie Szeregowanie Windows Embedded CE:

    wątki o wyższym priorytecie, niższym numerze uruchamiane są w pierwszej kolejności;

    wątek o niższym priorytecie może zostać uruchomiony tylko w przypadku, gdy wszystkie wątki o wyższych priorytetach zakończyły działanie lub są zablokowane.

    wątki dla, których kwant czasu został ustawiony na 0 mają nieograniczony limit czasu, mogą zostać wydziedziczone przez wątek o wyższym priorytecie lub przez ISR;

    priorytety wątków są stałe – wyjątek stanowi tu zjawisko dziedziczenia priorytetów;

    38/38