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 35 wersji utworzonych przez 2 użytkowników)
Linia 1: Linia 1:
== Forma zajęć ==
== Forma zajęć ==
wykład (30 godzin) + laboratorium/ćwiczenia (30 godzin)
Wykład (30 godzin) + laboratorium/ćwiczenia (30 godzin)


== Opis ==
== 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 przykładzie 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 oraz notacje do opisu współbieżności.
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


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


=== Zawartość ===
=== Zawartość ===
Linia 30: Linia 30:


=== 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 użytkowe 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 ==
# [[Programowanie współbieżne i rozproszone/PWR Wykład 1|Programowanie współbieżne i rozproszone/Wprowadzenie do programowania współbieżniego]] ([[PWR Ćwiczenia 1|Ćwiczenia. Algorytm Petersena]])
 
# [[PWR Wykład 2|Komunikacja asynchroniczna w modelu rozproszonym]] ([[PWR Ćwiczenia 2|Laboratorium. Procesy w systemie Linux]])
=== Moduły wykładowe ===
# [[PWR Wykład 3|Linda]] ([[PWR Ćwiczenia 3|Ćwiczenia. Tworzenie programów w modelu asynchronicznym]])
# [[Programowanie współbieżne i rozproszone/PWR Wykład 1|Wprowadzenie do programowania współbieżnego]]  
# [[PWR Wykład 4|Komunikacja synchroniczna na przykładzie Ady]] ([[PWR Ćwiczenia 4|Laboratorium. Łącza nazwane i nienazwane]])
# [[Programowanie współbieżne i rozproszone/PWR Wykład 2|Komunikacja asynchroniczna w modelu rozproszonym]]  
# [[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 3|Linda]]  
# [[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 4|Komunikacja synchroniczna na przykładzie Ady]]  
# [[PWR Wykład 7|Rozproszony algorytm uzgadniania]] ([[PWR Ćwiczenia 7|Laboratorium. Sygnały w Linuksie]])
# [[Programowanie współbieżne i rozproszone/PWR Wykład 5|Communicating Sequential Processes]]  
# [[PWR Wykład 8|Mechanizmy scentralizowane. Semafory]] ([[PWR Ćwiczenia 8|Laboratorium. IPC. Kolejki komunikatów]])
# [[Programowanie współbieżne i rozproszone/PWR Wykład 5b|CSP cd.]]  
# [[PWR Wykład 9|Monitory i muteksy]] ([[PWR Ćwiczenia 9|Laboratorium. IPC. Semafory]])
<!-- # [[Programowanie współbieżne i rozproszone/PWR Wykład 6|Algorytmy rozproszone: synchronizacja zegarów logicznych, wzajemne wykluczanie, elekcja]] -->
# [[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 7|Rozproszony algorytm uzgadniania]]  
# [[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 8|Mechanizmy scentralizowane. Semafory]]
# [[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 9|Semafory cd.]]
# [[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 10|Monitory]]  
# [[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 12|Muteksy i inne mechanizmy synchronizacyjne]] -->
# [[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