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

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Mengel (dyskusja | edycje)
Mengel (dyskusja | edycje)
Nie podano opisu zmian
Linia 36: Linia 36:


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

Wersja z 10:45, 16 paź 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 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.

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żniego
  2. Komunikacja asynchroniczna w modelu rozproszonym
  3. Linda
  4. Komunikacja synchroniczna na przykładzie Ady
  5. Communicating Sequential Processes
  6. [[Programowanie współbieżne i rozproszone/PWR Wykład 5b|CSP cd.]
  7. Algorytmy rozproszone: synchronizacja zegarów logicznych, wzajemne wykluczanie, elekcja
  8. Rozproszony algorytm uzgadniania
  9. Mechanizmy scentralizowane. Semafory # Semafory cd.
  10. Monitory
  11. [[Programowanie współbieżne i rozproszone/PWR Wykład 12|Muteksy]
  12. Specyfikowanie i weryfikacja własności programów współbieżnych. CTL.
  13. Inne notacje do opisu współbieżności. Sieci Petriego
  14. Synchronizacja w Javie

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
  9. Laboratorium. Wątki i ich synchronizacja w Javie)
  10. Laboratorium. Narzędzia do weryfikacji programów współbieżnych SMV