W informatyce współbieżność odnosi się do zdolności systemu do wykonywania wielu zadań poprzez jednoczesne wykonywanie lub współdzielenie czasu (przełączanie kontekstu), współdzielenie zasobów i zarządzanie interakcjami. Współbieżność poprawia responsywność, przepustowość i skalowalność w nowoczesnych systemach obliczeniowych, w tym:
Systemach operacyjnych i systemach wbudowanych Systemach rozproszonych, obliczeniach równoległych i obliczeniach o wysokiej wydajności Systemach baz danych, aplikacjach internetowe i przetwarzaniu w chmurze
Powiązane pojęcia Współbieżność to szersze pojęcie obejmujące kilka powiązanych ze sobą idei, w tym:
Równoległość (równoczesne wykonywanie na wielu jednostkach przetwarzania). Równoległość polega na wykonywaniu zadań niezależnie na wielu rdzeniach procesora. Współbieżność umożliwia sterowanie wieloma wątkami na poziomie programu, który może wykorzystywać równoległość lub podział czasu do wykonywania tych zadań. Programy mogą charakteryzować się wyłącznie równoległością, wyłącznie współbieżnością, zarówno równoległością, jak i współbieżnością, a także żadnym z nich. Wielowątkowość i wieloprzetwarzanie (współdzielone zasoby systemowe) Synchronizacja (koordynacja dostępu do zasobów współdzielonych) Koordynacja (zarządzanie interakcjami między zadaniami współbieżnymi) Kontrola współbieżności (zapewnienie spójności i integralności danych) Komunikacja międzyprocesowa (IPC, ułatwiająca wymianę informacji)
Problemy Ponieważ obliczenia w systemie współbieżnym mogą oddziaływać na siebie nawzajem podczas wykonywania, liczba możliwych ścieżek wykonania w systemie może być niezwykle duża, a jego wynikowe działanie może być nieokreślone. Współbieżne korzystanie ze współdzielonych zasobów może być źródłem nieokreśloności, prowadząc do problemów takich jak impas czy niedobór zasobów.
Projektowanie systemów współbieżnych często wiąże się ze znalezieniem niezawodnych technik koordynacji ich wykonywania, wymiany danych, przydzielania pamięci i utworzenia harmonogramu wykonywania w celu zminimalizowania czasu reakcji i zmaksymalizowania przepustowości.
Teoria Teoria współbieżności jest aktywną dziedziną badań w informatyce teoretycznej. Jednym z pierwszych jej aspektów była przełomowa praca Carla Adama Petriego na temat sieci Petriego z początku lat 60. XX wieku. Od tego czasu opracowano szeroką gamę formalizmów do modelowania i wnioskowania na temat współbieżności.
Modele Opracowano szereg formalizmów służących do modelowania i zrozumienia systemów współbieżnych, w tym:
Maszyna o swobodnym dostępie równoległym Model aktora Modele połączeń obliczeniowych, takie jak model synchroniczny równoległy (BSP) Sieci Petriego Rachunki procesowe Rachunek systemów komunikujących się (CCS) Model procesów sekwencyjnych komunikacji (CSP) Rachunek π Przestrzenie krotkowe, np. Linda Proste współbieżne programowanie obiektowe (SCOOP) Język koordynacji Reo Monoidy śladowe
Niektóre z tych modeli współbieżności służą przede wszystkim do wspierania wnioskowania i specyfikacji na temat systemów, podczas gdy inne mogą być wykorzystywane w całym cyklu rozwoju, obejmującym projektowanie, implementację, dowodzenie, testowanie i symulację systemów współbieżnych. Niektóre z nich opierają się na przekazywaniu komunikatów, podczas gdy inne oferują różne mechanizmy współbieżności.
Przypisy
Kategoria:Informatyka