PWr - Sytemy operacyjne 2 P
Moje projekty z SO2 u doktora Dariusza Cabana - obsługa wątków w C++.
UWAGA: przed kompilacją trzeba zainstalować pliki nagłówkowe ncurses (Debian, Ubuntu i pochodne - pakiet libncurses5-dev)
Projekt 1: BRIcks Caban Kernel-thread System (so2-bricks)
Rysowanie spadających cegieł z wykorzystaniem ncurses. Założenia:
- implementacja cegły jako klasa Brick
- 1 cegła = 1 wątek
- 1 dodatkowy wątek jako monitor (rysowanie wszystkich cegieł)
- przerysowanie ekranu co 10 ms
- automatyczne dopasowywanie liczby cegieł i długość drogi do rozmiarów terminala
- wątki zrealizowane za pomocą klasy std::thread z C++11
Projekt 2: SYncsys Next Caban SYStem (so2-center)
Centrum obsługi zgłoszeń. Założenia:
- co jakiś czas na ekranie pojawia się nowe zgłoszenie (jako znak) i przesuwa się do centrum obsługi
- w systemie zgłoszenie jest obsługiwane przez określony (stały) czas
- jeżeli centrum obsługi jest zajęte, kolejne zgłoszenia czekają w kolejce o ograniczonej długości
- jeżeli cała kolejka jest pełna, kolejne zgłoszenia okrążają centrum i próbują dostać się do kolejki jeszcze raz
- 1 zgłoszenie przez cały czas ma być 1 (i tym samym) wątkiem
- wykorzystanie synchronizacji, sekcji krytycznych, itp.
Projekt 3: BRIcks-ng Caban Kernel-thread System Next Generation (so2-game)
Prosta gra, napisana z wykorzystaniem mechanizmów poznanych na projektach 1. i 2. Zasady rozgrywki:
- czas rozgrywki -- 120 sekund
- sterowanie -- klawisze A i D
- zadanie -- łapanie na platformę spadających cegieł w kolorze takim samym, jak kolor platformy
- co 15 sekund platforma zmienia kolor
- za każdą złapaną cegłę odpowiedniego koloru przydzielane jest 5 punktów
- za każdą złapaną cegłę innego koloru odejmowany jest jeden punkt i za karę rozgrywka jest blokowana na 10 sekund - przy zliczanym wciąż czasie
Projekty z założenia były pisane na platformy Unix-like - wszystko, gdzie są dostępne ncurses.h i unistd.h.