Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.3

Podobne dokumenty
Mariusz Rudnicki PROGRAMOWANIE WSPÓŁBIEŻNE I SYSTEMY CZASU RZECZYWISTEGO CZ.3

PROGRAMOWANIE SYSTEMÓW WBUDOWANYCH

projekt akademicki w Institute for Mining and Technology of New Mexico. Autor Victor Yodaiken FSMLabs komercyjna odmiana RTLinuxPro

Prezentacja systemu RTLinux

Systemy Czasu Rzeczywistego (SCR)

REAL-TIME LINUX. ZGODNOŚĆ Z POSIX ( PSE51 (minimal realtime system profile)

Wykład 6. Planowanie (szeregowanie) procesów (ang. process scheduling) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

SYSTEMY OPERACYJNE WYKLAD 6 - wątki

7. Szeregowanie procesów w systemie QNX6 Neutrino

Zarządzanie procesorem

Organizacja oprogramowania

Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.1

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

Podstawowe zagadnienia

Planowanie przydziału procesora

1. Szeregowanie w systemach czasu rzeczywistego

Planowanie przydziału procesora

Zarządzanie procesami i wątkami

Fazy procesora i wejścia-wyjścia. Planowanie przydziału procesora. Czasy faz procesora. Planowanie przydziału procesora

Planowanie przydziału procesora

Planowanie przydziału procesora CPU scheduling. Koncepcja szeregowania. Planista przydziału procesora (planista krótkoterminowy) CPU Scheduler

4. Procesy pojęcia podstawowe

Planowanie przydziału procesora

Jądro systemu operacyjnego

Systemy operacyjne III

7. Szeregowanie procesów w systemie QNX6 Neutrino

Ogólna koncepcja planowania. Planowanie przydziału procesora. Komponenty jądra w planowaniu. Tryb decyzji. Podejmowanie decyzji o wywłaszczeniu

Przełączanie kontekstu. Planista średnioterminowy. Diagram kolejek. Kolejki planowania procesów. Planiści

J. Ułasiewicz Programowanie aplikacji współbieżnych 1

Informatyka, systemy, sieci komputerowe

Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz

Przykłady implementacji planowania przydziału procesora

Systemy czasu rzeczywistego. Systemy czasu rzeczywistego. Systemy czasu rzeczywistego. Systemy czasu rzeczywistego - przykłady

przydziału procesora Przykłady implementacji planowania przydziału procesora Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Budowa i oprogramowanie komputerowych systemów sterowania. Wykład 9. Systemy operacyjne

4. Procesy pojęcia podstawowe

Szeregowanie zadań w Linux Kernel 2.6. Daniel Górski Przemysław Jakubowski

Systemy operacyjne Procesy i wątki

Systemy czasu rzeczywistego. Systemy czasu rzeczywistego. Systemy czasu rzeczywistego. Systemy czasu rzeczywistego - przykłady

Systemy wbudowane - wykład 9. Systemy czasu rzeczywistego Notes. Systemy czasu rzeczywistego Notes. Systemy czasu rzeczywistego Notes.

Wieloprogramowanie. Systemy operacyjne / Procesy i wątki str.4/32. Proces w systemie operacyjnym. Tworzenie i kończenie procesów

Wykład 3: Implementacja programów wbudowanych

Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.2

Technika mikroprocesorowa. Systemy operacyjne czasu rzeczywistego

Systemy wbudowane. Systemy operacyjne czasu rzeczywistego

Planowanie przydziału procesora

Systemy Czasu Rzeczywistego (SCR)

4. Procesy pojęcia podstawowe

Zarządzanie w systemach i sieciach komputerowych. Dr inż. Robert Wójcik. Wykład 3. Zarządzanie przydziałami procesora w systemach komputerowych

Przeplot. Synchronizacja procesów. Cel i metody synchronizacji procesów. Wątki współbieżne

Procesy, wątki i zasoby

Materiały pomocnicze 1

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

Pytania do treści wykładów:

Jadro Linux 2.6. a zadania czasu rzeczywistego. Artur Lewandowski. Jądro Linux 2.6 p.1/14

1.1 Definicja procesu

Sieciowe Systemy Operacyjne

Nowoczesne systemy operacyjne

Spis treści. Rozdział 3. Instalacja i konfiguracja systemu RTLinux Przebieg instalacji...e...e.37

dr inż. Jarosław Forenc

Systemy operacyjne. Paweł Pełczyński

Procesy, zasoby i wątki

Procesy, zasoby i wątki

Procesy, zasoby i wątki

projektowanie systemu

1. Etapy rozwoju systemów komputerowych

SYSTEMY OPERACYJNE PROCESORÓW SYGNAŁOWYCH

Systemy operacyjne III

dr inŝ. Jarosław Forenc

Definicja systemu operacyjnego (1) Definicja systemu operacyjnego (2) Miejsce systemu operacyjnego w architekturze systemu komputerowego

System operacyjny MACH

Zaawansowane programowanie w C++ (PCP)

Przykłady implementacji planowania przydziału procesora. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

* Wymień typowe standardy sygnałów procesowych: - analogowy - dwustanowe

Jadro monolityczne vs. mikrojadro. Mikrojadro. Olga Kowalczuk. 9 grudnia 2008

Linux - Real-Time (?)

Opis efektów kształcenia dla modułu zajęć

Paweł Skrobanek. C-3, pok pawel.skrobanek.staff.iiar.pwr.wroc.pl

System komputerowy. System komputerowy

System operacyjny System operacyjny

Programowanie współbieżne Wykład 2. Iwona Kochańska

Wielowątkowość mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

WYKŁAD 3 Jądro systemu i procesy. Marcin Tomana Wyższa Szkoła Informatyki i Zarządzania

Porządek dostępu do zasobu: procesory obszary pamięci cykle procesora pliki urządzenia we/wy

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

Podstawy Informatyki Systemy operacyjne

Systemy Czasu Rzeczywistego (SCR)

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Wielozadaniowość w systemie Microsoft Windows

dr inż. Jarosław Forenc

Planowanie przydziału procesora

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

Kurs programowania. Wykład 8. Wojciech Macyna

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Programowanie współbieżne Wykład 7. Iwona Kochaoska

XMEGA. Warsztaty CHIP Rok akademicki 2014/2015

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Systemy operacyjne II

Jesień LinuksowaLinux - Real-Time w systemach wbudowanych

Transkrypt:

Mariusz Rudnicki mariusz.rudnicki@eti.pg.gda.pl PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.3

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 References: http://www.qnx.com/developers/docs/6.5.0sp1.update/index.html#com.qnx.doc.neutrino_sys_arch/kernel.html#scheduling 9/38

Szeregowanie algorytmy Algorytm karuzelowy ang. Round Robin: 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 > f CPU cp = 10 ms; 40 MHz f CPU cp = 1 ms. 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. References: http://www.qnx.com/developers/docs/6.5.0sp1.update/index.html#com.qnx.doc.neutrino_sys_arch/kernel.html#scheduling 10/38

Szeregowanie algorytmy Algorytm sporadyczny ang. Sporadic scheduling: 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 11/38

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ń. References: http://www.qnx.com/developers/docs/6.5.0sp1.update/index.html#com.qnx.doc.neutrino_sys_arch/kernel.html#scheduling 12/38

Szeregowanie algorytmy Algorytm FIFO ang. First In First Out: Wątek uruchomiony; Dobrowolnie zrzeka się kontroli; Zostaje wydziedziczony przez wątek o wyższym priorytecie. References: http://www.qnx.com/developers/docs/6.5.0sp1.update/index.html#com.qnx.doc.neutrino_sys_arch/kernel.html#scheduling 13/38

Szeregowanie algorytmy Adaptive partitioning: 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). 14/38

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 DoS attack w/o adaptive partitioning 19/38

Szeregowanie algorytmy Adaptacyjne partycje vs. Bezpieczeństwo Wiele systemów podatnych jest na ataki DoS ang. Denial of Service DoS attack with adaptive partitioning 20/38

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. Task 1 T1 = 50 ms, C1 = 25 ms. Task 2 T2 = 100 ms, C2 = 40 ms. Wykorzystanie procesora wyraża wzór U = C T 23/38

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 http://www.idt.mdh.se/utbildning/exjobb/files/tr1152.pdf 28/38

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 T i jest zdefiniowany jako P i = 1 D i gdzie D i 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