Obraz (21)

Obraz (21)



102

Istnieją dwa polecenia na poziomie powłoka, które umożliwiają użycie urządzeń IPC. Pierwsze z nich, ipcs, drukuje informację o bieżącym stanie urządzeń EPC. Opcja -m dostarcza informacji o pamięci współdzielonej. Przykład użycia:

$ ipcs -m


Kolejne polecenie używane do usuwania z systemu pozostawionego segmentu pamięci (pod warunkiem, że użytkownik jest właścicielem urządzenia) to ipcrm:

$ ipcs -shm identyfikator segmentu


Współdzielone segmenty pamięci umożliwiają szybką, dwukierunkową komunikację między dowolną liczbą procesów. Niestety, system Linux nie gwarantuje wyłącznego dostępu, dlatego jeśli wiele procesów korzysta z danego współdzielonego segmentu, muszą uzgadniać użycie tego samego klucza.

9.4. Semafory

Semafory służą do synchronizacji procesów. Pozwalają na czasowe zabezpieczenie jakiegoś zasobu przed innymi procesami. Semafory procesów są alokowane, stosowane i dezalokowane tak samo jak współdzielone segmenty pamięci. Operacje semaforowe Linuxa są nastawione na pracę z zestawami semaforów, a nie z pojedynczymi obiektami. Funkcja semget służy do alokowania semaforów:

int semget(key_t key, int nsem, int permflags);


Ta Finkcja na podstawie klucza tworzy lub umożliwia nam dostęp do zbioru semaforów. Parametr key jest kluczem do zbioru semaforów. Jeżeli różne procesy chcą uzyskać dostęp do tego samego zbioru semaforów, muszą użyć tego samego klucza. Parametr nsem to liczba semaforów, która ma znajdować się w tworzonym zbiorze. Parametr permflags określa prawa dostępu do semaforów oraz sposób wykonania funkcji. Może przyjmować następujące wartości:

•    IPC_CREAT - uzyskanie dostępu do zbioru semaforów lub utworzenie nowego, gdy zbiór nie istnieje.

•    IPC_EXCL — w połączeniu z IPC_CREAT zwraca błąd, gdy zbiór już istnieje.

•    prawa dostępu-tak samo jak dla plików, np. 06 00.

Oczywiście, poszczególne flagi można łączyć ze sobą za pomocą sumy bitowej. Funkcja zwraca identyfikator zbioru semaforów lub -1, gdy wystąpił błąd (ustawiana jest zmienna errno).

Z każdym semaforem w zestawie związane są następujące wartości:

indeks 0

indeks 1

indeks 2

indeks 3

semid

semval

2

semval

4

semval

1

semval

3

nsem=4

•    semval - wartość semafora (zawsze dodatnia liczba całkowita). Musi być ustawiana za pomocą funkcji systemowej semafora - oznacza to, że semafor nie jest dostępny dla programu jako obiekt danych.

° sempid - identyfikator procesu, który ostatnio miał do czynienia z semaforem.

•    semncnt - liczba procesów, które czekają aż semafor osiągnie wartość większą niż jego wartość aktualna.

•    semzcnt - liczba procesów, które czekają aż semafor osiągnie wartość zerową.

Semafor zdefiniowany jest w następujący sposób:

union semnum {

int val;

struct semid_ds *buf; unsigned short int *array;

}


Zaraz po ich stworzeniu semafory należy zainicjować, aby uniknąć późniejszych błędów. Służy do tego funkcja semctl.

semctl(semid, sem_num, commmand, semun ctl_arg);



Wyszukiwarka

Podobne podstrony:
Obraz (21)(1) 1. Dokonać przeliczenia J - rvfIr-* w - — - — - -v. v—1 r r 1 l x t?:ł:?na to: Model
87146 Obraz5 (21) o Intensywności slly sprężającej przekazywanej na Jednostkę długości rury Produkc
Obraz (31)(1) -140. - 458- Działanie interferonu na poziomie molekularnym polepo na: I.   
Obraz (132) 22.    Kanban Metoda oparta na eliminacji zapasów buforowych umożliwiając
obraz5 (51) 102 E. E. Evans-Pritchard - Religia Nuerów Jednym z duchów, które są najlepiej znane w
Obraz9 (21) XXII ŻYCIE JANA LECHONIA ; Przewrót majowy w 1926 roku skamandryci przyjmują z gorącą a
158 na Działyóskiego 1752. Obok wsi istniały dawniej 2 folwarki. Pierwszy z nich obszaru ca 800 morg
RAPORT RPO na główne systemy" (s. 102) bądź wyższe funkcjonowanie poznawcze. Istnieją dwa rodza
obraz2 (21) aspektowi niektórych okaleczeń lub mąk inicjacyjnych. Nie zapominajmy, że zarówno na po

więcej podobnych podstron