Programowanie aplikacji współbieżnych i rozproszonych w systemie Linux
Praca zawiera materiały i zestaw ćwiczeń dotyczących tworzenia złożonych aplikacji w systemach zgodnych ze standardem POSIX 1003.1 co obejmuje w szczególności system LINUX. Ćwiczenia przeznaczone są dla studentów którzy przeszli już podstawowy kurs programowania w języku C i są zaznajomieni z programowaniem sekwencyjnym. Przedstawione tu ćwiczenia są kolejnym etapem zdoby wania umiejętności programistyczny ch. Omawiane są metody tworzenia aplikacji złożonych z wielu wykonywanych współbieżnie procesów' sekwencyjnych. Procesy te wykonywać się mogą na jednym komputerze wyposażonym w procesor jedno lub wielo rdzeniowy lub też w komputerach połączony ch siecią Internet w więc w systemie rozproszonym. Aby procesy mogły tworzy ć aplikację musza się komunikować. Stąd też szczególną uwagę poświęcono różnym metodom komunikacji międzyprocesowej zarówno lokalnym jak i sieciowym. Ćwiczenia obejmują następujące tematy':
1. Podstawy posługiwanie się sy stemem, uzyskiwanie informacji o stanie sy stemu, uzy skiwanie informacji o wywołaniach sy stemowych, funkcjach, aplikacjach (narzędzie man, info).
2. Tw orzenie i uruchamianie programów w języku C z uży ciem zintegrow anego środow iska CodeBlocks i narzędzie make.
3. Zarządzanie procesami, tworzenie i kasowanie procesów.
4. Zarządzanie plikami: biblioteka niskiego poziomu, blokady, standardowa biblioteka wejścia / wyjścia, komunikacja poprzez pliki
5. Łącza nienazwane i nazwane, selektywny wybór gotowego wejścia
6. Kolejki komunikatów' POSIX
7. Komunikacja przez pamięć dzieloną, sy nchronizacja procesów' przez semafory POSIX
8. Komunikacja sieciowa poprzez gniazda - protokół datagramowy UDP
9. Komunikacja sieciowa poprzez gniazda - protokół połączeniowy TCP
10. Zarządzanie wątkami: tworzenie, synchronizacja, muteksy, zmienne warunkowe
11. Zdalne wywoływanie procedur w standardzie SUN RPC
Poszczególne ćwiczenie składa się z krótkiego omówienia tematu, wyszczególnienia najważniejszych wywołań systemowych, elementarnych przykładów ilustrujących zagadnienie i zadań przeznaczonych do zrealizowania w trakcie laboratorium. Do trudniejszych zadań dostarczone są szkielety' zaw ierające podstawową strukturę aplikacji. Omawiane tu zadania programistyczne zostały rozwiązane w środowisku systemu Linux Debian 6 sąueeze
Opracowane tutaj ćwiczenia mogą być wykorzy stane w laboratoriach z przedmiotów':
• Programowanie współbieżne
• Sieciowe systemy operacyjne
• Programowanie systemowe i współbieżne
Jędrzej UŁASIEWICZ - Instytut Informatyki. Automatyki i Roboty ki Politechniki Wrocławskiej