Laboratorium 10
===============
Semafory Unixowe
----------------
Literatura:
  * Rochkind
  * Projekt Linux
  * man do poszczegolnych funkcji z sem.h 


Omawiamy funkcje: semget, semop, semctl.

Nalezy zwrocic uwage, ze stosowane powszechnie okreslenie ,,zbior semaforow''
(ang. set of semaphores) jest nieodpowiednie -- lepiej: zestaw semaforow.


Przyklady programow korzystajacych z semaforow
----------------------------------------------

1. Kompilacja: wywolaj program `make'

2. Uzytkowanie: uruchamianie programow

3. Pliki:

err.c, err.h
	Obsluga bledow.

semun.h 
        Definicja unii semun, jesli system nie dostarcza tej definicji.
 
simple_sem.h, simple_sem.c
	Biblioteka oferujaca klasyczne operacje P i V na semaforach.
	Zostanie wykorzystana na zajeciach dotyczacych pamieci dzielonej.
	Uzywanie:
	- utworzenie / odszukanie id semafora o zadanym kluczu (sem_init)
	- zwolnienie zasobow zwiazanych z zamaforem o zadanym id (usuniecie go)
	  (sem_done)
	- "przejscie pod semaforem"; zmniejszenie wartosci semafora o 1 (P)
	- zwolnienie semafora; zwiekszenie wartosci semafora o 1 (V)

semget.c
	Program tworzy zestawy semaforow. Pyta o opcje otwierania semaforow.

semop.c
        Program wykonuje zwykle operacje na semaforach, a wiec przechodzenie
	pod semaforem, podnoszenie semafora, etc. Operacje moga byc
	wykonywane w zbiorach operacji.

semctl.c
	Program wykonuje operacje "administracyjne" na semaforach.

4. Uwaga. 
   Do najnowszych wersji systemu Linux wprowadzono zmiany 
   dotyczace unii semun. W poprzednich wersjach unia ta byla definiowana
   w pliku sys/sem.h. W nowszych wersjach te unie trzeba zdefiniowac samemu. 
   W niektorych wersjach (na przyklad na komputerach w labie) wywolujac 
   funkcje systemowa semctl mozna teraz pominac trzeci
   argument, jesli jest on niepotrzebny. Powoduje to jednak, ze 
   program nie da sie skompilowac w starszych systemach, dlatego 
   unikamy tego w programach przykladowych.
