Systemy czasu rzeczywistego

Slides:



Advertisements
Podobne prezentacje
Zerowanie mikroprocesorów Cel: wprowadzenie mikroprocesora w określony stan początkowy Zwykle realizowany poprzez: inicjalizację licznika rozkazów (PC)
Advertisements

Podstawowe pojęcia programowania współbieżnego
SYSTEMY OPERACYJNE WSTĘP
Semafory Autorzy : Michał Winciorek Łukasz Jackowicz.
1 Linux jako system wielozadaniowy i wielodostępny.
System Operacyjny Zajęcia 4.
Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski.
Wykład nr 1: Wprowadzenie. Pojęcia podstawowe
Systemy operacyjne Wykład nr 4: Procesy Piotr Bilski.
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
Systemy operacyjne.
Systemy operacyjne Bibliografia:
Temat nr 10: System przerwań
Budowa systemów operacyjnych czasu rzeczywistego
Systemy czasu rzeczywistego Podstawowe pojęcia, cykl tworzenia oprogramowania W uproszczeniu system czasu rzeczywistego jest określany jako system komputerowy,
Projektowanie i programowanie obiektowe II - Wykład IV
ZARZĄDZANIE PROCESAMI
Język Java Wielowątkowość.
Programowanie współbieżne
1 Podstawy informatyki H. P. Janecki- 2006_ Systemy Operacyjne W6.
Wieloprocesowy system operacyjny dla komputerów ATARI XL/XE
PROF. DOMINIK SANKOWSKI
Heterogeniczne procesory wielordzeniowe w urządzeniach audio
Promotor: Dr inż. Grzegorz Wróbel
Komputer a system komputerowy
Podstawy programowania II
Konsole wirtualne, terminale.
Rozwój aplikacji przy wykorzystaniu ASP.NET
LabVIEW Technologie informacyjne – laboratorium Irmina Kwiatkowska
Opracowanie: Maria Wąsik
Wielozadaniowowść systemu operacyjnego Linux
Systemy operacyjne.
Zasada działania komputera
Budowa systemu komputerowego
Autor: Justyna Radomska
Budowa komputera.
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Automatyka i Robotyka Systemy czasu rzeczywistego Wykład 4.
Sieciowe Systemy Operacyjne
Budowa i rodzaje procesorów.
W jaki sposób użytkownik komunikuje się z komputerem?
Problem sekcji krytycznej
Przerwanie ang. interrupt.
Maszyna wirtualna ang. virtual machine, VM.
Buforowanie D e f i n i c j a.
Koncepcja procesu Zadanie i proces. Definicja procesu Process – to program w trakcie wykonywania; wykonanie procesu musi przebiegać w sposób sekwencyjny.
M i k r o j ą d r o D e f i n i c j a. M i k r o j ą d r o to rodzaj jądra systemu operacyjnego, które zawiera tylko najbardziej niezbędne elementy, takie.
POŚREDNIK Jak reprezentowana jest informacja w komputerze? liczby – komputer został wymyślony jako zaawansowane urządzenie służące do wykonywania.
Spis treści Architektura systemu windows Pamięć wirtualna Plik wymiany
Wykład 7 Synchronizacja procesów i wątków
W ą t e k (lekki proces) thread.
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Systemy rozproszone  Rozdzielenie obliczeń między wiele fizycznych procesorów.  Systemy luźno powiązane – każdy procesor ma lokalną pamięć; procesory.
Podstawy programowania
Procesor, pamięć, przerwania, WE/WY, …
System operacyjny Windows
Diagram czynności Diagram czynności (activity diagram) służy do modelowania dynamicznych aspektów systemu. Diagram czynności przedstawia sekwencyjne lub.
Struktura wewnętrzna mikrokontrolera zamkniętego
Procesy, wątki Program a proces Proces: Przestrzeń adresowa, kod, dane, stos (część pamięci do przechowania zmiennych lokalnych i niektórych adresów) Otwarte.
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
Podstawy programowania
Oprogramowaniem (software) nazywa się wszystkie informacje w postaci zestawu instrukcji i programów wykonywanych przez komputer oraz zintegrowanych danych.
Rodzaje systemów operacyjnych
Struktura systemu operacyjnego
Model warstwowy ISO-OSI
Powtórzenie Zadania systemu operacyjnego… Rodzaje i jednostki pamięci…
Systemy operacyjne - Budowa systemu komputerowego i jego zadania
Graficzny Interfejs Użytkownika
Wątki, programowanie współbieżne
Mikrokontrolery System przerwań
Zapis prezentacji:

Systemy czasu rzeczywistego Automatyka i Robotyka Systemy czasu rzeczywistego Wykład 1

Literatura Ułasiewicz J.: System czasu rzeczywistego QNX6 Neutrino, Wydawnictwo BTC 2008 Silberschatz A., Galvin P., Gagne G.: Podstawy systemów operacyjnych, WNT 2005 Ben-Ari M.: Podstawy programowania współbieżnego i rozproszonego, WNT 1996

System operacyjny- warstwa pomiędzy aplikacjami a sprzętem Funkcje systemu operacyjnego: Udostępnia i rozdziela czas (moc obliczeniową) procesora dla wielu aplikacji, Udostępnia mechanizmy do synchronizacji i komunikacji pomiędzy zadaniami, Obsługuje urządzenia peryferyjne, Zarządza zadaniami (procesami, wątkami), Zarządza pamięcią, Udostępnia system plików, Zarządza komunikacją i transmisją danych

3 główne elementy systemu operacyjnego Jądro systemu wykonujące zadania, Powłoka ang. shell - specjalny program umożliwiający komunikację użytkownika z systemem operacyjnym, System plików - sposób zapisu struktury danych na nośniku.

Jądro systemu składa się z: planisty czasu procesora - ustalającego które zadanie i jak długo będzie wykonywane, schedulera zadań, odpowiedzialnego za przełączanie pomiędzy uruchomionymi zadaniami, modułu zapewniającego synchronizację i komunikację pomiędzy zadaniami, modułu obsługi przerwań i zarządzania urządzeniami, modułu obsługi pamięci, zapewniającego przydział i ochronę pamięci

Podział systemów operacyjnych Podział ze względu na planowanie i przydział czasu procesora: system operacyjny czasu rzeczywistego (RTOS), systemy operacyjne czasowo niedeterministyczne. Podział ze względu na sposób realizacji przełączania zadań: systemy z wywłaszczaniem zadań, systemy bez wywłaszczania. Podział ze względu na przeznaczenie systemu: otwarte systemy operacyjne, wbudowane systemy operacyjne.\

Wielozadaniowość cecha systemu operacyjnego umożliwiająca pseudorównoczesne wykonywanie więcej niż jednego zadania. Wielozadaniowość realizowana jest na poziomie jądra systemu operacyjnego. Za przełączenia zadań odpowiedzialny jest planista oraz zarządca procesów.

Praca równoległa wielu zadań jest pozorna (przy założeniu, że mamy do dyspozycji tylko jeden procesor). Współdzielenie zasobów umożliwia jednoczesne uruchomienie kilku zadań – użytkownik ma wrażenie, że wszystkie zadania są wykonywane równolegle. Jednak zadania wykonywane są sekwencyjnie i ma to wpływ na czas realizacji poszczególnych zadań

Program pocztowy i przeglądarka internetowa mogą działać w tym samym czasie. W czasach DOS trzeba by zapisać i zamknąć arkusz kalkulacyjny przed otwarciem edytorze tekstu. Wraz z pojawieniem się systemu Windows, można uruchomić wiele aplikacji jednocześnie.

W Windows 3.x była zastosowana wielozadaniowość oparta na współpracy (cooperative multitasking), która polegała na założeniu, że wszystkie uruchomione procesy mogą w każdej chwili umożliwiać wykonanie innych procesów. Problemem było to, że nie wszyscy producenci oprogramowania przestrzegali tych zasad i program, który nie wrócił pod kontrolę systemu destabilizował system operacyjny, powodując najczęściej "zawieszenie". Np. jeśli Windows 3.x rozpoczął taką aplikację, przestawał ją kontrolować zakładając, że kontrola będzie szybko zwrócona do Windows - jeśli tak się nie stało, wszystkie inne uruchomione aplikacje w tym systemie operacyjnym nie wykonywały poleceń.

Obecnie Windows wykorzystuje (preemptive multitasking) wielozadaniowość z wywłaszczaniem. W tym modelu, zamiast programów, za powrót do kontroli systemu w regularnych odstępach czasu odpowiada system operacyjny. Jako główny wątek typowy program Windows wykonuje pętlę (tzw. pompa informacji). Pętla kontroluję kolejkę aby sprawdzić, czy jest coś do zrobienia, jeśli jest, to wykonuje zadanie.

Kliknięcie ikony programu powoduje dodanie zadania do kolejki i komunikat z informacją, która metoda powinna zostać zrealizowana. Jest to tzw. obsługa zdarzeń (event handler). Podczas wykonywania pętli obsługi zdarzeń, nie można przetwarzać dodatkowych informacji. Wielowątkowość (dokładniej - więcej niż jednego wątku) to metoda obejścia tego ograniczenia. Zamiast jednego głównego wątku, który ma wykonać czasochłonne prace, przydzielamy zadania oddzielnym wątkom

Program komputerowy jest obiektem pasywnym i nie jest procesem. Program można zdefiniować jako procedurę lub grupę procedur, które współpracują w celu wykonania zadania – napisany przez programistę. Procedury to pakiety instrukcji działających w celu utrzymania elementów i zazwyczaj zebrane są w biblioteki dynamiczne (DLL) lub pliku wykonywalnym (EXE) lub kombinacją obu.

Proces jest obiektem aktywnym, który korzysta z zasobów dostępnych w systemie i dla którego można wskazać następny rozkaz do wykonania poprzez określenie zawartości wskaźnika instrukcji (licznika rozkazów) procesora.

Proces to uruchomiony program, któremu umożliwiono dostęp do pamięci i zasobów Każdy proces przebiega stosunkowo niezależnie od innych procesów. Umieszczenie programów w procesach (przy użyciu tylko ograniczonej, uzgodnionej komunikacji między nimi) to zaleta - błąd w jednym procesie nie koliduje z innymi procesami.

Z punktu widzenia systemu operacyjnego każdy proces jest skojarzony z logiczną strukturą danych. Pamięć procesu, w której zmienne alokowane są zmienne jest całkowicie oddzielona od pamięci używanej przez inne procesy. Za zarządzanie procesami odpowiada jądro systemu operacyjnego.

Przykład Np. klient pocztowy nie może bezpośrednio przypisać nowej wartości zmiennej w programie przeglądarki internetowej. Program może komunikować się z przeglądarką internetową (np. otworzyć stronę internetową z linkiem otrzymanym w mailu) - ale jest to forma komunikacji, a nie dostęp do pamięci.

Zanim nastąpiły wielozadaniowe systemami operacyjnymi było znacznie bardziej prawdopodobne spowodowanie awarii systemu. Umieszczenie zadań w procesach i ograniczenie interakcji z innymi procesami i systemem operacyjnym, zwiększyło stabilność systemów

Wątek (thread) Proces może zawierać wiele wątków Elementarna jednostka pracy, zarządzana przez system operacyjny ubiegająca się o moc obliczeniową procesora. Procesy posiadają własne zasoby (stos, przydzieloną pamięć, otwarte deskryptory urządzeń I/O, pliki), Wątki współdzielą prawie wszystkie zasoby w ramach procesu (np. wspólna pamięć). Proces może zawierać wiele wątków

Alan Dennis porównuje proces do domu: zasoby wątki

The cat spends most of its time sleeping, but occasionally it wakes up and performs some action, such as eating. The house shares many characteristics with a process. It contains resources available to beings in it, such as a litter box. These resources are available to things within the house, but generally not to things outside the house. Things in the house are protected from things outside of the house. This level of isolation helps protect resources from misuse. One house can easily be differentiated from another by examining its address. Most important, houses contain things, such as furniture, litter boxes, and cats. Cats perform actions. A cat interacts with elements in its environment, like the house it lives in. A housecat generally has a name. This helps identify it from other cats that might share the same household. It has access to … the entire house depending on its owner’s permission. A thread’s access to elements may also be restricted based on permissions, in this case, the system’s security settings.

wątki mają dostęp i mogą przetworzyć wszystkie dane procesu. Podstawowa różnica między wątkiem a procesem: wątki mają dostęp i mogą przetworzyć wszystkie dane procesu. Tak więc, prosty dostęp do pamięci może wykonać zadanie ustalania zmiennej używanej w innym wątku. Każdy program ma co najmniej jeden wątek.

Wielowątkowość Wielowątkowość pozwala na nałożenie operacji wejścia/wyjścia (I/O) i obliczeń. Jeden wątek może wykonywać obliczenia podczas gdy inny wątek czeka na operację I / O, aby zakończyć. Wielowątkowość sprawia, że GUI (graficzny interfejs użytkownika) jest bardziej elastyczny. Wątku, który obsługuje zdarzenia GIU, takie jak kliknięcie myszką i naciśnięciu przycisku, może tworzyć dodatkowe wątki do wykonywania długotrwałych zadań w odpowiedzi na zdarzenia. Pozwala to wątkowi obsługi zdarzeń odpowiedzieć na więcej zdarzeń GUI (events).

Współbieżność Przy zwiększającej się liczbie rdzeni w procesorach wykorzystywanych w domowych komputerach, coraz większy nacisk kładzie się na współbieżność. Współbieżność to możliwość wykonywania przez program różnych zadań w tym samym czasie, np. nasz edytor tekstowy nasłuchuje czy nie przychodzą żadne pakiety z sieci a jednocześnie sprawdza naszą pisownię. Programowanie wielowątkowe pomaga uzyskać większą wydajność, jednak pojawiają się nowe wyzwania takie jak np. zakleszczanie czy sytuacje hazardowe.

Korzyści wynikające z zastosowania współbieżności 1. Polepszenie wykorzystania zasobów. Gdy jakiś proces czeka na niedostępny w danej chwili zasób, procesor może wykonywać inny proces. 2. Umożliwienie przetwarzania równoległego. Podział zadania na procesy umożliwia wykonywanie ich na oddzielnych maszynach. Prowadzi to do zrównoleglenia przetwarzania. 3. Ułatwienia projektowania i implementacji. Podział dużego zadania na wiele mniejszych komunikujących się procesów prowadzi do dekompozycji problemu, przez co ułatwia ich implementację, uruchamianie i testowanie

Jeszcze wrócimy do problematyki programowania współbieżnego Wielowątkowość może przyspieszyć działanie poprzez równoległości. Program, który w pełni wykorzystuje dwa procesory może być wykonany połowie czasu. Jednak ten poziom przyspieszenia zwykle nie może być uzyskany ze względu na to, że komunikacja wymaga koordynacji wątków. Jeszcze wrócimy do problematyki programowania współbieżnego

Cechy procesów Wykonanie procesu przebiega sekwencyjnie. Procesy mogą znajdować się w jednym z poniższych stanów: Działający, Czekający na zasoby systemu, Przeznaczony do zniszczenia, Proces „zombie”, wpis w tablicy procesów opisujący proces zakończony, ale którego zamknięcie nie zostało jeszcze obsłużone przez proces rodzica Proces w trakcie tworzenia.

wykonywany: są wykonywane instrukcje procesu oczekujący: proces czeka na wystąpienie zdarzenia nowy: proces został utworzony gotowy: proces czeka na przydzielenie procesora zakończony: proces zakończył wykonanie, przeznaczony do zniszczenia

Cykl życia procesów

Wątek Proces licznik rozkazów przestrzeń adresowa stos otwarte pliki, semafory rejestry procesora zmienne globalne lista wątków potomnych lista procesów potomnych

Aktywny proces może tworzyć nowe procesy lub wątki. Do zarządzania procesami system operacyjny udostępnia specjalne funkcje (API - Application Programming Interface) — interfejs programowania aplikacji , sposób, w jaki komunikuje się ona z systemem operacyjnym i innymi programami). Program w formacie wykonywalnym (binarnym) staje się procesem, jeśli system operacyjny załaduje go do pamięci operacyjnej oraz uruchomi. Proces składa się z działającego programu oraz struktury danych opisującego jego stan i wykorzystywane zasoby, Aktywny proces może tworzyć nowe procesy lub wątki.

System Zespół obiektów oddziałujących na siebie i współpracujących z otoczeniem System Otoczenie ?! sekretarka stuka, a komputer aktualnie zapisuje coś na dysk i nie pojawiają się literki

System operacyjny komputera umożliwia tworzenie i uruchamianie programów na tej samej maszynie Zwykle dla sterowania urządzeniami w czasie rzeczywistym stosuje się systemy wbudowane

System wbudowany (ang. embedded system) System wbudowany jest to system komputerowy będący częścią większego systemu i wykonujący istotną część jego funkcji. Przykładowo komputer pokładowy samolotu sterowanie układem hamulcowym samochodu sterowanie windą sterowanie obsługą funkcji telefonu komórkowego radia, telewizory, magnetowidy itp..

System skrośnego rozwoju oprogramowania Program jest tworzony, kompilowany na komputerze macierzystym (host) przy pomocy odpowiedniego środowiska (IDE) Przez łącze komunikacyjne przesyłany do wykonania na komputerze docelowym (target) – inny system operacyjny

Komputery dla zastosowań wbudowanych to: - od kontrolerów 8-bitowych dla prostych urządzeń - do superkomputerów wieloprocesorowych Wymagania: - odporność na warunki pracy - ciągłość pracy - oprogramowanie w pamięciach trwałych – nie dyskowych! - wsparcie dla niezawodności – kontrola pracy, diagnostyka, budzik (watchdog) zabezpieczający przed awarią (np. przeprowadza restart)

Rola czynnika czasu w pewnych systemach nie jest to istotne – tylko denerwujące  - (jak naszą sekretarkę) w systemach sterowania pojazdami (np. reakcja układu ABS na śliskie podłoże lub autopilota na zmianę ciśnienia atmosferycznego) – jest to ISTOTNE

SYSTEM CZASU RZECZYWISTEGO ang. real-time system RTS Prosta definicja: System komputerowy, w którym działania prowadzone równolegle z przebiegiem zewnętrznego procesu i mają na celu: nadzorowanie, sterowanie terminowe reagowanie na zachodzące w tym procesie zdarzenia

System czasu rzeczywistego system, którego wynik przetwarzania zależy nie tylko od jego logicznej poprawności, ale również od czasu osiągnięcia tego przetwarzania

Wymagane jest spełnienie !!!! Warunków logicznych – odpowiedź na zdarzenie przy uwzględnieniu stanu systemu musi być prawidłowa. Warunki czasowe – odpowiedź musi nadejść we właściwym czasie.

System czasu rzeczywistego współdziała z otoczeniem ZEGAR SYSTEM STERUJĄCY OBIEKTY OTOCZENIA czas stan obiektu sterowanie zdarzenia Jego zachowanie zależy od: - stanu obiektów otoczenia - zdarzeń generowanych przez obiekty - czasu

System sterujący (ang. Control system) System sterujący jest systemem komputerowym, którego zadaniem jest utrzymywanie nadzorowanego obiektu w pożądanym stanie. Terminowa reakcja na zdarzenia nadzorowanego systemu - system czasu rzeczywistego musi gwarantować, że czas odpowiedzi t na zdarzenie musi być mniejszy od ograniczenia czasowego Tmax. (ang. deadline)

Typy systemów RTS Rygorystyczny system czasu rzeczywistego (ang. Hard Real Time System) Łagodny system czasu rzeczywistego (ang. Soft Real Time System)

Rygorystyczne ograniczenie czasowe (ang Rygorystyczne ograniczenie czasowe (ang. Hard Deadline) to ograniczenie, które zawsze pozostaje spełnione. Jeśli choć raz zostało przekroczone uważa się, że nie zostało spełnione. Musi istnieć procedura walidacyjna pozwalająca na sprawdzenie czy warunek ten został spełniony. Rygorystyczny system czasu rzeczywistego to system, w którym wymaga się spełnienia rygorystycznych ograniczeń czasowych. elektrownia atomowa

Łagodne ograniczenie czasowe (ang Łagodne ograniczenie czasowe (ang. Soft Deadline) to takie ograniczenie czasowe, które czasami może być przekroczone Przykłady łagodnych systemów czasu rzeczywistego: · Multimedia · Sterowanie telefonem komórkowym · Centrala telefoniczna

inna definicja… Tolerancyjnym systemem czasu rzeczywistego jest system, którego działanie jest tylko gorsze, jeśli wyniki nie są dostępne zgodnie z ustalonymi wymaganiami czasowymi. Wymagający system czasu rzeczywistego to system, którego działanie jest niepoprawne, jeśli wyniki nie są tworzone zgodnie z ustalonymi wymaganiami czasowymi.

Czas reakcji systemu przedział czasu potrzebny systemowi operacyjnemu na wypracowanie decyzji (sygnału wyjściowego) w odpowiedzi na zewnętrzny bodziec (sygnał wejściowy) Czas ten może wahać się w granicach od ułamków sekund (np.:system pobrania akwizycji danych z kamery) do kilkudziesięciu godzin (np.: system w zbiorniku retencyjnym)

Wymagania dla systemów RTS Ciągłość działania – System RTS powinien pracować bez przerwy lub wtedy gdy się tego od niego wymaga Zależność od otoczenia – System musi reagować na zdarzenia i dane powstające w zewnętrznym systemie. Przewidywalność – zdarzenia generowane przez otoczenie pojawiają się w przypadkowych momentach czasu. Może dojść do ich spiętrzenia. Mimo to system musi reagować zgodnie z wymaganiami (deterministycznie). Punktualność – reakcja na zdarzenia winna następować zgodnie z wymaganiami czasowymi tzn. nie może nastąpić zbyt późno.

1. Musi umożliwiać wykonywanie procesów wielowątkowych. Szczegółowe wymagania na RTS 1. Musi umożliwiać wykonywanie procesów wielowątkowych. 2. Wątki muszą posiadać priorytety. 3. Musi być stosowana wywłaszczająca strategia szeregowania. 4. Musi wspierać mechanizm przewidywalnej synchronizacji wątków. 5. Musi istnieć dziedziczenie priorytetów. 6. System musi być deterministyczny (jednoznaczna reakcja - nie losowa). 7. Musi być pozbawiony błędów 8. Musi być dobrze udokumentowany.

Błędne opinie na temat systemów RTS NIEKONIECZNIE zastosowanie szybszego sprzętu umożliwi rozwiązanie problemów związanych z systemami czasu rzeczywistego - zastosowanie szybkiego procesora nie poprawia czasu odpowiedzi.. NIEKONIECZNIE system czasu rzeczywistego to system szybki –np. statek. RTS to potocznie wykonywanie szybkich obliczeń – NIE ZAWSZE PRAWDA Aplikacje RTS NIE MUSZĄ być programowane w asemblerze - tworzy się w językach wysokiego poziomu takich jak C, ADA. NIEKONIECZNIE system wbudowany jest systemem czasu rzeczywistego. Istnieją systemy wbudowane, które nie są systemami czasu rzeczywistego jak i nie wszystkie systemy czasu rzeczywistego są wbudowane.

Systemy RTS Solaris LynxOS VxWorks QNX Neutrino RT Linux RTEMS - free Windows CE – dla tabletów

Dlaczego Linux nie jest systemem czasu rzeczywistego Zastosowano algorytm szeregowania z podziałem czasu Niska rozdzielczość zegara systemowego Niewywłaszczalne jądro (nie dotyczy wersji >2.6) Wyłączanie obsługi przerwań w sekcjach krytycznych Zastosowanie pamięci wirtualnej Optymalizacja wykorzystania zasobów sprzętowych