Prawo Amdahla to sformułowana przez Gene Amdahla zależność mówiąca, że jeśli część procesu zajmująca aktualnie x×100% czasu zostanie przyspieszona n-krotnie, to cały proces zostanie przyspieszony jedynie razy.
Oznacza to, że nawet jeśli uda się bardzo mocno przyspieszyć jakąś część procesu, to ta część, której przyspieszyć się nie uda, stanie się dominującym składnikiem całkowitego czasu (to samo można powiedzieć o koszcie, pojemności dyskowej, transferze sieciowym itd.).
Na przykład jeśli 90% czasu procesora zajmują operacje arytmetyczne, a 10% dostęp do pamięci, i operacje te przyspieszone zostaną 10-krotnie (przy niezmienionym czasie dostępu do pamięci), to po tej zmianie procesor będzie operował tylko razy szybciej.
Jeśli przyspieszy się je nawet 100-krotnie, wzrost wydajności będzie wynosił tylko razy, pomimo że prawie wyeliminowany został czas przedtem dominującego składnika czasu operacji. Nowym dominującym składnikiem stał się bowiem czas dostępu do pamięci.
Konwencjonalne maszyny sekwencyjne nazywamy SISD (single instruction stream over a data stream - pojedyńczy strumień instrukcji ponad strumieniem danych). Komputery wektorowe są wyposażone w skalarną i wektorową architekturę lub pojawiają się jako SIMD (single instruction stream over multiple data streams - pojedyńczy strumień instrukcji ponad wieloma strumieniami danych). Dla równoległych komputerów zarezerwowano pojęcie MIMD (multiple instruction streams over multiple data streams - wiele strumieni instrukcji ponad wieloma strumieniami danych). Jest jeszcze czwarty rodzaj maszyn - typu MISD (multiple instruction streams over single data stream - wiele strumieni instrukcji ponad jednym strumieniem danych). Ten sam strumień danych przepływa przez liniową tablicę procesorów, wykonujących różne strumienie instrukcji. Ta architektura jest także znana pod inną nazwą - architektura systolic i jest wykorzystywana do wykonywania skomplikowanych instrukcji w trybie pipelined.
Zakleszczenie (ang. deadlock) jest pojęciem z teorii gier opisującym sytuację, w której co najmniej dwie różne akcje czekają na siebie nawzajem, więc żadna nie może się zakończyć. Gracze zdobyli pewne unikatowe warunki niezbędne do wykonania kolejnego ruchu, ale żaden nie ma wszystkich i gra nie może być kontynuowana. Problem zakleszczenia występuje w wielozadaniowych systemach operacyjnych, gdzie wiele zadań w tym samym czasie konkuruje o wyłączny dostęp do zasobów. Zjawisko jest również ważne w systemach zarządzania bazami danych. W pierwszym przypadku zasobami są struktury danych (często powiązane z fizycznymi urządzeniami takimi jak na przykład karta dźwiękowa lub magistrala), w drugim przypadku zasobami są obiekty bazy danych, na przykład relacje (tabele) lub poszczególne krotki. Zakleszczeniu mogą ulec zadania takie jak na przykład procesy lub wątki a w bazach danych poszczególne transakcje.
Zbiór niezależnych komputerów, które są postrzegane przez użytkowników systemu jako jeden komputer.
Zalety systemów rozproszonych
1. Ekonomiczne - zbiór (mikro) procesorów może mieć lepszy współczynnik ceny do wydajności (price/performance ratio) niż odpowiadający mu jeden procesor (w dużym komputerze - mainframe).2. Szybsze - system rozproszony może mieć więcej mocy obliczeniowej niż system zcentralizowany.3. Wykorzystanie faktu iż niektóre aplikacje są z natury rozproszone.4. Bardziej niezawodne - awaria jednego komputera nie musi prowadzić do awarii całego systemu.5. Możliwość przyrostowego rozwoju - stopniowe dodawanie nowych komputerów zwiększających zasoby systemu.
Wady systemów rozproszonych
1. Stosunkowo nowe podejście, mało doświadczeń z budowy i eksploatacji takich systemów, brak oprogramowania.2. Działanie systemu silnie zależy od niezawodności i przepustowości sieci.3. Autoryzacja dostępu tridniejsza do zaimplementowania.
Broadcast- Jeden procesor(root) rozsyła jedną daną do wszytkich.
Funkcja rozproszenia ("scatter") danych między procesami. Działa w ten sposób, że proces root rozsyła zawartość send_buff między wszystkie procesy. Jest ona dzielona na p segmentów, każdy składający się z send_count elementów. Pierwszy segment trafia do procesu 0, drugi do procesu 1 itp. Oczywiście argumenty, których nazwy zaczynają się na Send mają znaczenie tylko dla procesu który jest nadawcą.
Patrz Master-Slave
12
inf4