ezykach wysokiego poziomu (Dijkstra, 1965). semaphore semaphore S; Operacje na semaforze:

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

Mechanizmy z grupy IPC

Temat zajęć: Mechanizmy IPC: semafory

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

aodczytywać zniegoza pomoc afunkcjiread, (niebuforowane funkcje wejścia/wyjścia). e sukcesem, to zwróci liczb, erzeczywiściezapisanychbajtów.

Systemy Operacyjne Ćwiczenia

przypadków wywo lanie systemowe (funkcja systemowa) lub funkcja biblioteczna zwraca wartość 1(czasamiNULL) iprzypisujezmiennej zewn etrznej,

eć dzielona standardu POSIX

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

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

IPC: Kolejki komunikatów

Semafory. // G - globalna dla wszystkich. // Wada - aktywne oczekiwanie Test_and_Set(Li); exit when Li = 0; end loop sekcja_krytyczna(i); G := 0;

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

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

Równoleg le sortowanie przez scalanie

Funkcje. Piotr Zierhoffer. 7 października Institute of Computer Science Poznań University of Technology

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

Semafory. - aktywne oczekiwanie =GRGDWNRZ\PZVSDUFLHPVSU]WRZ\P 6SHFMDOQDLQVWUXNFMDPDV]\QRZDUHDOL]XMFDDWRPRZ\]DSLVL odczyt, np.

Mechanizmy z grupy IPC

Programowanie wspóªbie»ne

Pamięć współdzielona

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

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

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

4.2 Sposób korzystania z l acza

WYKŁAD 4 SEMAPHORES (CIĄG DALSZY) Przykład 6 Problem czytelników i pisarzy. Wykład 4 strona 1/24

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

Funkcje jadra systemu operacyjnego UNIX

Funkcje jadra systemu operacyjnego UNIX

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

Funkcje systemu Unix

Instytut Teleinformatyki

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

z powielaniem wielu struktur danych oraz komunikacja

Paradygmaty programowania. Paradygmaty programowania

Paradygmaty programowania. Paradygmaty programowania

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

Rozdzia l 3. Laboratorium 3. danych zawierajac

synchronizacji procesów

synchronizacji procesów

Laboratorium 3: Preprocesor i funkcje ze zmienną liczbą argumentów. mgr inż. Arkadiusz Chrobot

Programowanie wspóªbie»ne

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

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

Wykład 7 Abstrakcyjne typy danych słownik (lista symboli)

Metoda Simplex bez użycia tabel simplex 29 kwietnia 2010

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd

Wyk lad 9 Podpierścienie, elementy odwracalne, dzielniki zera

Semafory w systemie Unix

przerwany proces móg l zareagować na określone zdarzenie. Można je traktować jako software owe wersje przerwań sprz etowych.

2 Przygotował: mgr inż. Maciej Lasota

Pierwiastki arytmetyczne n a

Synchronizacja procesów i wątków

Systemy Operacyjne - Operacje na plikach

Futex (Fast Userspace Mutex) Łukasz Białek

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

Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ

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

KOLEJKI KOMUNIKATÓW IPC

SYSTEM DIAGNOSTYCZNY OPARTY NA LOGICE DOMNIEMAŃ. Ewa Madalińska. na podstawie prac:

Grupy i cia la, liczby zespolone

Paradygmaty programowania

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

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

WYK LAD 2: PODSTAWOWE STRUKTURY ALGEBRAICZNE, PIERWIASTKI WIELOMIANÓW, ROZK LAD FUNKCJI WYMIERNEJ NA U LAMKI PROSTE

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

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

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

Plan wyk ladu. Kodowanie informacji. Systemy addytywne. Definicja i klasyfikacja. Systemy liczbowe. prof. dr hab. inż.

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

SOP2 - semafory. grudzień

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

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

Wyk lad 3 Wyznaczniki

MATEMATYKA DYSKRETNA - wyk lad 1 dr inż Krzysztof Bryś. Wprowadzenie

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

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

Tablice i funkcje. Marcin Makowski. 26 listopada Zak lad Chemii Teoretycznej UJ

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

pami eć operacyjna przechowuje dane do przetworzenia, tymczasowe dane pomocnicze,

Wyk lad 5 W lasności wyznaczników. Macierz odwrotna

Języki i paradygmaty programowania

Synchronizacja procesów

Functionalization. Jeszcze o funkcjach i strukturze projektu. Marcin Makowski. 3 grudnia Zak lad Chemii Teoretycznej UJ

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

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

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Działanie systemu operacyjnego

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd

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

Wstęp do Programowania potok funkcyjny

Kolejki FIFO (łącza nazwane)

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

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

Podstawy programowania skrót z wykładów:

Opis podstawowych funkcji PC- SHELLa

Multiprocessor Shared-Memory Information Exchange. Damian Klata, Adam Bułak

Działanie systemu operacyjnego

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

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania

Transkrypt:

c Wies law P laczek 18 5 Semafory 5.1 Poj ecia ogólne Semafor pierwszymechanizmsynchronizacyjnywj ezykach wysokiego poziomu (Dijkstra 1965). semaphore semaphore S; Operacje na semaforze: abstrakcyjny typ danych; zmienna S jest semaforem. podniesienie (zwolnienie) semafora: V (hol. vrijmaken) opuszczenie (zaj ecie) semafora: P (hol. passeren). Poniżej podajemy tzw. definicje praktyczne postawowych rodzajów semaforów. (i) Semafor ogólny (licz acy) S zmienna ca lkowita nieujemna. P (S): jeśli S>0 to S := S 1 w przeciwnym razie wstrzymaj dzia lanie procesu wykonuj acego t eoperacj e. V (S): jeśli s aprocesywstrzymanewwynikuoperacjiopuszczaniasemaforas to wznów jeden z nich w przeciwnym razie S := S +1. (ii) Semafor binarny S =0/1 (false/true). Operacje: PB(S) VB(S). Uwaga: Semafor binarny nie pami eta liczby wykonanych operacji VB; czasem przyjmuje si e że VB(S =1)! b l ad! (iii) Semafor dwustronnie ograniczony 0 apple S apple N PD(S) VD(S) opuszczanie podnoszenie symetryczne tzn. VD(S = N) dzia lajakpd(s =0). (iv) Semafor uogólniony Zmiana S odowoln aliczb enaturaln a n. PG(S n): jeśli S n tos := S n wprzeciwnymraziewstrzymajdzia lanie procesu wykonuj acego t eoperacj e. VG(S n): jeśli s aprocesywstrzymanewwynikuwykonywaniaoperacjipg(s m) przy czym m apple S + n towznówjedenznichis := S m + n wprzeciwnym razie S := S +1.

c Wies law P laczek 19 PRZYK LAD: Wzajemne wykluczanie Zadanie zsynchronizowania procesów wymagaj acych wy l acznego dost epu do pewnego zasobu dzielonego (fragment procesu w którym korzysta on z zasobu dzielonego nazywa si e sekcj a krytyczn a tego procesu). binary semaphore S = 1; /* Semafor binarny do synchronizacji procesow */ /* Proces P_i */ do { /* Wlasne sprawy */ PB(S); /* Sekcja krytyczna */ VB(S); /* Reszta */ } while (1); 5.2 Semafory w Uniksie: System V 5.2.1 Podstawowe w lasności Operacje P i V typu: P (S n) iv (S n) tzn. semafor uogólniony. Operacja Z(S): Wstrzymanie dzia lania procesu do momentu aż S b edzie równe zeru. Wykonanie Z(S) nie zmienia wartości semafora. Jeśli S =0towznawianes a wszystkie procesy wstrzymane przez Z(S).! Jest to tzw. bariera mechanizmsynchronizacyjnystosowanycz esto dla w atków w procesorach graficznych (GPU). Nieblokuj ace operacje P i Z: np i nz Jeśli proces nie może natychmiast wykonać ż adanej operacji to rezygnuje z jej wykonania a odpowiednia funkcja sygnalizuje o porażce. Jednoczesne (wektorowe) operacje semaforowe: W Uniksie można wykonywać jednocześnie operacje na wielu semaforach przy czym każda z nich może być inna. a) Jeśli żadna z operacji nie jest operacj anieblokuj ac a to wykonanie operacji jednoczesnej zakończy si edopierowtedygdyb edzie można wykonać wszystkie operacje sk ladowe. b) Jeżeli chociaż jedn azoperacjisk ladowychjestoperacjanieblokuj aca (np lub nz) to ca la operacja jest również nieblokuj aca. Przy czym jeżeli chociaż jedna z operacji sk ladowych nie może być wykonana natychmiast to żadna z operacji nie jest wykonywana a odpowiednia funkcja sygnalizuje o porażce.

c Wies law P laczek 20! Zapis przyk lady: [V(S1)P(S23)Z(S3)] operacja blokuj aca [np(s1)z(s2)v(s32)] operacja nieblokuj aca Funkcje na semaforach: V alue(s) wartość semafora S; W aitp (S) liczba procesów czekaj acych pod semaforem S na wykonanie operacji P ; W aitz(s) liczba procesów czekaj acych pod semaforem S na wykonanie operacji Z. 5.2.2 Realizacja Wj ezyku C (C++) trzeba w l aczyć pliki nag lówkowe: #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h> 1. Zbiory semaforów W Uniksie można tworzyć zbiory semaforów. W każdym zbiorze semafory s aponumerowane kolejnymi liczbami ca lkowitymi nieujemnymi (tzn. 0 1...n). Operacje jednoczesne na kilku semaforach można wykonywać tylko na semaforach należ acych do tego samego zbioru. Do tworzenia lub odwo lywania si e do zbioru semaforów potrzebny jest tzw. klucz b ed acy liczb aca lkowit a. Jak tworzyć jednoznaczne klucze?! Np. przy pomocy funkcji ftok: Pliki w l aczane <sys/types.h> <sys/ipc.h> Prototyp key t ftok(const char *path int id); wartość Wartość klucza 1 Nie path ścieżkowanazwaistniej acego pliku dost epnego procesowi id zwyklepojedynczyznakktóryjednoznacznieidentyfikujeprojekt. Dzia lanie: Woparciuopath i id funkcja ftok zwraca ca lkowitoliczbowy klucz którymoże być użyty do tworzenia lub odwo lywania si edozbiorusemaforów. Np. key t key; key = ftok("." A );

c Wies law P laczek 21 Użyteczne komendy: ipcs -s podaje informacj ent.aktywnychsemaforów(patrzman ipcs); ipcs -sl podaje informacj ent.ograniczeńsystemowychdt.semaforów; ipcrm sem semid usuwa zbiór semaforów o numerze semid. 2. Tworzenie (uzyskiwanie dost epu do) zbioru semaforów: semget Pliki w l aczane <sys/types.h> <sys/ipc.h> <sys/sem.h> Prototyp int semget(key t key int nsems int semflg); wartość Identyfikator semafora 1 Tak key klucz do zbioru semaforów (różne procesy które chc akorzystaćztego samego zbioru musz aużyćtegosamegoklucza); nsems liczba semaforów w zbiorze; semflg flaga określaj aca sposób wykonania funkcji i prawa dost epu do semaforów: IPC CREAT utworzenie zbioru semaforów jeśli nie istnieje lub uzyskanie dost epu do istniej acego już zbioru IPC EXCL użyta w po l aczeniu z IPC CREAT zwraca b l ad jeżeli dla danego klucza istnieje już zbiór semaforów Prawa dost epu podobnie jak dla plików np. 0666: możliwość wykonywania wszystkich operacji przez wszystkie procesy (prawo czytania możliwośćodczytustanusemafora prawo pisania możliwość zmiany wartości semafora). Powyższe znaczniki można l aczyć ze sob a sum a bitow a np. IPC CREAT 0666. PRZYK LAD: key t key; int semid; key = ftok("." A ); semid = semget(key3ipc CREAT 0666)! Utworzenie zbioru 3 semaforów dla klucza key (lub uzyskanie dost epu do zbioru jeżeli takowy już istnieje) i przypisanie zmiennej semid identyfikatora tego zbioru. 3. Sterowanie semaforami: semctl semid identyfikator zbioru semaforów (zwracany przez semget) semnum numer semafora w zbiorze cmd kod polecenia arg parametry polecenia.

c Wies law P laczek 22 Pliki w l aczane Prototyp <sys/types.h> <sys/ipc.h> <sys/sem.h> int semctl(int semid int semnum int cmd /* union semun arg */...); wartość 0lubwartośćż adana przez cmd 1 Tak #ifdef _SEM_SEMUN_UNDEFINED union semun { int val; /* wartosc dla SETVAL */ struct semid_ds *buf; /* bufor dla IPC_STAT IPC_SET */ unsigned short *array; /* tablica dla GETALL SETALL */ struct seminfo * buf; /* bufor dla IPC_INFO (specyfika Linuksa) */ }; #endif Wstarszychwersjachbibliotekiglibc unia semun by la zdefiniowana w pliku nag lówkowym <sys/sem.h> alewnowych stosuj acych si edostandarduposix.1-2001 wymagana jest definicja tej unii przez użytkownika. Tam gdzie unia semun jest niedost epna zdefiniowane jest makro SEM SEMUN UNDEFINED. Dlategoprzydefiniowaniu tej unii w swoim programie dobrze jest zastosować dyrektyw epreprocesora jak w powyższym przyk ladzie. Polecenia cmd (ważniejsze): SETVAL zainicjowanie semafora o numerze semnum wartości aprzekazan aprzypomocy zmiennej arg.val SETALL zainicjowanie wszystkich semaforów w zbiorze wartościami przekazanymi przy pomocy tablicy arg.array GETVAL odczytanie wartości semafora o numerze semnum GETNCNT odczytanie liczby procesów czekaj acych na podniesienie semafora o numerze semnum (wstrzymanych przez P (S)) GETZCNT odczytanie liczby procesów czekaj acych na opuszczenie semafora o numerze semnum (wstrzymanych przez Z(S)) IPC RMID usuni ecie danego zbioru semaforów. 4. Operacje na semaforach: semop Pliki w l aczane <sys/types.h> <sys/ipc.h> <sys/sem.h> Prototyp int semop(int semid struct sembuf *sops size t nsops); wartość 0 1 Tak

c Wies law P laczek 23 semid identyfikator zbioru semaforów sops wskaźnik do tablicy struktur określaj acej operacje na zbiorze semaforów nsops liczba semaforów (elementów tablicy) na których ma być wykonana operacja. struct sembuf { ushort sem_num; /* numer semafora w zbiorze */ short sem_op; /* rodzaj operacji na semaforze */ ushort sem_flg; /* znacznik operacji */ }; Operacje: Znaczniki: 8 < > 0: operacja V(sem num sem op) sem op < 0: operacja P(sem num sem op) : =0: operacja Z(sem num). 0 : operacja blokuj aca sem flg = IPC NOWAIT : operacja nieblokuj aca. Powyższe znaczniki można l aczyć sum abitow azeznacznikiemsem UNDO. Jeżeli znacznik ten jest ustawiony to system utrzymuje dodatkowo dla procesu specjalny licznik undo wktórymzapami etywane s aoperacjewykonywaneprzeztenproces na danym semaforze. Daje to systemowi możliwość cofni ecia operacji semaforowych wykonanych przez proces który zakończy l si eniepowodzeniem. Mechanizmten pozwala unikać zakleszczeń powodowanych przez niew laściwe zakończenie procesu korzystaj acego z semaforów. Niektóre przyczyny porażki: (i) Przynajmniej jedna z operacji sk ladowych operacji wektorowej jest nieblokuj aca aoperacjiniemożnawykonaćnatychmiast. (ii) Operacja V (S) spowodowa labyprzekroczeniegórnegoograniczeniawartościsemafora. Wnowszychwersjachsystemówuniksowych(np.wLinuksieodwersjij adra 2.6) dost epne s asemaforydlaprocesówiw atków standardu POSIX. Maj aoneprostszyiwygodniejszy interfejs niż semafory Systemu V ale s aodnichmniejuniwersalneis labiej rozpowszechnione. Szczegó ly na ich temat można znaleźć w man sem overview.

c Wies law P laczek 24 ĆWICZENIE 6: Wzajemne Wykluczanie dla Procesów: Semafory Przy pomocy semaforów Systemu V UNIX zaimplementować zadanie wzajemnego wykluczania dla procesów. Czas operacji na wspólnym zasobie symulować używaj ac np. funkcji sleep. Dla demonstracji poprawności dzia lania programu użyć odpowiednich komunikatów wypisywanych przez poszczególne procesy przed w trakcie i po sekcji krytycznej oraz funkcji podaj acych stan semafora i liczb e procesów pod nim czekaj acych. Pami etać o zainicjowaniu semafora odpowiedni awartości a zaraz po jego utworzeniu. Stworzyć w lasn a bibliotek e prostych w użyciu funkcji do: tworzenia uzyskiwania dost epu inicjowania sterowania operowania i usuwania semaforów (korzystaj acych z odpowiednich funkcji systemowych ale ukrywaj acych ich szczegó ly techniczne). Napisać specjalny program do powielania procesów realizuj acych wzajemne wykluczanie w oparciu o funkcje fork i exec (nazw e programu do inicjowania procesów oraz liczb e procesów można przekazywać przez argumenty programu powielacza ). Program ten powinien na pocz atku utworzyć i zainicjować semafor a na końcu go usun ać (kiedy wszystkie jego procesy potomne zakończ aswojedzia lanie).