Mechanizmy z grupy IPC

Podobne dokumenty
Mechanizmy z grupy IPC

IPC: Kolejki komunikatów

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

Pamięć współdzielona

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

KOLEJKI KOMUNIKATÓW IPC

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

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

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

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

Opis protokołu RPC. Grzegorz Maj nr indeksu:

Instytut Teleinformatyki

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

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

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

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

Semafory, pamięć dzielona i kolejki komunikatów

Temat zajęć: Mechanizmy IPC: semafory

Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej.

Funkcje jadra systemu operacyjnego UNIX

Funkcje jadra systemu operacyjnego UNIX

Kolejki FIFO (łącza nazwane)

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

Semafory w systemie Unix

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

Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi)

2 Implementacja w systemie Linux 2.4

Temat zajęć: Obsługa systemu plików.

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

Kolejki komunikatów POSIX

1. Kolejki komunikatów POSIX

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

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

Programowanie na poziomie sprzętu. Tryb chroniony cz. 1

Przesyłania danych przez protokół TCP/IP

Futex (Fast Userspace Mutex) Łukasz Białek

Rozdział ten zawiera informacje na temat zarządzania Modułem Modbus TCP oraz jego konfiguracji.

Programowanie przy użyciu gniazdek

Spis treści. 1 Moduł Modbus TCP 4

13. Kolejki komunikatów POSIX

Podstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

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

1 Moduł Modbus ASCII/RTU 3

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

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

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

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

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

Pomoc dla użytkowników systemu asix 6. Strategia buforowa

Programowanie równoległe w POSIX API. PRiR, wykład 3

asix5 Podręcznik użytkownika Strategia buforowa

1 Moduł Modbus ASCII/RTU

Klient-Serwer Komunikacja przy pomocy gniazd

1. Kolejki komunikatów POSIX

TCP/IP formaty ramek, datagramów, pakietów...

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

ROZPROSZONE SYSTEMY OPERACYJNE. Niezawodne usługi w rozwiązaniach SSI dokumentacja projektu. Karol Ostrowski 16 czerwca 2005

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

Kompilator języka C na procesor 8051 RC51 implementacja

Iteracyjny serwer TCP i aplikacja UDP

Pamięć dzielona i kolejki komunikatów

Temat zajęć: Obsługa łączy komunikacyjnych

Warstwy oprogramowania wejścia/wyjścia

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

Systemy operacyjne III

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

Podstawy programowania w języku C++

PROCESORY SYGNAŁOWE - LABORATORIUM. Ćwiczenie nr 03

Kamil Wróbel* Politechnika Lubelska, Instytut Informatyki, Nadbystrzycka 36B, Lublin, Polska

Mechanizmy stosowane w systemach operacyjnych - system dydaktyczny

dr inż. Jarosław Forenc

2x test: 25% projekt: 40% inne (zadania domowe, aktywno± ): 10% 51-60% dst 61-70% dst % db 81-90% db % bdb. 1 Zasady zaliczenia:

Uproszczony opis obsługi ruchu w węźle IP. Trasa routingu. Warunek:

Programowanie w ANSI C z wykorzystaniem funkcji jądra systemu UNIX/Linux

Programowanie Współbieżne

Gniazda surowe. Bartłomiej Świercz. Łódź,9maja2006. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Gniazda surowe

Hardware mikrokontrolera X51

Programowanie Równoległe Wykład 4. MPI - Message Passing Interface. Maciej Matyka Instytut Fizyki Teoretycznej

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

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

DODATEK A OPIS INTERFEJSU SIECIOWEGO FMP300

Sieci komputerowe Warstwa transportowa

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

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

Wykład 7 Podręczna pamięć buforowa (ang. buffer cache) w systemie Linuks. Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB

HP-1 parametry. Pobór prądu (przy zasilaniu 12V) Pobierana moc (przy zasilaniu 12V) 0,036W. Pomiar ciśnienia

4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD.

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

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

SOE Systemy Operacyjne Wykład 8 Pamięć wirtualna dr inż. Andrzej Wielgus

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

4. Komunikacja pomiędzy procesami przez łącza nienazwane i nazwane

Sieci komputerowe - Wstęp do intersieci, protokół IPv4

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

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

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

Systemy Operacyjne - Operacje na plikach

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

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

Transkrypt:

Mechanizmy z grupy IPC Podobnie jak łącza, IPC (Inter Process Communication) jest grupą mechanizmów komunikacji i synchronizacji procesów działających w ramach tego samego systemu operacyjnego. W skład pakiety wchodzą: kolejki komunikatów umożliwiają przekazywanie określonych porcji danych, pamięć współdzielona umożliwiają współdzielenie kilku procesom tego samego fragmentu wirtualnej przestrzeni adresowej, semafory umożliwiają synchronizacje procesów w dostępie do współdzielonych zasobów (np. do pamięci współdzielonej). Kolejki komunikatów Komunikat jest pakietem informacji przesyłanym pomiędzy różnymi procesami. Każdy komunikat ma określony typ i długość. Nadawca może wysyłać komunikaty, nawet wówczas gdy żaden z potencjalnych odbiorców nie jest gotów do ich odbioru. Komunikaty są w takich przypadkach buforowane w kolejce oczekiwania na odebranie. Odbiorca może oczekiwać na pierwszy przybyły komunikat lub na pierwszy komunikat określonego typu. Komunikaty w kolejce są przechowywane nawet po zakończeniu procesu nadawcy, tak długo, aż nie zostaną odebrane lub kolejka nie zostanie zlikwidowana. #include <sys / types.h> #include <sys / ipc.h> #include <sys / msg.h> Funkcja MSGGET PROTOTYPE: int msgget( key_t key, int msgflg ); RETURNS: success : identyfikator kolejki komunikatów errno =EACCES (kolejka skojarzona z wartością key, istnieje, ale proces wołający funkcję nie ma wystarczających praw dostępu do kolejki) EEXIST (kolejka skojarzona z wartością key istnieje i msgflg zawiera flagi IPC_CREAT i IPC_EXCL) EIDRM (kolejka została przeznaczona do usunięcia) ENOENT (kolejka skojarzona z wartością key nie istnieje,

zaś msgflg nie zawiera flagi IPC_CREAT) ENOMEM (brak pamięci na utworzenie nowej kolejki) ENOSPC (próba przekroczenia systemowego ograniczenia na ilość istniejących w systemie kolejek komunikatów ) 1. key- liczba, która identyfikuje kolejkę 2. msgflg jest sumą bitową stałej IPC_CREAT i dziewięciu bitów określających prawa dostępu do kolejki. IPC_PRIVATE nie jest flagą tylko szczególną wartością key_t. Jeśli wartość ta zostanie użyta jako parametr key, to system uwzględni jedynie bity uprawnień parametru msgflg i zawsze będzie próbować utworzyć nową kolejkę. Istnienie flag IPC_CREAT i IPC_EXCL w parametrze msgflg znaczy tyle samo, w przypadku kolejki komunikatów, co istnienie flag O_CREAT i O_EXCL w argumencie mode wywołania open, tzn. funkcja msgget nie wykona się prawidłowo jeśli msgflg będzie zawierać flagi IPC_CREAT i IPC_EXCL, zaś kolejka komunikatów skojarzona z kluczem key już będzie istnieć. Funkcja MSGSND PROTOTYPE: int msgsnd( int msgid, struct msgbuf *msgp, int msgs, int msgflg ); RETURNS:success : 0 errno =EACCES(kolejka skojarzona z wartością key, istnieje, ale proces wołający funkcję nie ma wystarczających praw dostępu do kolejki) EAGAIN(kolejka jest pełna, a flaga IPC_NOWAIT była ustawiona) EFAULT(niepoprawny wskaźnik msgp) EIDRM(kolejka została przeznaczona do usunięcia) EINTR(otrzymano sygnał podczas oczekiwania na operację zapisu) EINVAL(niepoprawny identyfikator kolejki, lub ujemny typ wiadomości, lub nieprawidłowy rozmiar wiadomości)

2. msgp wskaźnik do obszaru pamięci zawierającego treść komunikatu 3. msgs - rozmiar właściwej treści komunikatu 4. msgflg flagi specyfikujące zachowanie się funkcji w warunkach nietypowych Wartość ta może być ustawiona na 0 lub IPC_NOWAIT (jeśli kolejka komunikatów jest pełna wtedy wiadomość nie jest zapisywana do kolejki, a sterowanie wraca do procesu. Gdyby flaga nie była ustawiona, proces jest wstrzymywany tak długo, aż zapis wiadomości nie będzie możliwy) Jeśli w kolejce komunikatów nie ma miejsca proces jest blokowany. Ogólna struktura komunikatu wygląda następująco: struct msgbuf{ long mtype; // typ komunikatu (>0) char mtext[1]; // treść komunikatu } 1. Parametr msgs jest rozmiarem pola mtext, 2. Treść komunikatu może być dowolną strukturą 3. Pole mtype określa typ komunikatu, dzięki czemu możliwe jest przy odbiorze wybieranie z kolejki komunikatów określonego rodzaju. Typ komunikatu musi być wartością większą od 0. Funkcja MSGRCV PROTOTYPE: int msgrcv ( int msgid, struct msgbuf *msgp, int msgs, long msgtyp, int msgflg ) RETURNS:success : rozmiar odebranego komunikatu errno = analogicznie jak w funkcji msgsnd 2. msgp wskaźnik do obszaru pamięci zawierającego treść komunikatu 3. msgs - rozmiar właściwej treści komunikatu 4. msgtyp - typ komunikatu jaki ma być odebrany msgtyp >0 wybierany jest komunikat którego typ jest dokładnie taki jak msgtyp msgtyp <0 wybierany jest komunikat który ma najmniejszą wartość typu mniejszą lub równą bezwzględnej wartości z msgtype

msgtyp =0 typ komunikatu nie jest brany pod uwagę przy wyborze 5. msgflg flagi specyfikujące zachowanie się funkcji w warunkach nietypowych Wartość ta może być ustawiona na 0 lub MSG_NOERROR, to komunikat przekraczający rozmiar bufora jest ucinany przy odbiorze, w przeciwnym razie odbierane są tylko komunikaty, których treść jest mniejsza od msgs IPC_NOWAIT, jeśli w kolejce nie ma komunikatów, i ustawiona jest w ten sposób flaga, to zwracana jest wartość 1, w przeciwnym wypadku proces jest blokowany, aż do czasu pojawienia się komunikatu Odebranie komunikatu oznacza pobranie go z kolejki i raz odebrany komunikat nie może zostać odebrany ponownie. Funkcja MSGCTL PROTOTYPE: int msgctl( int msgid, int cmd, struct msgid_ds. *buf ); RETURNS:success : 0 errno = EACCES (nie ma praw do odczytu oraz cmd jest ustawiona na IPC_STAT) EFAULT (adres wskazywany przez buf jest nieprawidłowy) EIDRM (kolejka została usunięta) EINVAL (msgqid nieprawidłowe, lub msgsz mniejsze od 0) EPERM (komendy IPC_SET lub IPC_RMID zostały wydane podczas gdy process nie ma praw dostępu do zapisu) 2. cmd stała specyfikująca rodzaj operacji cmd = IPC_STAT pozwala uzyskać informację o stanie kolejki komunikatów cmd = IPC_SET pozwala zmienić związane z kolejką ograniczenia

cmd = IPC_RMID pozwala usunąć kolejkę z systemu ( msgctl(qid, IPC_RMID,0) 3. buf - wskaźnik na zmienną strukturalną przez którą przekazywane są parametry operacji Funkcja służy do zarządzania kolejką (np. usuwania kolejki, zmiany praw dostępu itp.)