Systemy operacyjne: Różnice pomiędzy wersjami
m dodanie liczby godzin wykładu na każdy moduł |
|||
Linia 8: | Linia 8: | ||
== Sylabus == | == Sylabus == | ||
=== Autor === | === Autor === | ||
* Jerzy Brzeziński | * Jerzy Brzeziński, jerzy.brzezinski@cs.put.poznan.pl | ||
* Dariusz Wawrzyniak | * Dariusz Wawrzyniak, dariusz.wawrzyniak@cs.put.poznan.pl | ||
=== Wymagania wstępne === | === Wymagania wstępne === |
Wersja z 12:30, 20 cze 2006
Forma zajęć
wykład (30 godzin) + laboratorium (30 godzin)
Opis
Celem przedmiotu jest przedstawienie roli i zadań systemu operacyjnego w oprogramowaniu komputera oraz omówienie zagadnień realizacji — algorytmów, struktur danych i ich implementacji. Prezentowane są techniki zarządzania podstawowymi zasobami sprzętowymi komputera — procesorem, pamięcią operacyjną oraz wirtualną i urządzeniami wejścia-wyjścia — oraz ich wpływ na efektywność funkcjonowania systemu jako całości. W kontekście zarządzania zasobami wprowadzana jest również koncepcja procesu oraz wątku. Następnie omawiana jest koncepcja pliku oraz realizacja systemu plików — warstwy logicznej i fizycznej — wraz z przykładami konkretnych implementacji (CP/M, FAT-12/16/32, ISO 9660, Unix, NTFS). Osobnym zagadnieniem, integralnie związanym z realizacją systemu operacyjnego, jest współbieżności i synchronizacja w sensie koordynacji przepływu sterowania. W kontekście podstawowych problemów synchronizacji, takich jak wzajemne wykluczania oraz ograniczone buforowanie, omawiane są podejścia do synchronizacji procesów bazujące na współdzielonych zmiennych, podejścia wspierane przez system operacyjny — semafory, oraz podejścia wymagające wsparcia w konstrukcjach programowych języków wysokopoziomowych — monitory, regiony krytyczne i spotkania (ang. rendezvous). Następnie realizowane są zadania, polegające na zastosowaniu omawianych mechanizmów do rozwiązania klasycznych problemów synchronizacji (problem producenta-konsumenta, czytelników i pisarzy, pięciu filozofów, śpiących fryzjerów itp.). Omawiany jest również problem wynikający z dostępu współbieżnych procesów do zasobów — zakleszczenie oraz podejścia do rozwiązywania tego problemu.
Sylabus
Autor
- Jerzy Brzeziński, jerzy.brzezinski@cs.put.poznan.pl
- Dariusz Wawrzyniak, dariusz.wawrzyniak@cs.put.poznan.pl
Wymagania wstępne
- Wstęp do programowania
- Umiejętność programowania w języku C
- Elementarna wiedza z zakresu architektur komputerów
Zawartość
Wykład
- Rola i zadania systemu operacyjnego oraz jego umiejscowienie w strukturze oprogramowania systemu komputerowego
- Klasyfikacja systemów operacyjnych
- Ogólna zasada działania systemu operacyjnego — sposób przekazywania sterowania do programu jądra
- Koncepcja procesu i zasobu oraz ich opis i identyfikacja
- Zarządzanie procesorem — szeregowanie zadań
- Zarządzanie pamięcią operacyjną — podział pamięci, przydział, zjawisko fragmentacji, segmentacja i stronicowanie
- Realizacja pamięci wirtualnej — obsługa błędu strony, problem wymiany stron i wznawiania rozkazów, implementacja algorytmów wymiany
- Zarządzanie urządzeniami wejścia-wyjścia — podsystem wejścia-wyjścia, sposoby interakcji jednostki centralnej z urządzeniami wejścia-wyjścia, buforowanie i spooling
- Urządzenia dyskowe — funkcjonowanie i parametry dysku, algorytmy sterowania ruchem głowic, macierze dyskowe
- System plików — pojęcie pliku, jego struktury i typu, organizacja logiczna systemu plików, organizacja fizyczna systemu plików, przykłady implementacji
- Ochrona zasobów — domeny ochrony, macierz dostępów i jej implementacja
- Współbieżność — instrukcje atomowe, przeplot i istota synchronizacji
- Poprawność programów współbieżnych — bezpieczeństwo i żywotność
- Wzajemne wykluczanie — algorytmy Dekkera, Dijkstry, Petersona, Lamporta
- Instrukcje atomowe test&set oraz exchange
- Semafory — klasyfikacja i implementacja
- Monitory
- Regiony krytyczne
- Spotkania
- Zakleszczenie — warunki konieczne, zapobieganie, unikanie, detekcja i usuwanie.
Laboratorium
- Użytkowanie uniksopodobnego systemu operacyjnego: poruszanie się w systemie plików, obsługa plików i katalogów, obsługa procesów, potoki i filtry, skrypty powłoki
- Programowanie z wykorzystaniem funkcji jądra uniksopodobnego systemu operacyjnego: tworzenie i dostęp do plików, tworzenie i obsługa procesów, uruchamianie programów, wątki i ich synchronizacja, sygnały, komunikacja strumieniowa za pośrednictwem łączy, mechanizmy grupy IPC
Literatura
Wykład
- G. Nutt. Operating Systems. A Modern Perspective. wydanie 2, Addison Wesley Longman, Inc., 2002.
- W. Stallings. Systemy operacyjne. Robomatic, Wrocław, 2004.
- L. Bic, A. C. Shaw. The Logical Design of Operating Systems. Prentice-Hall, Inc, 1988.
- A. Silberschatz, J.L. Peterson, G. Gagne. Podstawy systemów operacyjnych. WNT, Warszawa, 2005.
- A. S. Tanenbaum. Modern Operating Systems. wydanie 2, Prentice-Hall, Inc, 2001.
- M. J. Bach. Budowa systemu operacyjnego Unix®. WNT, Warszawa, 1995.
- B. Goodheart, J. Cox. Sekrety magicznego ogrodu. UNIX® System V Wersja 4 od środka. WNT, Warszawa, 2001.
- U. Vahalia. Jądro systemu UNIX®. Nowe horyzonty. WNT, Warszawa, 2001.
- D. A. Solomon, M. E. Russinovich. Microsoft Windows® 2000 od środka. Helion, Gliwice, 2003.
- R. Lowe. Kernel Linux. Przewodnik programisty. Helion, Gliwice, 2004.
Laboratorium — użytkowanie
- C. Sobaniec. System operacyjny Linux — przewodnik użytkownika. Nakom, Poznań, 2002.
- J. Marczyński. UNIX użytkowanie i administrowanie. wydanie 2, Helion, Gliwice, 2000.
- P. Silvester. System operacyjny Unix™. WNT, Warszawa, 1990.
- Z. Królikowski, M. Sajkowski. UNIX dla początkujących i zaawansowanych. Nakom, Poznań, 1996.
Laboratorium — programowanie
- W. R. Stevens. Programowania w środowisku systemu UNIX. WNT, Warszawa, 2002.
- J. S. Gray. Komunikacja między procesami w Unixie. ReadMe, Warszawa, 1998.
- M. J. Rochkind. Programowanie w systemie Unix dla zaawansowanych. WNT, Warszawa, 1993.
- Z. Guźlewski, T. Weiss. Programowanie współbieżne i rozproszone w przykładach i zadaniach. WNT, Warszawa, 1993.
- R. W. Stevens. Programowanie zastosowań sieciowych w systemie Unix. WNT, Warszawa, 1995.
- M. Gabassi, B. Dupouy. Przetwarzanie rozproszone w systemie Unix. Lupus, Warszawa, 1995.
Moduły
Wykład
- Wstęp (2 godz.)
- Treść wykładu
- Definicja systemu operacyjnego
- Miejsce systemu operacyjnego w organizacji oprogramowania komputera
- Ogólna struktura systemu operacyjnego
- Zadania systemu operacyjnego
- Klasyfikacja systemów operacyjnych
- Zasada działania systemu operacyjnego
- Najważniejsze pojęcia i zagadnienia: wielowarstwowa organizacja oprogramowania komputera, system operacyjny (wsadowy, interaktywny, wielozadaniowy), jądro systemu operacyjnego, cykl rozkazowy, przerwanie (zewnętrzne, programowe, diagnostyczne), ochrona pamięci.
- Treść wykładu
- Procesy i zasoby (2 godz.)
- Treść wykładu
- Koncepcja procesu i zasobu
- Zarządca procesów i zarządca zasobu
- Struktury danych na potrzeby zarządzania procesami i zasobami
- Klasyfikacja zasobów
- Stany procesu i cykl zmian stanów
- Kolejki procesów
- Przełączanie kontesktu
- Planiści: krótkoterminowy, śrdednioterminowy i długoterminowy
- Wątki
- Użytkownicy
- Najważniejsze pojęcia i zagadnienia: proces, kontekst procesu, deskryptor procesu, zarządca procesów, stan procesu, kolejka procesów, planista, zasób (odzyskiwalny, nieodzyskiwalny, wywłaszczalny, niewywłaszczalny), deskryptor zasobu, zarządca zasobu, wątek, użytkownik (końcowy, programista, administrator).
- Treść wykładu
- Szeregowanie (3 godz.)
- Treść wykładu
- Ogólna koncepcja planowania przydziału procesora
- Komponenty jądra na potrzeby planowania przydziału procesora
- Planowanie wywłaszczające i niewywłaszczające
- Funkcja priorytetu i jej parametry
- Kryteria oceny algorytmów planowania przydziału procesora
- Przykłady algorytmów planowania przydziału procesora
- Implementacja algorytmów planowania
- Planowanie przydziału procesora w systemach Unix, Linux i Windows
- Najważniejsze pojęcia i zagadnienia: priorytet procesu, wywłaszczanie, planowanie priorytetowe, planowanie rotacyjne, wykorzystanie procesora, przepustowość, czas oczekiwania, czes reakcji, czas cyklu przetwarzania.
- Treść wykładu
- Zarządzanie pamięcią (2 godz.)
- Treść wykładu
- Pamięć a przestrzeń adresowa
- Obraz procesu w pamięci
- Problem ochrony i współdzielenia pamięci
- Podział i przydział pamięci
- Fragmentacja
- Stronicowanie i segmentacja
- Najważniejsze pojęcia i zagadnienia: hierachia pamięci, przestrzeń adresowa, adres logiczny i fizyczny, wiązanie adresu, transformacja adresu, fragmentacja pamięci (zewnętrzna i wewnętrzna), strona pamięci, segment pamięci.
- Treść wykładu
- Pamięć wirtualna (3 godz.)
- Treść wykładu
- Stronicowanie na żądanie
- Błąd strony i jego obsługa
- Problem zastępowania i wznawiania rozkazów
- Algorytmy wymiany i ich klasyfikacja
- Anomalia Belady'ego
- Problemy implementacji algorytmów wymiany
- Zarządzanie pamięcią w systemach Unix, Linux i Windows
- Najważniejsze pojęcia i zagadnienia: stronicowanie na żądanie, bit poprawności, błąd strony, wymiana stron, problem wznawiania rozkazów, bit modyfikacji, bit odniesienia, algorytm wymiany, zbiór roboczy, wstępne sprowadzanie, efektywność działania systemu pamięci wirtualnej.
- Treść wykładu
- Urządzenia wej-wyj (2 godz.)
- Treść wykładu
- Właściwości i klasyfikacja urządzeń wejścia-wyjścia
- Struktura mechanizmu wejścia-wyjścia
- Interakcja jednostki centralnej z urządzeniami wejścia-wyjścia
- odpytywanie
- sterowanie przerwaniami
- bezpośredni dostęp do pamięci
- Buforowanie, spooling i przechowywanie podręczne
- Wirtualne wejście-wyjście
- Najważniejsze pojęcia i zagadnienia: sterownik, moduł sterujący, odpytywanie, przerwania od urządzeń, bezpośredni dostęp do pamięci, buforowanie, spooling, przechowywanie podręczne.
- Treść wykładu
- Urządzenia składowania danych (1 godz.)
- Treść wykładu
- Urządzenia o dostępie sekwencyjnym i bezpośrednim
- Budowa i parametry dysku
- Czas dostępu do danych na dysku
- Metody (algorytmy) planowania dostępu do dysku
- Macierze dyskowe
- Najważniejsze pojęcia i zagadnienia: cylinder, ścieżka, sektor, pozycjonowanie, czas wyszukiwania, opóźnienie obrotowe, algorytm planowania (SSTF, SCAN, LOOK, N-step-SCAN, FSCAN), RAID, paskowanie
- Treść wykładu
- System plików (4 godz.)
- Treść wykładu
- Pojęcie pliku i jego atrybuty
- Atrybuty plik
- Logiczny i fizyczny obraz pliku
- Metody dostępu do pliku
- Podstawowe operacje na plikach
- Uniksowy interfejs dostępu do pliku
- Logiczna organizacja systemu plików
- Fizyczna organizacja systemu plików na dysku
- przydział miejsca na dysku
- zarządzanie wolną przestrzenią
- implementacja katalogu
- Przechowywanie podręczne w systemie plików
- Integralność systemu plików
- Semantyka spójności i synchronizacja współbieżnego dostępu do pliku
- Przykłady implementacji systemu plików (CP/M, FAT, ISO 9660, Unix, NTFS)
- Najważniejsze pojęcia i zagadnienia: plik, typ pliku, struktura pliku, dostęp sekwencyjny, dostęp bezpośredni, dostęp indeksowy, strefa, katalog, przydział ciągły, przydział listowy, przydział indeksowy, FAT.
- Treść wykładu
- Współbieżność (1 godz.)
- Treść wykładu
- Istota przetwarzania współbieżnego i synchronizacji
- Poprawność programów współbieżnych
- Klasyfikacja mechanizmów synchronizacji
- mechanizmy operate na zmiennych współdzielonych
- mechanizmy wspierane przez system operacyjny
- mechanizmy ze wsparciem językowym
- Główne problemy synchronizacji procesów (wzajemne wykluczanie, ograniczone buforowanie)
- Najważniejsze pojęcia i zagadnienia: instrukcja atomowa, przeplot, bezpieczeństwo, żywotność, uczciwość, wzajemne wykluczanie (sekcja krytyczna), ograniczone buforowanie.
- Treść wykładu
- Wzajemne wykluczanie (2 godz.)
- Treść wykładu
- Definicja problemu wzajemnego wykluczania (sekcji krytycznej)
- Schemat algorytmu wzajemnego wykluczania
- Klasyczne algorytmy wzajemnego wykluczania oparte o zapis/odczyt zmiennych współdzielonych
- algorytm Dekkera
- algorytm Dijkstry
- algorytm Petersona
- algorytm Lamporta
- Rozwiązanie problemu wzajemnego wykluczania w oparciu o instrukcje
test&set
orazexchange
- Najważniejsze pojęcia i zagadnienia: poprawność algorytmu wzajmnego wykluczania (bezpieczeństwo, postęp, ograniczone czekanie), aktywne czekanie, wsparcie sprzętowe w rozwiązaniu problemu wzajemnego wykluczania.
- Treść wykładu
- Mechanizmy synchronizacji wspierane przez system operacyjny (2 godz.)
- Treść wykładu
- Definicja i klasyfikacja semaforów
- Implementacja semaforów
- Zastosowanie semaforów do rozwiązania głównych problemów synchronizacji procesów
- Mechanizmy synchronizacji wątków standardu POSIX
- zamki (rygle, ang. locks, mutex locks)
- zmienne warunkowe (ang. conditionals)
- Zastosowanie mechanizmów POSIX do rozwiązania głównych problemów synchronizacji procesów
- Najważniejsze pojęcia i zagadnienia: semafor ogólny, semafor binarny, podnoszenie i opuszczanie semafora, zamek, zmienna warunkowa.
- Treść wykładu
- Mechanizmy synchronizacji ze wsparciem językowym (1 godz.)
- Treść wykładu
- Monitory (definicja i zasada działania)
- Zastosowanie monitorów do rozwiązania problemu ograniczonego buforowania
- Regiony krytyczne
- Zastosowanie regionów krytycznych do rozwiązania problemu ograniczonego buforowania
- Klasyczne problemy synchronizacji procesów
- problem czytelników i pisarzy
- problem pięciu filozofów
- problem śpiących fryzjerów
- Najważniejsze pojęcia i zagadnienia: monitor, zmienna warunkowa w monitorze, region krytyczny, warunkowy region krytyczny.
- Treść wykładu
- Zakleszczenie (4 godz.)
- Treść wykładu
- Definicja problemu zakleszczenia
- Warunki konieczne wystąpienia zakleszczenia
- Graf przydziału zasobów
- Rozwiązywanie problemu zakleszczenia
- zapobieganie zakleszczeniom
- unikanie zkleszczeń
- detekcja i likwidacja zakleszczeń
- Podejście hybrydowe do rozwiązywania problemu zakleszczenia
- Najważniejsze pojęcia i zagadnienia: stan osiągalny, zablokowanie procesu, warunki konieczne wystąpienia zakleszczenia, zapobieganie zakleszczeniom, unikanie zakleszczeń, algorytm Bankiera, graf oczekiwania, likwidacja zakleszczenia (usuwanie procesów, wywłaszczanie zasobów)
- Treść wykładu
- Ochrona zasobów (1 godz.)
- Treść wykładu
- Cel ochrony
- Polityka i mechanizm
- Domenty ochrony
- Macierz dostępu
- Implementacja macierzy dostępu
- Najważniejsze pojęcia i zagadnienia: polityka ochrony, mechanizm ochrony, prawo dostępu, domena ochrony, macierz dostępu, przenoszenie praw dostępu, prawo własności, prawo kontroli, lista kontroli dostępów (ang. access kontrol list), lista uprawnień (capability list), mechanizm zamka i klucza.
- Treść wykładu
Laboratorium
Użytkowanie uniksopodobnego systemu operacyjnego (Linux)
- Wstęp oraz obsługa plików i katalogów (3 godz.)
- Treść zajęć laboratoryjnych
- Logowanie do systemu
- Pomoc systemowa – polecenie
man
- Programy pomocnicze -- polecenia
whatis
,whereis
,apropos
- Znaki specjalne
- Struktura katalogów w systemie
- Przemieszczanie się po strukturze katalogów – polecenia:
pwd
,ls
,cd
- Tworzenie, usuwanie, zmiana nazwy plików – polecenia
touch
,rm
,mv
,cp
- Tworzenie, usuwanie, zmiana nazwy katalogów – polecenia
mkdir
,rmdir
- Wyszukiwanie plików – polecenia
locate
,find
- Dowiązania – polecenie
ln
- Opanowane umiejętności: logowanie, korzystanie z pomocy systemowej, poruszanie się w systemie plików, kopiowanie, usuwanie i przesuwanie plików, tworzenie i usuwanie katalogów, przeszukiwanie systemu plików.
- Treść zajęć laboratoryjnych
- Obsługa procesów w systemie (1 godz.)
- Treść zajęć laboratoryjnych
- Identyfikatory procesów w systemie operacyjnym
- Lista procesów w systemie – polecenie
ps
- Hierarchia procesów w systemie – polecenie
pstree
- Wyszukiwanie procesów – polecenie
pgrep
- Priorytety procesów – polecenia
nice
,renice
- Uruchamianie procesów w tle – znak
&
i poleceniafg
,bg
- Sygnały i ich obsługa
- Opanowane umiejętności: wyszukiwanie i identyfikacja procesów, usuwanie (zabijanie) procesów, zmiana priorytetu, uruchamianie procesów pierwszo- i drugoplanowych.
- Treść zajęć laboratoryjnych
- Filtry, strumienie standardowe oraz przetwarzanie potokowe (4 godz.)
- Treść zajęć laboratoryjnych
- Strumienie standardowe i ich przekierowywanie
- Podstawowe filtry – polecenia
cat
,head
,tail
,grep
,wc
,tr
,cut
,sort
,uniq
- Przetwarzanie potokowe z zastosowaniem filtrów systemowych
- Opanowane umiejętności: uruchamianie procesów z przekierowaniem wejścia lub wyjścia do pliku, łączenie procesów w potoki, zastosowanie podstawowych filtrów
- Treść zajęć laboratoryjnych
- Tworzenie skryptów powłoki systemu operacyjnego (4 godz.)
- Treść zajęć laboratoryjnych
- Zmienne środowiskowe oraz ich eksportowanie – polecenia
set
,env
,echo
,export
- Argumenty wywołania skryptów
- Instrukcja warunkowa
- Pętle
while
orazfor
- Pobieranie wartości w trakcie wykonywania skryptów
- Uruchamianie skryptów z debugowaniem
- Zmienne środowiskowe oraz ich eksportowanie – polecenia
- Opanowane umiejętności: tworzenie skryptów w języku powłoki, urchamianie skryptów, przekazywanie i obsługa parametrów.
- Treść zajęć laboratoryjnych
Programowanie w języku C z wykorzystaniem funkcji jądra uniksopodobnego systemu operacyjnego (Linux)
- Obsługa systemu plików (2 godz.)
- Treść zajęć laboratoryjnych
- Otwieranie plików i ich deskryptory – funkcja
open
- Tworzenie plików
- Odczyt i zapis do plików – funkcje
read
,write
- Implementacja przykładowych programów obsługi plików
- Otwieranie plików i ich deskryptory – funkcja
- Opanowane umiejętności: tworzenie plików oraz dostęp do zawartości plików.
- Treść zajęć laboratoryjnych
- Obsługa procesów w systemie (2 godz.)
- Treść zajęć laboratoryjnych
- Procesy macierzyste i potomne
- Tworzenie procesów potomnych – funkcja
fork
,wait
- Uruchamianie programów – funkcje
exec
- Przekierowywanie strumieni standardowych
- Implementacja przykładowych programów obsługi procesów
- Opanowane umiejętności: tworzenie procesów, urchamianie programów w procesach oraz przekierowanie wyników standardowych programów uniksowych do pliku.
- Treść zajęć laboratoryjnych
- Obsługa potoków (4 godz.)
- Treść zajęć laboratoryjnych
- Tworzenie potoków nienazwanych – funkcja
pipe
- Tworzenie potoków nienazwanych – funkcja
mkfifo
- oraz ich otwieranie - Przykłady przetwarzania potokowego
- Implementacja przykładowych programów obsługi potoków
- Tworzenie potoków nienazwanych – funkcja
- Opanowane umiejętności: realizacja komunikacji potokowej (strumieniowej) między lokalnymi procesami.
- Treść zajęć laboratoryjnych
- Tworzenie i obsługa wątków (4 godz.)
- Treść zajęć laboratoryjnych
- Tworzenie wątków – funkcja
pthread_create
- Przekazywanie parametrów do funkcji wątków i pobieranie wyników – funkcaj
pthread_join
- Synchronizacja wątków – grupa funkcji
pthread_mutex
ipthread_cond
- Implementacja przykładowych programów obsługi wątków
- Tworzenie wątków – funkcja
- Opanowane umiejętności: tworzenie i usuwanie wątków, synchronizacja wątków (wzajemne wykluczanie, usypianie i budzenie).
- Treść zajęć laboratoryjnych
- Mechanizmy IPC: kolejki komunikatów (2 godz.)
- Treść zajęć laboratoryjnych
- Tworzenie kolejek komunikatów – funkcja
msgget
- Wysyłanie i odbieranie komunikatów – funkcje
msgsnd
,msgrcv
- Parametry i usuwanie kolejek komunikatów – funkcja
msgctl
- Obsługa mechanizmów IPC w konsoli systemu – polecenia
ipcs
,ipcrm
- Implementacja przykładowych programów obsługi kolejek komunikatów
- Tworzenie kolejek komunikatów – funkcja
- Opanowane umiejętności: realizacja przekazywania komunikatów pomiędzy lokalnymi procesami.
- Treść zajęć laboratoryjnych
- Mechanizmy IPC: pamięć współdzielona (2 godz.)
- Treść zajęć laboratoryjnych
- Tworzenie i obsługa pamięci współdzielonej – funkcja
shmget
- Przyłączanie pamięci współdzielonej do procesu – funkcja
shmat
- Odłączanie pamięci współdzielonej od procesu – funkcja
shmdt
- Parametry pamięci współdzielonej – funkcja
shmctl
- Implementacja przykładowych programów obsługi pamięci współdzielonej
- Tworzenie i obsługa pamięci współdzielonej – funkcja
- Opanowane umiejętności: tworzenie i udstępnianie segmentów pamięciu w celu przkazywania danych pomiędzy lokalnymi procesami
- Treść zajęć laboratoryjnych
- Mechanizmy IPC: semafory (2 godz.)
- Treść zajęć laboratoryjnych
- Zasada działania semaforów binarnych i uogólnionych
- Tworzenie semaforów – funkcja
semget
- Operacje na semaforach – funkcja
semop
- Parametry semaforów i ich inicjowanie – funkcja
semctl
- Przykłady podstawowych problemów synchronizacji
- Implementacja przykładowych programów z synchronizacją wykorzystująca semafory
- Opanowane umiejętności: tworzenie i inicjalizowanie semafrów w celu synchronizacji współbieżnych procesów (między innymi w dostępie do współdzielonej pamięci).
- Treść zajęć laboratoryjnych