IPC: Semafory
Transkrypt
IPC: Semafory
IPC: Semafory Systemy Operacyjne 2 — laboratorium Mateusz Hołenko 4 grudnia 2011 Plan zajęć 1 Mechanizmy IPC kolejki komunikatów pamięć współdzielona semafory 2 Semafory synchronizacja rodzaje semaforów operacje semaforowe 3 Funkcje systemowe tworzenie zbiorów semaforów wykonanie operacji semaforowej zarządzenie semaforami 4 Zadania praktyczne Mateusz Hołenko IPC: Semafory [1/14] 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: Semafory [3/14] 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: Semafory [3/14] 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: Semafory [3/14] 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: Semafory [3/14] 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: Semafory [4/14] 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: Semafory [4/14] Semafory Semafory mechanizm kontroli dostępu do danych współdzielonych umożliwia synchronizację pracy wielu niezależnych procesów wykorzystywane do ochrony tzw. sekcji krytycznej Twórcą koncepcji semaforów był holender Edsger Dijkstra Mateusz Hołenko IPC: Semafory [6/14] Semafory mechanizm kontroli dostępu do danych współdzielonych umożliwia synchronizację pracy wielu niezależnych procesów wykorzystywane do ochrony tzw. sekcji krytycznej Twórcą koncepcji semaforów był holender Edsger Dijkstra Mateusz Hołenko IPC: Semafory [6/14] Semafory mechanizm kontroli dostępu do danych współdzielonych umożliwia synchronizację pracy wielu niezależnych procesów wykorzystywane do ochrony tzw. sekcji krytycznej Twórcą koncepcji semaforów był holender Edsger Dijkstra Mateusz Hołenko IPC: Semafory [6/14] Semafory mechanizm kontroli dostępu do danych współdzielonych umożliwia synchronizację pracy wielu niezależnych procesów wykorzystywane do ochrony tzw. sekcji krytycznej Twórcą koncepcji semaforów był holender Edsger Dijkstra Mateusz Hołenko IPC: Semafory [6/14] Operacje semaforowe na semaforze wykonać można dwie operacje: opuszczenie semafora (operacja P) podniesienie semafora (operacja V) operacje semaforowe wykonywane są atomowo wyróżnia się dwa rodzaje semaforów: semafor binarny semafor uogólniony Mateusz Hołenko IPC: Semafory [7/14] Operacje semaforowe na semaforze wykonać można dwie operacje: opuszczenie semafora (operacja P) podniesienie semafora (operacja V) operacje semaforowe wykonywane są atomowo wyróżnia się dwa rodzaje semaforów: semafor binarny semafor uogólniony Mateusz Hołenko IPC: Semafory [7/14] Operacje semaforowe na semaforze wykonać można dwie operacje: opuszczenie semafora (operacja P) podniesienie semafora (operacja V) operacje semaforowe wykonywane są atomowo wyróżnia się dwa rodzaje semaforów: semafor binarny semafor uogólniony Mateusz Hołenko IPC: Semafory [7/14] Definicja semafora Semafor jest pewną całkowitą liczbą nieujemną S. Opuszczenie semafora jest równoważne wykonaniu instrukcji: jeśli S > 0 to S = S − 1, w przeciwnym przypadku, wstrzymaj działanie procesu próbującego opuścić semafor Podniesienie semafora jest równoważne wykonaniu instrukcji: jeśli są procesy wstrzymane przy próbie opuszczenia semafora S to wznów jeden z nich, w przeciwnym przypadku S = S + 1 Mateusz Hołenko IPC: Semafory [8/14] Definicja semafora Semafor jest pewną całkowitą liczbą nieujemną S. Opuszczenie semafora jest równoważne wykonaniu instrukcji: jeśli S > 0 to S = S − 1, w przeciwnym przypadku, wstrzymaj działanie procesu próbującego opuścić semafor Podniesienie semafora jest równoważne wykonaniu instrukcji: jeśli są procesy wstrzymane przy próbie opuszczenia semafora S to wznów jeden z nich, w przeciwnym przypadku S = S + 1 Mateusz Hołenko IPC: Semafory [8/14] Definicja semafora Semafor jest pewną całkowitą liczbą nieujemną S. Opuszczenie semafora jest równoważne wykonaniu instrukcji: jeśli S > 0 to S = S − 1, w przeciwnym przypadku, wstrzymaj działanie procesu próbującego opuścić semafor Podniesienie semafora jest równoważne wykonaniu instrukcji: jeśli są procesy wstrzymane przy próbie opuszczenia semafora S to wznów jeden z nich, w przeciwnym przypadku S = S + 1 Mateusz Hołenko IPC: Semafory [8/14] Funkcje systemowe Tworzenie zbioru semaforów int semget(key_t key, int nsems, int semflg) key — klucz identyfikujący zbiór semaforów IPC_PRIVATE — kolejka prywatna nsems — liczba semaforów w tworzonym zbiorze semflg — prawa dostępu do semafora oraz flagi tworzenia semaforu 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: Semafory [10/14] Wykonanie operacji semaforowej int semop(int semid, struct sembuf *sops, unsigned nsops) struct sembuf { short sem_num; // numer semafora short sem_op; // wartość, która ma zostać dodana do semafora short sem_flg; // flagi operacji (IPC_NOWAIT, SEM_UNDO) } semid — identyfikator zbioru semaforów (uzyskany z funkcji semget) sops — adres tablicy struktur opisujących operacje semaforowe nsops — rozmiar tablicy sops Mateusz Hołenko IPC: Semafory [11/14] Zarządzanie semaforami int semctl(int semid, int semnum, int cmd, ...) union semun { int val; /* Value for SETVAL */ struct semid_ds *buf; /* Buffer for IPC_STAT, IPC_SET */ unsigned short *array; /* Array for GETALL, SETALL */ struct seminfo *__buf; /* Buffer for IPC_INFO (Linux-specific) */ }; semid — identyfikator zbioru semaforów (uzyskany z funkcji semget) semnum — numer semafora w zbiorze, na którym ma zostać wykonana operacja cmd — operacja do wykonania IPC_STAT, IPC_SET, IPC_RMID, SETVAL, GETVAL, SETALL, ... Mateusz Hołenko IPC: Semafory [12/14] Zadania praktyczne Zadania Zadanie 1 Napisać program tworzący 20 procesów inkrementujących wartość zmiennej całkowitej przechowywanej w pamięci współdzielonej. Dostęp do pamięci synchronizowany ma być za pomocą semaforów. Mateusz Hołenko IPC: Semafory [14/14]