SYSTEMY CZASU RZECZYWISTEGO - VxWorks



Podobne dokumenty
Systemy operacyjne III

Kolejki FIFO (łącza nazwane)

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

IPC: Kolejki komunikatów

Mechanizmy z grupy IPC

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

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

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

Zarządzanie procesorem

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

Temat zajęć: Tworzenie i obsługa wątków.

7. Szeregowanie procesów w systemie QNX6 Neutrino

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

1. Utwórz blok pamięci współdzielonej korzystając z poniższego kodu:

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

FreeRTOS w PSOC5LP. Do czego służy i jak zaimplementować FreeRTOS w układach Cypress PSoC 5LP. v. 1.2 Bogdan Pankiewicz, marzec 2016, 2017

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Kolejki komunikatów POSIX

1. Kolejki komunikatów POSIX

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1

KS-ZSA. Centralne zarządzanie znacznikami zamawiania towaru (BlackList)

Koordynacja procesów w środowisku rozproszonym

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

Synchronizacja procesów i wątków

Laboratorium 6: Tasklety i kolejki prac (jedne zajęcia) dr inż. Arkadiusz Chrobot

Struktury. Przykład W8_1

Procesy, wątki i zasoby

Dynamiczne struktury danych

13. Kolejki komunikatów POSIX

Systemy Czasu Rzeczywistego (SCR)

Wielozadaniowość w systemie Microsoft Windows

Director - instrukcja obsługi

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

Systemy wbudowane. Systemy operacyjne czasu rzeczywistego

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

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

Problemy współbieżności

Opis protokołu RPC. Grzegorz Maj nr indeksu:

Instytut Teleinformatyki

5. Algorytm genetyczny przykład zastosowania

Temat zajęć: Mechanizmy IPC: kolejki komunikatów.

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

Ingerencja w kod systemu operacyjnego (przerwania) Programowanie na niskim poziomie (instrukcje specjalne) Trudności implementacyjne (alg.

Wykład 5. Synchronizacja (część II) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Tryby komunikacji między procesami w standardzie Message Passing Interface. Piotr Stasiak Krzysztof Materla

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.

Planowanie przydziału procesora

Technika mikroprocesorowa. Systemy operacyjne czasu rzeczywistego

Simulator of Operating System

Planowanie przydziału procesora

Java Collections Framework

Prezentacja systemu RTLinux

Programowanie współbieżne Zadanie numer 3 Monitory

1. Kolejki komunikatów POSIX

Instrukcja ewidencji i sprawozdawania informacji o pierwszym wolnym terminie.

Programowanie współbieżne Wykład 5. Rafał Skinderowicz

Komunikacja za pomocą potoków. Tomasz Borzyszkowski

Planowanie przydziału procesora

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5

Systemy operacyjne III

Mechanizmy z grupy IPC

Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003

SYSTEMY OPERACYJNE PROCESORÓW SYGNAŁOWYCH

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

9. Problem wzajemnego wykluczania i sekcji krytycznej

BSD - alternatywa dla Linuksa

Przykłady implementacji planowania przydziału procesora

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

Gdy kilka procesów czyta a przynajmniej jeden dokonuje zapisu wynik odczytu zależeć może od sposobu realizacji przeplotu.

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

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

Systemy operacyjne. Zajęcia 11. Monitory

Monitory. Jarosław Kuchta

Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Podstawy Informatyki Układ przerwań

Program dla praktyki lekarskiej

synchronizacji procesów

MANUAL KOLEJKI OCZEKUJĄCYCH

w odróżnieniu od procesów współdzielą przestrzeń adresową mogą komunikować się za pomocą zmiennych globalnych

Systemy wbudowane. Wykład 4: Systemy operacyjne dla systemów wbudowanych. Obsługa przez przerwania. Z wywłaszczaniem zadań:

Lekcja 5. Funkcje handlemessage() i initialize(), konstruktor i destruktor

E S - uniwersum struktury stosu

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

Programowanie przy użyciu gniazdek

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

IG1: INSTALACJA KOMUNIKATORA GADU-GADU

7. Szeregowanie procesów w systemie QNX6 Neutrino

Zaawansowane programowanie w C++ (PCP)

Przychodnia 0. Stwórz projekt aplikacja konsolowa lub WPF (przemyśl wybór, bo zmiana może być czasochłonna). 1. Stwórz abstrakcyjną klasę Osoba.

Wątki w Android OS. Matt Rutkowski. GynSoft sp. z o.o. matt@gynsoft.net

Algorytm Lamporta. Czy można to ulepszyć?

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)

Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi)

Wykład 4. Klasa List Kolejki Stosy Słowniki

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

Terminarz rozgrywek Ekstraklasy w sezonie 2016/2017

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

W ramach zadania należy wykorzystać funkcje wirtualne. W programach testujących należy wykorzystać klasy stworzone w ramach pierwszego zadania.

10. Synchronizacja użycia zasobów, Semafory Problem producenta i konsumenta

Transkrypt:

WZAJEMNE WYKLUCZANIE Wiele metod. Np. wyłączanie przerwań: funkcja() //... Int blokada = intlock(); // Obszar krytyczny, któremu nie możemy przerwać intunlock(blokada); wyłączanie wywłaszczania: funkcja() tasklock(); // Obszar krytyczny, który nie może być wywłaszczony //... taskunlok(); 1//9

SEMAFORY VxWorks Binarne, wzajemnego wykluczania (mutex), całkowite (counting) Funkcje do ich obsługi: sembcreate() - tworzy i inicjalizuje semafor binarny semmcreate() - tworzy i incjalizuje semafor wzajemnego wykluczania semccreate()` - tworzy i inicjalizuje semafor całkowity semdelete() - usuwa semafor semtake() - pobiera semafor semgive() - oddaje semafor semflush - odblokowuje wszystkie zadania oczekujące na dany semafor #include VxWorks.h #include semlib.h SEM_ID semafor; // Utworzenie semafora zainicjowanie (dostępny), zadania w kolejce wstrzymanych // ustawione wg priorytetów semafor = sembcreate(sem_q_priority, SEM_FULL); 2//9

SEMAFORY VxWorks c.d. Przykład użycia semafora binarnego do wzajemnego wykluczania semtake(semafor, WAIT_FOREVER); // Obszar krytyczny tylko jedno zadanie może być w posiadaniu semafora // Zadanie będzie czekało do skutku na semafor semgive(semafor); Semafory binarne bywają używane do synchronizacji zadań (zdarzeń), W takim przypadku zwykle kreuje się semafor od razu pusty. Zadanie, które chce oczekiwać na zdarzenie jest wstrzymane aż do zwolnienia semafora przez zdarzenie 3//9

SEMAFORY VxWorks c.d. #include VxWorks.h #include semlib.h SEM_ID semafor; // Utworzenie semafora i zainicjowanie (pusty), // zadanie_x będzie czekało na zdarzenie zadanie_x (void) // Wstrzymanie zadania w oczekiwaniu na zdarzenie semtake(semafor, WAIT_FOREVER); ) //Przykładowa procedura obsługi przerwania, reprezentująca zdarzenie procedura_obslugi_przerwania(void) // Oddanie semafora, uwolnienie wstrzymanego zadania semgive(semafor); 4//9

SEMAFORY VxWorks c.d. Semafory VxWorks posiadają opcje (nie ujęte w standardach POSIX), przeterminowania kolejek (FIFO lub priorytetowych) KOLEJKI KOMUNIKATÓW msgqcreate () - utworzenie i zainicjowanie kolejki komunikatów msgqdelete - usunięcie kolejki komunikatów msgqsend () - wysłanie komunikatu do kolejki msgqrceive () - odebranie komunikatu z kolejki komunikatów Kreowanie definiuje liczbę maksymalną komunikatów i maksymalną długość komunikatu Jeśli żadne zadanie nie oczekuje na komunikat, to jest on dodawany do kolejki. Jeśli są zadania oczekujące na komunikat, to jest on dostarczony bezzwłocznie pierwszemu z nich 5//9

KOLEJKI KOMUNIKATÓW c.d.. Jeśli są zadania oczekujące na komunikat, to jest on dostarczony bezzwłocznie pierwszemu z nich. Jeśli komunikaty są w buforze, to pierwszy jest pobierany przez zadanie wywołujące. Jeśli nie ma komunikatu, to zadanie wywołujące jest blokowane i oddawane do kolejki zadań oczekujących na komunikaty. Kolejka zadań oczekujących na komunikaty może mieć kolejność wynikającą z priorytetów lub kolejność FIFO. (To określane jest na etapie tworzenia kolejki). Przeterminowanie Komunikaty pilne 6//9

KOLEJKI KOMUNIKATÓW c.d. Przykład użycia kolejek komunikatów #include VxWorks.h #include msgqlib.h #define MAX_MSGS (10) #define MAX_MSG_LEN (100) MSG_Q_ID kolejka_komunikatow; zadanie_2(void) char bufor_komunikatów[max_msg_len]; //Pobranie komunikatu z kolejki lub oczekiwanie na if(msgqreceive(kolejka_komunikatow, bufor_komunikatow, MAX_MSG_LEN, WAIT_FOREVER) == ERROR) return (ERROR); 7//9

KOLEJKI KOMUNIKATÓW c.d. #define MESSAGE Treść komunikatu zadanie_1(void) //Utworzenie kolejki komunikatów if((kolejka_komunikatow = msgqcreate(max_msgs, MAX_MSG_LEN, MSG_Q_PRIORITY)) == ERROR) return (ERROR); //Wysyłanie komunikatu o zwykłym priorytecie lub czekanie na miejsce w kolejce if(msgqsend (kolejka_komunikatow, MESSAGE, sizeof(message), WAIT_FOREVER, MSG_PRI_NORMAL) ERROR) return(error); //... Realizacja struktury klient serwer POTOKI KOMUNIKACJA SIECIOWA SYGNAŁY... (SZEREGOWANIE KARUZELOWE!!! ) 8//9

9//9