SYSTEMY OPERACYJNE PROCESORÓW SYGNAŁOWYCH

Podobne dokumenty
Systemy operacyjne III

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe

Systemy wbudowane. Systemy operacyjne czasu rzeczywistego

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

Technika mikroprocesorowa. Systemy operacyjne czasu rzeczywistego

Mikroprocesor Operacje wejścia / wyjścia

Procesy, wątki i zasoby

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

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

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Prezentacja systemu RTLinux

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

PRZERWANIA. 1. Obsługa zdarzeń, odpytywanie i przerwania Obsługa zdarzeń jest jedną z kluczowych funkcji w prawie każdym systemie czasu rzeczywistego.

Działanie systemu operacyjnego

Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.1

4. Procesy pojęcia podstawowe

Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1

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

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

Języki i Techniki Programowania II. Wykład 7. Współbieżność 1

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Mechanizmy pracy równoległej. Jarosław Kuchta

Programowanie komputerów

Działanie systemu operacyjnego

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

Programowanie wielowątkowe. Tomasz Borzyszkowski

Hardware mikrokontrolera X51

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

1. Liczby i w zapisie zmiennoprzecinkowym przedstawia się następująco

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

Współbieżność w środowisku Java

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Systemy operacyjne. Paweł Pełczyński

Czujniki obiektowe Sterowniki przemysłowe

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

Programowanie współbieżne i rozproszone

Systemy operacyjne III

Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling)

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu

Programowanie równoległe i rozproszone. W1. Wielowątkowość. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Działanie systemu operacyjnego

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

Wykład 4. Synchronizacja procesów (i wątków) cześć I. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Organizacja typowego mikroprocesora

Bazy danych w sterowaniu

Jądro systemu operacyjnego

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

Język Java wątki (streszczenie)

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku.

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Podstawowe zagadnienia

Architektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt

Informatyka, systemy, sieci komputerowe

Procesy, zasoby i wątki

Procesy, zasoby i wątki

Procesy, zasoby i wątki

Zarządzanie procesami i wątkami

Programowanie współbieżne i równoległe. dr inż. Marcin Wilczewski 2013

LEKCJA TEMAT: Zasada działania komputera.

System komputerowy. System komputerowy

ξ II.UWr Wprowadzenie do STM

Programowanie współbieżne Wykład 10 Synchronizacja dostępu do współdzielonych zasobów. Iwona Kochańska

Zaawansowane programowanie w C++ (PCP)

5. Model komunikujących się procesów, komunikaty

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Proces y i y w i ąt ą ki

Logiczny model komputera i działanie procesora. Część 1.

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

SYSTEMY OPERACYJNE WYKLAD 6 - wątki

Aplikacje w Javie- wykład 11 Wątki-podstawy

Wprowadzenie do systemów operacyjnych

1.1 Definicja procesu

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Zaawansowany kurs języka Python

POSIX ang. Portable Operating System Interface for Unix

Architektura potokowa RISC

Działanie systemu operacyjnego

Podstawy techniki cyfrowej Układy wejścia-wyjścia. mgr inż. Bogdan Pietrzak ZSR CKP Świdwin

Architektura systemów komputerowych. dr Artur Bartoszewski

Systemy Czasu Rzeczywistego (SCR)

PRZERWANIA. P1 - Procedura obslugi przerwania. Obsługa zdarzenia Z1 poprzez procedurę obsługi przerwania P1

Architektura komputera

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

Program jest więc strukturą statyczną zapisaną na jakimś nośniku. Natomiast proces jest wykonującym się programem.

Metody obsługi zdarzeń

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Mechanizm przerwań i menadżer zdarzeń procesora sygnałowego F/C240

Architektura komputerów

Część I - Sterownik przerwań 8259A i zegar/licznik 8253

PROGRAMOWANIE SYSTEMÓW WBUDOWANYCH

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

dr inż. Jarosław Forenc

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

projektowanie systemu

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

Projekt i implementacja systemu obsługi kart chipowych

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu. Blok kontrolny procesu

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

Transkrypt:

Zastosowania procesorów sygnałowych SYSTEMY OPERACYJNE PROCESORÓW SYGNAŁOWYCH Opracowanie: Grzegorz Szwoch Politechnika Gdańska, Katedra Systemów Multimedialnych

Programowanie bez OS Proste programy na DSP nie potrzebują systemu operacyjnego. Program taki wykonuje po kolei zaplanowane operacje. Taki sposób programowania nazywa się bare metal - bezpośrednio na procesorze. Wada: jeżeli program oczekuje na dane, nie może wykonywać w tym czasie innych operacji. Dla bardziej złożonych programów jest to niewydajne: dostępny czas przetwarzania zamienia się na czas bezczynności.

Operacje wejścia/wyjścia Operacje wejścia/wyjścia (I/O): pobieranie danych wejściowych, wysyłanie wyników na wyjście. Powodują zawieszenie wykonywania programu czekanie na nadejście danych. Problematyczne gdy program pobiera dane z kilku wejść. Chcemy wykonywać obliczenia w czasie gdy czekamy na nowe dane. Rozwiązanie: podzielenie programu na wątki. Do zarządzania wątkami potrzebny jest system operacyjny. Na DSP, system operacyjny jest dostarczany przez producenta, jego kod jest łączony z programem.

Program i wątki Program samodzielna jednostka zawierająca operacje wykonywane na DSP. Jeden DSP (lub jeden rdzeń DSP) = jeden program. Wątek (thread) wyodrębniona część programu. W ramach programu może działać wiele wątków. Nazywamy to programowaniem wielowątkowym (multithtreading) lub współbieżnym (concurrency). Wątki rywalizują o dostęp do zasobów (resources), np. cykli procesora, buforów w pamięci. System operacyjny na DSP: nadrzędny wątek zarządzający działaniem innych wątków i ich dostępem do zasobów.

Przykład wątków Wątek 1 odczyt danych: odczytuje dane wejściowe, np. z czujnika przekazuje je wątkowi 2, zasypia, czekając na nowe dane Wątek 2 przetwarzanie: odbiera dane od wątku 1, wykonuje obliczenia i przekazuje wynik na wyjście, czeka na kolejne dane

Współbieżność a zrównoleglenie Często mylone pojęcia: Współbieżność (concurrency): wiele wątków jest uruchomionych, liczba wątków wykonujących operacje w danej chwili liczba dostępnych DSP / rdzeni DSP, jeden rdzeń DSP jeden wątek wykonuje operacje, reszta wątków jest uśpiona. Zrównoleglenie (parallelism): kilka wątków jednocześnie wykonuje operacje, wymaga wielordzeniowego DSP lub układu wielu DSP.

Typy wielozadaniowości Wielozadaniowość współpracująca (cooperative multitasking): wątek musi zawiesić swoje wykonywanie aby inny wątek mógł zacząć działać, stosowany w programach, w których programista ma pełną kontrolę nad działaniem wątków, czasami stosowane w systemach wbudowanych. Wielozadaniowość z wywłaszczaniem (preemptive multitasking): system operacyjny zarządza pracą wątków, każdy wątek może w dowolnym momencie zostać zatrzymany (wywłaszczony) na rzecz innego wątku, bardziej wydajny pod kątem wykorzystania zasobów, stosowany na PC i w większości programów na DSP.

Przełączanie kontekstu Kontekst (context) uruchomiony wątek i przydzielone mu zasoby. Przełączenie kontekstu (context switch) zawieszenie działania wątku i przekazanie zasobów innemu wątkowi. Priorytet (priority) liczba określająca hierarchię wątków. Przełączenie kontekstu następuje najczęściej w dwóch przypadkach: wątek zasypia (sleep), np. czekając na dane (dobrowolne oddanie zasobów), wątek o wyższym priorytecie niż aktualnie działający żąda dostępu do zasobów (wywłaszczenie wątku).

Konflikty dostępu do pamięci Rywalizacja wątków o dostęp do pamięci może powodować konflikty. Przykład: Wątek 1 (wyższy priorytet): (czeka) wznawia działanie zapisuje nowe dane do tablicy zawiesza działanie (czeka) Wątek 2 (niższy priorytet): odczytuje połowę tablicy w pamięci wywłaszczenie przez W1 (czeka) wznawia działanie odczytuje drugą połowę tablicy dane są błędne!

Muteks Muteks (mutex) obiekt pozwalający na wyłączny dostęp wątku do zasobu. Wątek, który chce uzyskać dostęp do zasobu, musi pobrać i zablokować muteks. Jeśli muteks jest zablokowany przez inny wątek, pierwszy wątek czeka lub wykonuje w tym czasie inne operacje. Muteks należy zwolnić po wykonaniu operacji. Sekcja krytyczna (critical section) fragment kodu zabezpieczony muteksem, który powinien być wykonany w całości przez jeden wątek. Stosowanie muteksów spowalnia program. Należy je stosować tam, gdzie są konieczne.

Muteks - przykład Wątek 1: blokuje Muteks odczytuje tablicę z pamięci zwalnia Muteks Wątek 2: czeka na Muteks blokuje Muteks zapisuje nowe dane do tablicy zwalnia Muteks

Semafor Semafor (semaphore) jest obiektem, który umożliwia dostęp wielu wątków do ograniczonej liczby zasobów. Semafor posiada licznik (counter). Pobranie semafora zmniejsza licznik o 1, zwolnienie zwiększa o 1. Nie można pobrać zasobu, gdy licznik jest równy 0. Przykład: jest 5 buforów w pamięci aktualny licznik: 1 (cztery bufory już pobrane), wątek 1 pobiera bufor, licznik: 0, wątek 2 nie może już pobrać bufora, musi poczekać na zwolnienie go przez inny wątek.

Kolejki Wątki potrzebują przekazywać dane między sobą. Kolejka (queue) jest strukturą do przekazywania danych między wątkami. Typowy schemat przetwarzania producent-konsument : jeden wątek ( producent ) generuje dane (np. pobiera z interfejsu) i wstawia je do kolejki, drugi wątek ( konsument ) wyjmuje dane z kolejki i przetwarza je. Kolejka jest zwykle chroniona wewnętrznym muteksem. Nie można wstawić danych gdy kolejka jest pełna.

Przykład kolejki Wątek 1 (producent): odczytuje dane z wejścia wstawia dane do kolejki czeka na nowe dane Wątek 2 (konsument): próbuje pobrać dane z k. gdy kolejka pusta czeka przetwarza pobrane dane

Optymalizacja kolejek Programista powinien zadbać o zrównoważenie czasu wykonywania wątków. Kolejka nie powinna być nigdy ani pełna, ani pusta. Jeżeli kolejka jest zapisywana częściej niż odczytywana: przepełnienie kolejki (overflow), dane mogą zostać utracone. Jeżeli jest odczytywana częściej niż zapisywana: efekt niedopełnienia (underrun) lub zagłodzenia wątku (starvation), marnowanie cykli procesora.

Zdarzenia Zdarzenie (event) jest sygnałem przesyłanym do innych wątków. Najczęściej komunikuje o dostępności nowych danych. Może mieć dwa stany: włączone lub wyłączone. Wątek może zasnąć i zostać automatycznie wybudzony gdy nadejdzie zdarzenie. Po odebraniu zdarzenia, wątek powinien je wyłączyć. Zdarzenie eliminuje konieczność cyklicznego sprawdzania czy są nowe dane.

Przerwania Przerwanie sprzętowe (hardware interrupt) jest sygnałem generowanym przez sprzęt, np. gdy pojawią się nowe dane na interfejsie. Obsłużenie przerwania przez wątek, który jest przypisany do przerwania; pobiera on dane z wejścia. Przerwania programowe (software interrupt) generowane przez programistę. Przerwania mają wyższy priorytet niż wątki, dlatego obsługa przerwania wywłaszcza inne wątki. Przerwania niemaskowalne nie mogą zostać wyłączone, np. sygnał RESET.

Zakleszczenie wątków Sytuacja, której należy bezwzględnie unikać: Wątek 1: blokuje Muteks A czeka na Muteks B Wątek 2: blokuje Muteks B czeka na Muteks A Oba wątki zostają zawieszone w oczekiwaniu na zasoby, których nie mają szansy uzyskać. Powstaje zakleszczenie wątków (deadlock). Zwykle prowadzi to do zawieszenia się programu.

Problemy programowania współbieżnego Mówi się, że programy wielowątkowe są niedeterministyczne, ponieważ ich działanie zależy od zależności czasowych pomiędzy wątkami, np. kiedy zostanie przełączony kontekst. Wyścig (race) do zasobów sukces w pobraniu zasobu zależy od tego, czy wątek zdąży przed innym wątkiem. Zakleszczenie może zdarzyć się np. raz na 20 uruchomień. Debugowanie programów wielowątkowych jest bardzo trudne. Programista musi minimalizować ryzyko wystąpienia konfliktowych sytuacji.

Systemy operacyjne na DSP Przykład procesory Texas Instruments System operacyjny czasu rzeczywistego, pod różnymi nazwami: DSP/BIOS, SYS/BIOS, TI-RTOS. Umożliwia uruchamianie wielowątkowych programów na jednym rdzeniu DSP. Zapewnia mechanizmy synchronizacji wątków. System jest łączony z kodem programisty w jeden program wykonywalny.

Terminologia Terminy stosowane przez DSP/BIOS i SYS/BIOS: Interrupt (przerwanie) wątek obsługi przerwania, Task (zadanie) wątek nie związany z przerwaniami, Idle loop wątek tła o najniższym priorytecie, uruchamiany tylko gdy wszystkie inne wątki są bezczynne, Semaphore semafor, Gate (bramka) muteks, Mailbox (skrzynka pocztowa) struktura do przekazywania komunikatów między wątkami, Queue kolejka dla danych, Memory section manager moduł zarządzania dynamicznie alokowaną pamięcią, Pipe (potok), stream (strumień) wymiana danych między interfejsami a pamięcią.

Przykład działania Wątki obsługi przerwań sprzętowych (hwi) i programowych (SWI) oraz wątki utworzone przez programistę (Tsk)

Systemy na procesorach hybrydowych Hybrydowe procesory DSP zawierają rdzenie ARM i DSP. Przykład: TI Keystone C66x+ARM. Przetwarzanie na takim procesorze odbywa się w trybie master-slave (zarządca i wykonawca). Na procesorze ARM jest uruchamiany system operacyjny: dedykowany dla procesora (np. TI-RTOS), lub Linux z jądrem czasu rzeczywistego (np. Yocto). Program na rdzeniu ARM: zarządca, kieruje dane do wykonawców, odbiera wyniki. Program na rdzeniach DSP: wykonawca, przetwarzanie danych. Do wymiany danych M-S służą kolejki.

Systemy na procesorach hybrydowych Przykład: przetwarzanie obrazu z kamery. Każdy rdzeń DSP dostaje swój kawałek obrazu. Keystone II DSP Slave DSP0 DSP7 kamera AXIS Keystone II ARM odtwarzacz RTSP MjpegReader Processor (Master) RtspServer

core0_queue master_queue_0 core1_queue master_queue_1 core2_queue master_queue_2 core3_queue master_queue_3 core4_queue master_queue_4 core5_queue master_queue_5 core6_queue master_queue_6 core7_queue SLAVE_DDR MASTER_DDR master_queue_7 Systemy na procesorach hybrydowych Wymiana danych między rdzeniami za pomocą kolejek: Keystone II DSP DSP0 DSP1 DSP2 DSP3 DSP4 DSP5 DSP6 DSP7 DDR_MEM_MGMT core_task core_task core_task core_task core_task core_task core_task core_task Memory Manager MjpegBuffer Processor Image Buffer Keystone II ARM

Podsumowanie Proste programy na DSP, takie jak na projekcie ZPS - programowanie bare metal wystarcza. Jeżeli program spędza zbyt dużo czasu czekając na dane i brakuje cykli do obliczeń potrzebny system operacyjny. Programowanie wielowątkowe jest trudniejsze niż klasyczne programy jednowątkowe wiele rzeczy może pójść źle. Należy dobrze przemyśleć podział zadań między wątki. System operacyjny wykonuje za nas zarządzanie wątkami. Procesory DSP+ARM dają potencjalnie większą wydajność i elastyczność, kosztem zwiększonego narzutu przetwarzania.