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]

Podobne dokumenty