Programowanie współbieżne i rozproszone: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Mengel (dyskusja | edycje)
Nie podano opisu zmian
Mengel (dyskusja | edycje)
 
(Nie pokazano 42 wersji utworzonych przez 2 użytkowników)
Linia 1: Linia 1:
== Forma zajęć ==
Wykład (30 godzin) + laboratorium/ćwiczenia (30 godzin)
== Opis ==
Celem wykładu jest zaprezentowanie najważniejszych technik stosowanych do synchronizacji procesów i realizacji komunikacji między nimi, problemów, jakie stają przed programistą opracowującym programy współbieżne. Omówiony zostanie scentralizowany i rozproszony model programu współbieżnego. Problematyka zostanie zilustrowana przykładami klasycznych problemów współbieżności oraz mechanizmów synchronizacji procesów i wątków w systemie operacyjnym Linux. Przedstawione też zostaną metody weryfikacji programów współbieżnych oraz notacje do opisu współbieżności oraz podstawowe algorytmy rozproszone.
== Sylabus ==
== Sylabus ==
=== Autor ===
=== Autor ===
Marcin Engel
* Marcin Engel — Uniwersytet Warszawski
 
=== Typ zajęć ===
wykład (30 godz.) + laboratorium/ćwiczenia (30 godz.)
 
=== Opis ===
Celem wykładu jest zaprezentowanie najważniejszych technik stosowanych do synchronizacji procesów i realizacji komunikacji między nimi oraz problemów, jakie stają przed programistą opracowującym programy współbieżne. Omówiony zostanie scentralizowany i rozproszony model programu współbieżnego. Problematyka zostanie przedstawiona na podstawie klasycznych problemów współbieżności oraz procesów i wątków w systemie operacyjnym Linux. Przedstawione też będą klasyczne algorytmy rozproszone oraz zagadnienia związane z weryfikacją programów współbieżnych.


=== Wymagania wstępne ===
=== Wymagania wstępne ===
 
* Wstęp do programowania
* [[Wstęp do programowania]]
* Systemy operacyjne
* [[Systemy operacyjne]]
* Środowisko programisty


=== Zawartość ===
=== Zawartość ===
* Klasyczne problemy współbieżności
* Klasyczne problemy współbieżności
* Mechanizmy synchronizacji procesów w modelu scentralizowanym i rozproszonym
* Mechanizmy synchronizacji procesów w modelu scentralizowanym i rozproszonym:
** semafory
** semafory
** monitory
** monitory
Linia 25: Linia 25:
* Poprawność programów współbieżnych i jej weryfikacja
* Poprawność programów współbieżnych i jej weryfikacja
* Procesy i wątki w systemie Linux i najważniejsze metody ich synchronizacji
* Procesy i wątki w systemie Linux i najważniejsze metody ich synchronizacji
* Notacje do opisu współbieżności
* Notacje do opisu współbieżności:
** CSP
** CSP
** Sieci Petriego
** Sieci Petriego


=== Literatura ===
=== Literatura ===
# M. Ben-Ari. Podstawy programowania współbieżnego i rozproszonego. WNT, 1996.
# M. Ben-Ari, ''Podstawy programowania współbieżnego i rozproszonego.'' Wydawnictwa Naukowo-Techniczne, Warszawa 1996.
# Z. Weiss, T. Gruźlewski. Programowanie współbieżne i rozproszone w przykładach i zadaniach. WNT, 1993.
# Z. Weiss, T. Gruźlewski, ''Programowanie współbieżne i rozproszone w przykładach i zadaniach.'' Wydawnictwa Naukowo-Techniczne, Warszawa 1993.
# M. Rochkind. Programowanie w systemie Unix dla zaawansowanych. WNT, 1997.
# M. Rochkind, ''Programowanie w systemie Unix dla zaawansowanych.'' Wydawnictwa Naukowo-Techniczne, Warszawa 1997.
# M.K. Johnson, E.W. Troan. Oprogramowanie uzytkowe w systemie Linux. WNT, 2000.
# M.K. Johnson, E.W. Troan, ''Oprogramowanie użytkowe w systemie Linux.'' Wydawnictwa Naukowo-Techniczne, Warszawa2000.


== Moduły ==
== Moduły ==


# [[PWR Wykład 1|Wprowadzenie do programowania współbieżniego]] ([[PWR Ćwiczenia 1|Ćwiczenia. Algorytm Petersena]])
=== Moduły wykładowe ===
# [[PWR Wykład 2|Komunikacja asynchroniczna w modelu rozproszonym]] ([[PWR Ćwiczenia 2|Laboratorium. Procesy w systemie Linux]])
# [[Programowanie współbieżne i rozproszone/PWR Wykład 1|Wprowadzenie do programowania współbieżnego]]  
# [[PWR Wykład 3|Linda]] ([[PWR Ćwiczenia 3|Laboratorium. Łącza nazwane i nienazwane]])
# [[Programowanie współbieżne i rozproszone/PWR Wykład 2|Komunikacja asynchroniczna w modelu rozproszonym]]  
# [[PWR Wykład 4|Komunikacja synchroniczna na przykładzie Ady]] ([[PWR Ćwiczenia 4|Ćwiczenia. Tworzenie programów w modelu asynchronicznym]])
# [[Programowanie współbieżne i rozproszone/PWR Wykład 3|Linda]]  
# [[PWR Wykład 5|Communicating Sequential Processes]] ([[PWR Ćwiczenia 5|Ćwiczenia. Tworzenie programów w modelu synchronicznym]])
# [[Programowanie współbieżne i rozproszone/PWR Wykład 4|Komunikacja synchroniczna na przykładzie Ady]]  
# [[PWR Wykład 6|Algorytmy rozproszone: synchronizacja zegarów logicznych, wzajemne wykluczanie, elekcja]] ([[PWR Ćwiczenia 6| Laboratorium.RPC]])
# [[Programowanie współbieżne i rozproszone/PWR Wykład 5|Communicating Sequential Processes]]  
# [[PWR Wykład 7|Rozproszony algorytm uzgadniania]] ([[PWR Ćwiczenia 7|Laboratorium. Sygnały w Linuksie]])
# [[Programowanie współbieżne i rozproszone/PWR Wykład 5b|CSP cd.]]  
# [[PWR Wykład 8|Mechanizmy scentralizowane. Semafory]] ([[PWR Ćwiczenia 8|Laboratorium. IPC. Kolejki komunikatów]])
<!-- # [[Programowanie współbieżne i rozproszone/PWR Wykład 6|Algorytmy rozproszone: synchronizacja zegarów logicznych, wzajemne wykluczanie, elekcja]] -->
# [[PWR Wykład 9|Monitory i muteksy]] ([[PWR Ćwiczenia 9|Laboratorium. IPC. Semafory]])
# [[Programowanie współbieżne i rozproszone/PWR Wykład 7|Rozproszony algorytm uzgadniania]]  
# [[PWR Wykład 10|Synchronizacja w Javie]] ([[PWR Ćwiczenia 10|Ćwiczenia. Tworzenie programów korzystających z semaforów.]])
# [[Programowanie współbieżne i rozproszone/PWR Wykład 8|Mechanizmy scentralizowane. Semafory]]
# [[PWR Wykład 11|Specyfikowanie własności programów współbieżnych. CTL i LTL]] ([[PWR Ćwiczenia 11|Laboratorium. Wątki i muteksy w Linuksie]])
# [[Programowanie współbieżne i rozproszone/PWR Wykład 9|Semafory cd.]]
# [[PWR Wykład 12|Weryfikacja poprawności programów współbieżnych.]] ([[PWR Ćwiczenia 12|Ćwiczenia. Tworzenie programów korzystających z monitorów i muteksów]])
# [[Programowanie współbieżne i rozproszone/PWR Wykład 10|Monitory]]  
# [[PWR Wykład 13|Inne notacje do opisu współbieżności. Sieci Petriego]] ([[PWR Ćwiczenia 13|Laboratorium. Wątki i ich synchronizacja w Javie]])
<!--# [[Programowanie współbieżne i rozproszone/PWR Wykład 12|Muteksy i inne mechanizmy synchronizacyjne]] -->
# [[PWR Wykład 14|Inne notacje do opisu współbieżności. Sieci Petriego]] ([[PWR Ćwiczenia 14|Laboratorium. Narzędzia do weryfikacji programów współbieżnych SPIN ]])
# [[Programowanie współbieżne i rozproszone/PWR Wykład 11|Specyfikowanie i weryfikacja własności programów współbieżnych. CTL]]  
<!--# [[Programowanie współbieżne i rozproszone/PWR Wykład 13|Inne notacje do opisu współbieżności. Sieci Petriego]]  
# [[Programowanie współbieżne i rozproszone/PWR Wykład 14|Synchronizacja w Javie]]
-->
 
=== Moduły ćwiczeniowe ===
# [[Programowanie współbieżne i rozproszone/PWR Ćwiczenia 1|Ćwiczenia. Algorytm Petersona]]
# [[Programowanie współbieżne i rozproszone/PWR Ćwiczenia 3|Ćwiczenia. Tworzenie programów w modelu asynchronicznym]]
# [[Programowanie współbieżne i rozproszone/PWR Ćwiczenia Linda|Ćwiczenia. Linda]]
# [[Programowanie współbieżne i rozproszone/PWR Ćwiczenia Ada|Ćwiczenia. Ada]]
# [[Programowanie współbieżne i rozproszone/PWR Ćwiczenia 5|Ćwiczenia. CSP]]
# [[Programowanie współbieżne i rozproszone/PWR Ćwiczenia 8|Ćwiczenia. Semafory]]
# [[Programowanie współbieżne i rozproszone/PWR Ćwiczenia 10|Ćwiczenia. Monitory]]
 
=== Moduły laboratoryjne ===
# [[Programowanie współbieżne i rozproszone/PWR Ćwiczenia 2|Laboratorium. Procesy w systemie Linux]]
# [[Programowanie współbieżne i rozproszone/PWR Ćwiczenia sygnały|Laboratorium. Sygnały w Linuksie]]
# [[Programowanie współbieżne i rozproszone/PWR Ćwiczenia 4|Laboratorium. Łącza nienazwane]]
# [[Programowanie współbieżne i rozproszone/PWR Ćwiczenia koleki|Laboratorium. IPC Kolejki komunikatów]]
# [[Programowanie współbieżne i rozproszone/PWR Ćwiczenia R-A|Laboratorium. Algorytm Ricarta-Agrawali]]
# [[Programowanie współbieżne i rozproszone/PWR Ćwiczenia sem|Laboratorium. IPC. Semafory]]
# [[Programowanie współbieżne i rozproszone/PWR Ćwiczenia shm|Laboratorium. IPC. Segmenty pamięci dzielonej]]
# [[Programowanie współbieżne i rozproszone/PWR Ćwiczenia 9|Laboratorium. Wątki i muteksy w Linuksie]]
<!--# [[Programowanie współbieżne i rozproszone/PWR Ćwiczenia 13|Laboratorium. Wątki i ich synchronizacja w Javie]])
# [[Programowanie współbieżne i rozproszone/PWR Ćwiczenia 14|Laboratorium. Narzędzia do weryfikacji programów współbieżnych SMV ]] -->

Aktualna wersja na dzień 09:05, 4 gru 2006

Forma zajęć

Wykład (30 godzin) + laboratorium/ćwiczenia (30 godzin)

Opis

Celem wykładu jest zaprezentowanie najważniejszych technik stosowanych do synchronizacji procesów i realizacji komunikacji między nimi, problemów, jakie stają przed programistą opracowującym programy współbieżne. Omówiony zostanie scentralizowany i rozproszony model programu współbieżnego. Problematyka zostanie zilustrowana przykładami klasycznych problemów współbieżności oraz mechanizmów synchronizacji procesów i wątków w systemie operacyjnym Linux. Przedstawione też zostaną metody weryfikacji programów współbieżnych oraz notacje do opisu współbieżności oraz podstawowe algorytmy rozproszone.

Sylabus

Autor

  • Marcin Engel — Uniwersytet Warszawski

Wymagania wstępne

  • Wstęp do programowania
  • Systemy operacyjne
  • Środowisko programisty

Zawartość

  • Klasyczne problemy współbieżności
  • Mechanizmy synchronizacji procesów w modelu scentralizowanym i rozproszonym:
    • semafory
    • monitory
    • muteksy
    • spotkania (Ada)
  • Procesy i wątki w systemie Linux i najważniejsze metody ich synchronizacji
  • Algorytmy rozproszone: wzajemnego wykluczania, elekcji i uzgadniania
  • Poprawność programów współbieżnych i jej weryfikacja
  • Procesy i wątki w systemie Linux i najważniejsze metody ich synchronizacji
  • Notacje do opisu współbieżności:
    • CSP
    • Sieci Petriego

Literatura

  1. M. Ben-Ari, Podstawy programowania współbieżnego i rozproszonego. Wydawnictwa Naukowo-Techniczne, Warszawa 1996.
  2. Z. Weiss, T. Gruźlewski, Programowanie współbieżne i rozproszone w przykładach i zadaniach. Wydawnictwa Naukowo-Techniczne, Warszawa 1993.
  3. M. Rochkind, Programowanie w systemie Unix dla zaawansowanych. Wydawnictwa Naukowo-Techniczne, Warszawa 1997.
  4. M.K. Johnson, E.W. Troan, Oprogramowanie użytkowe w systemie Linux. Wydawnictwa Naukowo-Techniczne, Warszawa2000.

Moduły

Moduły wykładowe

  1. Wprowadzenie do programowania współbieżnego
  2. Komunikacja asynchroniczna w modelu rozproszonym
  3. Linda
  4. Komunikacja synchroniczna na przykładzie Ady
  5. Communicating Sequential Processes
  6. CSP cd.
  7. Rozproszony algorytm uzgadniania
  8. Mechanizmy scentralizowane. Semafory
  9. Semafory cd.
  10. Monitory
  11. Specyfikowanie i weryfikacja własności programów współbieżnych. CTL

Moduły ćwiczeniowe

  1. Ćwiczenia. Algorytm Petersona
  2. Ćwiczenia. Tworzenie programów w modelu asynchronicznym
  3. Ćwiczenia. Linda
  4. Ćwiczenia. Ada
  5. Ćwiczenia. CSP
  6. Ćwiczenia. Semafory
  7. Ćwiczenia. Monitory

Moduły laboratoryjne

  1. Laboratorium. Procesy w systemie Linux
  2. Laboratorium. Sygnały w Linuksie
  3. Laboratorium. Łącza nienazwane
  4. Laboratorium. IPC Kolejki komunikatów
  5. Laboratorium. Algorytm Ricarta-Agrawali
  6. Laboratorium. IPC. Semafory
  7. Laboratorium. IPC. Segmenty pamięci dzielonej
  8. Laboratorium. Wątki i muteksy w Linuksie