Kolejki komunikatów
Materiał do omówienia:
- działanie kolejek, rodzaje komunikatów, pojemność kolejki,
- tworzenie kolejek (msgget),
- wsyłanie komunikatów (msgsnd),
- odbieranie komunikatów (msgrcv),
- usuwanie kolejek (msgctl + IPC_RMID),
- podstawowe zasady higieny:
- pracujemy na stacjach lokalnych (jak się da),
- polecenie ipcs,
- każdy Leon zawodowiec sprząta po sobie.
Przykładowe programy:
Spakowane pliki są tutaj.
Ćwiczenia:
- Co się może stać gdy w powyższym przykładzie zostanie uruchomionych wielu klientów?
Zmień przykładowe progamy klinet i serwer
tak, żeby to było możliwe.
- Producent-konsument:
- na jednej kolejce i jednym typie komunikatów, zbadać ile produktów mieści
się w buforze systemowym,
- na dwóch procesach i dwóch kolejkach komunikatów (producent wkłada wyprodukowane
elementy do jednej z kolejek, a konsument wkłada do drugiej kolejki "opakowania
zwrotne"; producent ma na początku pewien zapas opakowań zwrotnych, a po
ich zużyciu może brać kolejne opakowania tylko z kolejki zwracanych opakowań),
- j.w., ale za pomocą jednej kolejki i różnych typów komunikatów,
- wariant "rozproszony": bufor jest odrębnym procesem/serverem, jedna kolejka
zleceń dla bufora z dwoma rodzajami komunikatów, zwrotna kolejka
(lub ew. dwie) na wyniki zlecanych operacji,
- Głuchy telefon. Należy utworzyć łańcuch n procesów połączonych kolejkami komunikatów,
dwa rodzaje komunikatów:
- wiadomość - string, w którym należy przekłamać jedną literkę i przesłać dalej,
- znacznik końca - usuń kolejkę, z której przyszedł, prześlij go dalej i zakończ się;
proces macierzysty przyjmuje od użytkownika wiadomości, a ostatni proces
w łańcuchu wypisuje rezultaty.
- Równoległe sortowanie bąbelkowe.
Podobnie jak w poprzednim zadaniu, powstaje łańcuch procesów przekazujących sobie ciąg sortowanych elementów.
Kżdy proces wykonuje jedną fazę przemieszczania "bąbelka".
Semafory
Materiał do omówienia:
- działanie semaforów, zestawy semaforów i semafory,
- tworzenie semaforów (semget),
- operacje na semaforach (semop),
- usuwanie semaforów (semctl + IPC_RMID),
- podstawowe zasady higieny:
- pracujemy na stacjach lokalnych (jak się da),
- polecenie ipcs,
- każdy Leon zawodowiec sprząta po sobie.
Przykładowe programy:
Spakowane pliki są tutaj.
Literatura