RSK zaliczenie, RSK zaliczenie, WYKŁAD 1


  1. Zdefiniować i opisać pojęcie systemów rozproszonych (przezroczystość, otwartość i skalowalność).

Def.

System rozproszony jest to zestaw niezależnych komputerów, sprawiający na jego użytkownikach wrażenie jednego, logicznie zwartego systemu.

Definicja ta ma dwa aspekty:

  1. dotyczy sprzętu - maszyny są autonomiczne,

  2. odnosi się do oprogramowania - użytkownicy uważają, że mają do czynienia z jednym systemem

Cechy systemów rozproszonych:

0x08 graphic
0x01 graphic

przykład − aby wysłać liczbę całkowitą ze stacji roboczej z procesorem Intel do maszyny Sun SPARC, musimy wziąć pod uwagę, że przy przesyłaniu Intel porządkuje bajty w formacie najpierw najmłodszy bajt oraz to, że procesor SPARC używa formatu najpierw bit najstarszy

przykład - system rozproszony mógłby mieć systemy komputerowe, pracujące pod nadzorem różnych systemów operacyjnych, z których każdy używa własnej konwencji nazywania plików - różnice w konwencjach nazewniczych oraz w sposobie manipulowania na plikach powinny być ukryte przed użytkownikami i aplikacjami

przezroczystość położenia możemy uzyskać, przydzielając zasobom tylko nazwy logiczne, tzn. nazwy, w których położenie zasobu jest zakodowane niejawnie;

przykład - przykładem takiej nazwy jest lokalizator URL http://www.prenhall.com/index.html - który nie podaje żadnych wskazówek co do lokalizacji głównego serwera Sieci wydawnictwa Prentice Hall - lokalizator URL nie zawiera również żadnych przesłanek odnośnie do tego, czy index.html zawsze znajdował się w danym miejscu, czy może ostatnio go tam przeniesiono

zasoby możemy przenosić bez wpływania na sposób kontaktowania się z nimi

przykład - możliwość kontynuowania pracy bez jakichkolwiek (nawet chwilowych) wyłączeń przez ruchomych użytkowników, korzystających z bezprzewodowych laptopów podczas przenoszenia się z miejsca na miejsce

przykład - dwóch niezależnych użytkowników może przechowywać swoje pliki w tym samym serwerze plików lub sięgać po te same tabele we wspólnej bazie danych - istotne jest, aby żaden użytkownik nie dostrzegł, że drugi używa tego samego zasobu

główna przeszkoda w maskowaniu awarii leży w niezdolności rozróżnienia między zasobem nieoperatywnym a skrajnie powolnym

przykład - przy kontaktowaniu się z zajętym serwerem Sieci przeglądarka może odliczyć zakładany czas oczekiwania i zgłosić, że strona WWW jest niedostępna - w tej sytuacji użytkownik nie może stwierdzić, czy serwer rzeczywiście jest nieczynny

przykład - wiele obiektowych baz danych umożliwia bezpośrednie wywoływanie metod na przechowanych obiektach - poza sceną serwer bazy danych kopiuje najpierw stan obiektu z dysku do pamięci głównej, wykonuje operację i (być może) zapisuje stan z powrotem w pamięci pomocniczej - użytkownik jest nieświadom przemieszczania przez serwer stanu między pamięcią podstawową a pomocniczą

Otwarty system rozproszony oferuje usługi zgodnie ze standaryzowanymi regułami, opisującymi ich składnię i semantykę [Semantyka (gr. σημαντικός, semantikós, istotne znaczenie, od sema, znak) to dyscyplina badająca relacje pomiędzy znakami a przedmiotami, do których się one odnoszą. Semantyka zajmuje się badaniem znaczenia słów, czyli interpretacją znaków oraz interpretacją zdań i wyrażeń języka.].

przykład - w sieciach komputerowych reguły standardowe rządzą formatem, treścią i znaczeniem wysyłanych i odbieranych komunikatów - reguły takie są sformalizowane w protokołach - w systemach rozproszonych usługi są na ogół określane za pośrednictwem interfejsów, które często wyraża się w języku opisu interfejsu (ang. Interface Definition Language - IDL)

Definicje interfejsów, zapisane w języku IDL, prawie zawsze dotyczą tylko składni usług - mówiąc inaczej - określają one dokładnie nazwy dostępnych funkcji wraz z typami ich parametrów, wartości powrotnych, możliwych do zgłoszenia wyjątków itd.

Trudną częścią jest precyzyjne określenie, na czym mają polegać te usługi, czyli semantyka interfejsów.

W praktyce specyfikacje te podaje się po prostu nieformalnie, za pomocą środków dostępnych w języku naturalnym.

Poprawnie sformułowana definicja interfejsu umożliwia dowolnemu procesowi wymagającemu pewnego interfejsu porozumiewanie się z innym procesem, udostępniającym ten interfejs. Umożliwia ona również opracowanie przez dwóch niezależnych wykonawców zupełnie różnych implementacji tych interfejsów, co prowadzi do dwóch odrębnych, identycznie działających systemów rozproszonych. Właściwe specyfikacje są zupełne (kompletne) i neutralne. Zupełność oznacza, że wszystko, co jest niezbędne do budowy, zostało rzeczywiście określone. Liczne definicje interfejsu w ogóle nie sa zupełne, toteż twórca jest zmuszony dodawać szczegóły dotyczące implementacji. Równie ważne jest, aby specyfikacje nie narzucały niczego w kwestii wykonania - powinny być neutralne. Kompletność i neutralność są istotne ze względu na zdolność do współdziałania i przenośność.

Zdolność do współdziałania (ang. interoperability) charakteryzuje stopień, w jakim dwie implementacje systemów lub komponenty pochodzące do różnych wytwórców potrafią współistnieć i współpracować, opierając się na wzajemnych usługach, określonych wspólnym standardem.

Przenośność (ang. portability) charakteryzuje stopień, do jakiego z aplikacji opracowanej dla systemu rozproszonego A można skorzystać bez zmian w systemie rozproszonym B, który realizuje te same interfejsy co A.

Kolejnym ważnym celem systemu rozproszonego jest elastyczność systemu - co oznacza, że powinien on być łatwy do skonfigurowania z różnych składowych, być może pochodzących od różnych producentów. Dodawanie nowych komponentów, lub ich wymiana, również powinno przebiegać łatwo i bez naruszania istniejących składowych. Innymi słowy, otwarty system rozproszony powinien być też rozszerzalny. W systemie elastycznym powinno być dość łatwo dodawać części, które działają pod różnymi systemami operacyjnymi, lub nawet wymienić cały system plików (wielu wie z codziennej praktyki, że o osiąganiu elastyczności łatwiej mówić, niż tego dokonać).

Skalowalność systemu możemy mierzyć w co najmniej trzech różnych wymiarach:

Niestety, system skalowalny w jednym z tych wymiarów często traci na efektywności w miarę wzrastania jego skali.

Problemy skalowalności: