IPC: Kolejki komunikatów

Podobne dokumenty
Mechanizmy z grupy IPC

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

Pamięć współdzielona

Mechanizmy z grupy IPC

Programowanie Współbieżne. Komunikacja między procesowa IPC

KOLEJKI KOMUNIKATÓW IPC

Shared memory and messages. Functions. process 0. process 1. program 0. program 0. data 0. data 1. program 1. data 0. data 1.

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

Kolejki FIFO (łącza nazwane)

Instytut Teleinformatyki

Opis protokołu RPC. Grzegorz Maj nr indeksu:

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

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

Klient-Serwer Komunikacja przy pomocy gniazd

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

Aplikacja Sieciowa wątki po stronie klienta

Semafory w systemie Unix

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

Funkcje jadra systemu operacyjnego UNIX

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

Funkcje jadra systemu operacyjnego UNIX

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

problemu producenta i konsumenta z ograniczonym buforem cyklicznym. Wszystkie funkcje dotyczace

Semafory, pamięć dzielona i kolejki komunikatów

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

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

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

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Procesy. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 9 października 2011

1. Kolejki komunikatów POSIX

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Pliki. Informacje ogólne. Obsługa plików w języku C

Temat zajęć: Mechanizmy IPC: semafory

2 Implementacja w systemie Linux 2.4

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Specyfikacja instalacji usługi SMS Premium w Przelewy24.pl

Kolejki komunikatów POSIX

Iteracyjny serwer TCP i aplikacja UDP

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

76.Struktura oprogramowania rozproszonego.

1. Procesy i współbieżność

Programowanie obiektowe. Dr hab. Inż. Marta Gładysiewicz-Kudrawiec Pokój 229 A1 Operatory new delete pliki-odczyt

Systemy Operacyjne 1 Laboratorium 3 Potoki i łącza nazwane w Linuksie (jeden tydzień) dr inż. Arkadiusz Chrobot

DYNAMICZNE PRZYDZIELANIE PAMIECI

Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi)

Specyfikacja protokołu zdalnych kolejek RQP Krzysztof Choromański 19 kwietnia, 2008

Przykłady interfejsu TCP i UDP w Javie

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

Lekcja 8, 9 i 10. Konspekt lekcji Poczta elektroniczna. Materiał z podręcznika: Rozdział 5. Poczta elektroniczna

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

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

Program 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje:

51. Metody komunikacji nieblokującej.

Tworzenie aplikacji rozproszonej w Sun RPC

System operacyjny MACH

5. Algorytm genetyczny przykład zastosowania

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

Programowanie w języku C++

Stałe i zmienne znakowe. Stała znakowa: znak

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

Pliki. Funkcje tworzące pliki i operujące na nich opisane są w części 2 pomocy systemowej. Tworzenie i otwieranie plików:

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

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1

Pliki. Informacje ogólne. Obsługa plików w języku C

Krótki kurs programowania współbieżnego (2)

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Języki i metodyka programowania. Wskaźniki i tablice.

Zadania z podstaw programowania obiektowego

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Programowanie w modelu przesyłania komunikatów specyfikacja MPI. Krzysztof Banaś Obliczenia równoległe 1

Zmienne i struktury dynamiczne

13. Kolejki komunikatów POSIX

Ćwiczenia podstawowe, zestaw 5, część 1

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Semafor ustaw_semafor(key_t nazwa, int start); Semafor usun_semafor(semafor sem); void signal(semafor sem); void wait(semafor sem);

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

TRX API opis funkcji interfejsu

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Pamięć dzielona i kolejki komunikatów

Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia

Działanie systemu operacyjnego

Stan globalny. Krzysztof Banaś Systemy rozproszone 1

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

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

Język C zajęcia nr 12. Struktury i unie

TCP - receive buffer (queue), send buffer (queue)

Stan procesu. gotowy - czeka na przydział procesora, zakończony - zakończył działanie.

E S - uniwersum struktury stosu

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Podstawy i języki programowania

1. Wprowadzanie danych z klawiatury funkcja scanf

Akademia Techniczno-Humanistyczna w Bielsku-Białej

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

Laboratorium z systemów operacyjnych. System plików - funkcje systemowe. Anna Wojak

Transkrypt:

IPC: Kolejki komunikatów Systemy Operacyjne 2 laboratorium Mateusz Hołenko 7 listopada 2011

Plan zajęć 1 Mechanizmy IPC kolejki komunikatów pamięć współdzielona semafory 2 Kolejki komunikatów kolejka komunikat 3 Funkcje systemowe tworzenie kolejki wysyłanie komunikatu odbiór komunikatu zarządzanie kolejką 4 Zadania praktyczne Mateusz Hołenko IPC: Kolejki komunikatów [1/16]

Mechanizmy IPC

IPC Inter Process Communication Grupa mechanizmów do komunikacji i synchronizacji procesów: 1 Kolejki komunikatów umożliwiają przekazywanie określonych porcji danych między procesami 2 Pamięć współdzielona umożliwia współdzielenie przez wiele procesów tego samego fragmentu wirtualnej przestrzeni adresowej 3 Semafory umożliwiają synchronizację procesów w dostępie do współdzielonych zasobów (np. pamięci współdzielonej) Mateusz Hołenko IPC: Kolejki komunikatów [3/16]

IPC Inter Process Communication Grupa mechanizmów do komunikacji i synchronizacji procesów: 1 Kolejki komunikatów umożliwiają przekazywanie określonych porcji danych między procesami 2 Pamięć współdzielona umożliwia współdzielenie przez wiele procesów tego samego fragmentu wirtualnej przestrzeni adresowej 3 Semafory umożliwiają synchronizację procesów w dostępie do współdzielonych zasobów (np. pamięci współdzielonej) Mateusz Hołenko IPC: Kolejki komunikatów [3/16]

IPC Inter Process Communication Grupa mechanizmów do komunikacji i synchronizacji procesów: 1 Kolejki komunikatów umożliwiają przekazywanie określonych porcji danych między procesami 2 Pamięć współdzielona umożliwia współdzielenie przez wiele procesów tego samego fragmentu wirtualnej przestrzeni adresowej 3 Semafory umożliwiają synchronizację procesów w dostępie do współdzielonych zasobów (np. pamięci współdzielonej) Mateusz Hołenko IPC: Kolejki komunikatów [3/16]

IPC Inter Process Communication Grupa mechanizmów do komunikacji i synchronizacji procesów: 1 Kolejki komunikatów umożliwiają przekazywanie określonych porcji danych między procesami 2 Pamięć współdzielona umożliwia współdzielenie przez wiele procesów tego samego fragmentu wirtualnej przestrzeni adresowej 3 Semafory umożliwiają synchronizację procesów w dostępie do współdzielonych zasobów (np. pamięci współdzielonej) Mateusz Hołenko IPC: Kolejki komunikatów [3/16]

Zarządzanie IPC polecenia systemowe z rodziny ipc: ipcs informacje o utworzonych zasobach IPC ipcmk tworzenie nowych zasobów IPC ipcrm usuwanie zasobów IPC funkcje systemowe o nich później Mateusz Hołenko IPC: Kolejki komunikatów [4/16]

Zarządzanie IPC polecenia systemowe z rodziny ipc: ipcs informacje o utworzonych zasobach IPC ipcmk tworzenie nowych zasobów IPC ipcrm usuwanie zasobów IPC funkcje systemowe o nich później Mateusz Hołenko IPC: Kolejki komunikatów [4/16]

Kolejki komunikatów

Kolejki komunikatów pozwalają na przesyłanie komunikatów między procesami komunikaty można wysyłać do kolejek nawet, jeśli brak jest zarejestrowanych odbiorców kolejka przechowuje komunikaty nawet po zakończeniu działania procesu nadawcy nieodebrane komunikaty są buforowane odebrany komunikat jest usuwany z kolejki każdy komunikat musi mieć określoną strukturę (długość) oraz zdefiniowany typ Mateusz Hołenko IPC: Kolejki komunikatów [6/16]

Kolejki komunikatów pozwalają na przesyłanie komunikatów między procesami komunikaty można wysyłać do kolejek nawet, jeśli brak jest zarejestrowanych odbiorców kolejka przechowuje komunikaty nawet po zakończeniu działania procesu nadawcy nieodebrane komunikaty są buforowane odebrany komunikat jest usuwany z kolejki każdy komunikat musi mieć określoną strukturę (długość) oraz zdefiniowany typ Mateusz Hołenko IPC: Kolejki komunikatów [6/16]

Kolejki komunikatów pozwalają na przesyłanie komunikatów między procesami komunikaty można wysyłać do kolejek nawet, jeśli brak jest zarejestrowanych odbiorców kolejka przechowuje komunikaty nawet po zakończeniu działania procesu nadawcy nieodebrane komunikaty są buforowane odebrany komunikat jest usuwany z kolejki każdy komunikat musi mieć określoną strukturę (długość) oraz zdefiniowany typ Mateusz Hołenko IPC: Kolejki komunikatów [6/16]

Kolejki komunikatów pozwalają na przesyłanie komunikatów między procesami komunikaty można wysyłać do kolejek nawet, jeśli brak jest zarejestrowanych odbiorców kolejka przechowuje komunikaty nawet po zakończeniu działania procesu nadawcy nieodebrane komunikaty są buforowane odebrany komunikat jest usuwany z kolejki każdy komunikat musi mieć określoną strukturę (długość) oraz zdefiniowany typ Mateusz Hołenko IPC: Kolejki komunikatów [6/16]

Kolejki komunikatów pozwalają na przesyłanie komunikatów między procesami komunikaty można wysyłać do kolejek nawet, jeśli brak jest zarejestrowanych odbiorców kolejka przechowuje komunikaty nawet po zakończeniu działania procesu nadawcy nieodebrane komunikaty są buforowane odebrany komunikat jest usuwany z kolejki każdy komunikat musi mieć określoną strukturę (długość) oraz zdefiniowany typ Mateusz Hołenko IPC: Kolejki komunikatów [6/16]

Kolejki komunikatów pozwalają na przesyłanie komunikatów między procesami komunikaty można wysyłać do kolejek nawet, jeśli brak jest zarejestrowanych odbiorców kolejka przechowuje komunikaty nawet po zakończeniu działania procesu nadawcy nieodebrane komunikaty są buforowane odebrany komunikat jest usuwany z kolejki każdy komunikat musi mieć określoną strukturę (długość) oraz zdefiniowany typ Mateusz Hołenko IPC: Kolejki komunikatów [6/16]

Komunikat ogólna struktura komunikatu struct msgbuf { long mtype; // typ komunikatu (wartość > 0) char mcontent[1024]; // treść komunikatu } przez rozmiar komunikatu rozumie się rozmiar pola mcontent treść komunikatu może być dowolną strukturą (niekoniecznie tablicą zmiennych typu char) pole mtype określa typ komunikatu; typ ten może zostać wykorzystany do selektywnego oczekiwania na wiadomości w kolejce Mateusz Hołenko IPC: Kolejki komunikatów [7/16]

Komunikat ogólna struktura komunikatu struct msgbuf { long mtype; // typ komunikatu (wartość > 0) char mcontent[1024]; // treść komunikatu } przez rozmiar komunikatu rozumie się rozmiar pola mcontent treść komunikatu może być dowolną strukturą (niekoniecznie tablicą zmiennych typu char) pole mtype określa typ komunikatu; typ ten może zostać wykorzystany do selektywnego oczekiwania na wiadomości w kolejce Mateusz Hołenko IPC: Kolejki komunikatów [7/16]

Komunikat ogólna struktura komunikatu struct msgbuf { long mtype; // typ komunikatu (wartość > 0) char mcontent[1024]; // treść komunikatu } przez rozmiar komunikatu rozumie się rozmiar pola mcontent treść komunikatu może być dowolną strukturą (niekoniecznie tablicą zmiennych typu char) pole mtype określa typ komunikatu; typ ten może zostać wykorzystany do selektywnego oczekiwania na wiadomości w kolejce Mateusz Hołenko IPC: Kolejki komunikatów [7/16]

Komunikat ogólna struktura komunikatu struct msgbuf { long mtype; // typ komunikatu (wartość > 0) char mcontent[1024]; // treść komunikatu } przez rozmiar komunikatu rozumie się rozmiar pola mcontent treść komunikatu może być dowolną strukturą (niekoniecznie tablicą zmiennych typu char) pole mtype określa typ komunikatu; typ ten może zostać wykorzystany do selektywnego oczekiwania na wiadomości w kolejce Mateusz Hołenko IPC: Kolejki komunikatów [7/16]

Funkcje systemowe

Tworzenie kolejki int msgget(key_t key, int msgflg) key klucz identyfikujący kolejkę IPC_PRIVATE kolejka prywatna msgflg prawa dostępu do kolejki oraz flagi tworzenia kolejki IPC_CREAT utwórz jeśli nie istnieje IPC_EXCL w połączeniu z IPC_CREAT, zgłoś błąd jeśli istnieje Mateusz Hołenko IPC: Kolejki komunikatów [9/16]

Wysyłanie komunikatu int msgsnd(int msgid, const void *msgp, size_t msgsz, int msgflg) msgid identyfikator kolejki (uzyskany z funkcji msgget) msgp wskaźnik na obszar pamięci zawierający treść komunikatu msgsz rozmiar treści komunikatu msgflg flagi obsługi kolejki IPC_NOWAIT nie czekaj na zwolnienie miejsca w kolejce Mateusz Hołenko IPC: Kolejki komunikatów [10/16]

Odbiór komunikatu int msgrcv(int msgid, void *msgp, size_t msgsz, long msgtyp, int msgflg) msgid identyfikator kolejki (uzyskany z funkcji msgget) msgp obszar pamięci, gdzie zapisany ma zostać komunikat msgsz maksymalny dopuszczalny rozmiar komunikatu msgtyp 0 pierwszy komunikat z kolejki > 0 komunikat o typie zgodnym z msgtyp < 0 komunikat o typie nie większym niż msgtyp msgflg flagi obsługi kolejki IPC_NOWAIT nie czekaj na wiadomość w kolejce MSG_EXCEPT wiadomość typu innego niż msgtyp MSG_NOERROR brak błędu przy przekroczeniu msgsz Mateusz Hołenko IPC: Kolejki komunikatów [11/16]

Zarządzanie kolejką int msgctl(int msgid, int cmd, struct msqid_ds *buf) msgid identyfikator kolejki (uzyskany z funkcji msgget) cmd operacja do wykonania IPC_STAT informacja o stanie kolejki komunikatów IPC_SET zmienia ograniczenia kolejki IPC_RMID usuwa kolejkę z sytemu buf parametry operacji Mateusz Hołenko IPC: Kolejki komunikatów [12/16]

Zadania praktyczne

Zadania Zadanie 1 Napisz program tworzący dwa procesy komunikujące się poprzez kolejkę komunikatów. Komunikacja polega na przesłaniu komunikatu Hello. Zadanie 2 Napisz program tworzący dwa procesy komunikujące się poprzez kolejkę komunikatów. Komunikacja polega na przesłaniu komunikatów różnego typu. Proces odbierający powinien odbierać tylko komunikaty typu podanego jako argument wejściowy (zakładamy że typ komunikatu jest liczbą z przedziału <1,10>). Mateusz Hołenko IPC: Kolejki komunikatów [14/16]

Zadania Zadanie 1 Napisz program tworzący dwa procesy komunikujące się poprzez kolejkę komunikatów. Komunikacja polega na przesłaniu komunikatu Hello. Zadanie 2 Napisz program tworzący dwa procesy komunikujące się poprzez kolejkę komunikatów. Komunikacja polega na przesłaniu komunikatów różnego typu. Proces odbierający powinien odbierać tylko komunikaty typu podanego jako argument wejściowy (zakładamy że typ komunikatu jest liczbą z przedziału <1,10>). Mateusz Hołenko IPC: Kolejki komunikatów [14/16]

Zadania Zadanie 3 Napisz programy klienta i serwera realizujące następujący scenariusz: Klient przesyła dowolny ciąg znaków do serwera, serwer w odpowiedzi odsyła ten sam ciąg po zamianie wszystkich małych liter na duże. Zadanie 4 Napisz programy klienta i serwera realizujące następujący scenariusz: Serwer sumuje liczby wysyłane przez klienta. Liczby są przesyłane jako komunikat typu M_DATA, a ostatnia z liczb jest wysyłana jako komunikat M_END. Po otrzymaniu tego komunikatu serwer odsyła wynik sumowania komunikatem typu M_RESULT. Mateusz Hołenko IPC: Kolejki komunikatów [15/16]

Zadania Zadanie 3 Napisz programy klienta i serwera realizujące następujący scenariusz: Klient przesyła dowolny ciąg znaków do serwera, serwer w odpowiedzi odsyła ten sam ciąg po zamianie wszystkich małych liter na duże. Zadanie 4 Napisz programy klienta i serwera realizujące następujący scenariusz: Serwer sumuje liczby wysyłane przez klienta. Liczby są przesyłane jako komunikat typu M_DATA, a ostatnia z liczb jest wysyłana jako komunikat M_END. Po otrzymaniu tego komunikatu serwer odsyła wynik sumowania komunikatem typu M_RESULT. Mateusz Hołenko IPC: Kolejki komunikatów [15/16]

Zadania Zadanie 5 Napisz program (programy) komunikujące się za pomocą kolejki komunikatów. Każdy z programów wysyła wiadomości wpisywane z klawiatury, a po odbiorze komunikatu z kolejki wypisuje jego treść na ekran. Operacje odczytu i zapisu powinny być wykonywane w sposób asynchroniczny. Program kończy się po otrzymaniu wiadomości o treści exit. Mateusz Hołenko IPC: Kolejki komunikatów [16/16]