Rozproszony system operacyjny
Rozproszony system operacyjny to oprogramowanie systemowe w zbiorze niezależnych programów, połączonych w sieć , komunikujących się i fizycznie oddzielnych węzłów obliczeniowych. Obsługują zadania obsługiwane przez wiele procesorów. Każdy pojedynczy węzeł zawiera określony podzbiór oprogramowania globalnego zagregowanego systemu operacyjnego. Każdy podzbiór jest złożony z dwóch odrębnych dostawców usług. Pierwszym z nich jest wszechobecne minimalne jądro lub mikrojądro , które bezpośrednio kontroluje sprzęt tego węzła. Drugi to zbiór elementów zarządzania systemem wyższego poziomu , które koordynują indywidualne i wspólne działania węzła. Te komponenty streszczają funkcje mikrojądra i obsługują aplikacje użytkownika.
Mikrojądro i kolekcja składników zarządzania współpracują ze sobą. Wspierają cel systemu, jakim jest integracja wielu zasobów i funkcji przetwarzania w wydajny i stabilny system. Ta bezproblemowa integracja poszczególnych węzłów w globalny system nazywana jest przezroczystością lub pojedynczym obrazem systemu ; opisanie złudzenia, jakie daje użytkownikom wygląd systemu globalnego jako pojedynczej jednostki obliczeniowej.
Opis
Rozproszony system operacyjny zapewnia podstawowe usługi i funkcje wymagane od systemu operacyjnego, ale dodaje atrybuty i określone konfiguracje , aby umożliwić mu obsługę dodatkowych wymagań, takich jak zwiększona skalowalność i dostępność. Dla użytkownika rozproszony system operacyjny działa w sposób podobny do jednowęzłowego, monolitycznego systemu operacyjnego . Oznacza to, że chociaż składa się z wielu węzłów, użytkownikom i aplikacjom wydaje się, że jest pojedynczym węzłem.
Oddzielenie minimalnej funkcjonalności na poziomie systemu od dodatkowych usług modułowych na poziomie użytkownika zapewnia „ rozdzielenie mechanizmu i polityki ”. Mechanizm i politykę można po prostu zinterpretować odpowiednio jako „co się robi” i „jak coś się robi”. Ta separacja zwiększa elastyczność i skalowalność.
Przegląd
Jądro
W każdym miejscu (zwykle w węźle) jądro zapewnia minimalnie kompletny zestaw narzędzi na poziomie węzła niezbędnych do obsługi podstawowego sprzętu i zasobów węzła. Mechanizmy te obejmują alokację, zarządzanie i dysponowanie zasobami węzła, procesami, komunikacją i funkcjami wspierającymi zarządzanie wejściami/wyjściami . W jądrze podsystem komunikacyjny ma największe znaczenie dla rozproszonego systemu operacyjnego.
W rozproszonym systemie operacyjnym jądro często obsługuje minimalny zestaw funkcji, w tym niskopoziomowe zarządzanie przestrzenią adresową , zarządzanie wątkami i komunikację między procesami (IPC). Jądro tego projektu jest określane jako mikrojądro . Jego modułowy charakter zwiększa niezawodność i bezpieczeństwo, podstawowe funkcje rozproszonego systemu operacyjnego.
Zarządzanie systemem
zasady węzła . Te komponenty są częścią systemu operacyjnego poza jądrem. Komponenty te zapewniają komunikację na wyższym poziomie, zarządzanie procesami i zasobami, niezawodność, wydajność i bezpieczeństwo. Komponenty odpowiadają funkcjom pojedynczego systemu, dodając przejrzystość wymaganą w rozproszonym środowisku.
Rozproszony charakter systemu operacyjnego wymaga dodatkowych usług wspierających obowiązki węzła wobec systemu globalnego. Ponadto komponenty zarządzania systemem przejmują odpowiedzialność za „ochronę” niezawodności, dostępności i trwałości. Obowiązki te mogą kolidować ze sobą. Konsekwentne podejście, wyważona perspektywa i dogłębne zrozumienie całego systemu mogą pomóc w zidentyfikowaniu malejących zwrotów . Rozdzielenie polityki i mechanizmu łagodzi takie konflikty.
Współpraca jako system operacyjny
Architektura i projekt rozproszonego systemu operacyjnego muszą realizować cele zarówno poszczególnych węzłów, jak i globalnego systemu. Do architektury i projektowania należy podchodzić w sposób zgodny z polityką oddzielenia od mechanizmu. Czyniąc to, rozproszony system operacyjny stara się zapewnić wydajną i niezawodną rozproszoną strukturę obliczeniową, pozwalającą użytkownikowi na absolutnie minimalną świadomość podstawowych wysiłków związanych z dowodzeniem i kontrolą.
Wielopoziomowa współpraca między jądrem a komponentami zarządzania systemem, a z kolei między odrębnymi węzłami w rozproszonym systemie operacyjnym, jest funkcjonalnym wyzwaniem dla rozproszonego systemu operacyjnego. Jest to punkt w systemie, który musi zachować idealną harmonię celu, a jednocześnie zachować całkowite oddzielenie intencji od realizacji. Wyzwaniem tym jest możliwość stworzenia przez rozproszony system operacyjny podstawy i struktury niezawodnego, wydajnego, dostępnego, solidnego, rozszerzalnego i skalowalnego systemu. Jednak ta możliwość wiąże się z bardzo wysokimi kosztami w złożoności.
Cena złożoności
W rozproszonym systemie operacyjnym wyjątkowy stopień wrodzonej złożoności może z łatwością sprawić, że cały system stanie się przekleństwem dla każdego użytkownika. W związku z tym logiczna cena realizacji rozproszonego systemu operacyjnego musi być obliczona w kategoriach przezwyciężenia ogromnej złożoności w wielu obszarach i na wielu poziomach. Ta kalkulacja obejmuje głębokość, szerokość i zakres inwestycji projektowych i planowania architektonicznego wymaganych do osiągnięcia nawet najskromniejszej realizacji.
Te rozważania dotyczące projektowania i rozwoju są krytyczne i bezlitosne. Na przykład, na wyjątkowo wczesnym etapie wymagane jest dogłębne zrozumienie ogólnych szczegółów architektonicznych i projektowych rozproszonego systemu operacyjnego. Wyczerpujący wachlarz rozważań projektowych jest nieodłącznym elementem rozwoju rozproszonego systemu operacyjnego. Każda z tych kwestii projektowych może potencjalnie wpłynąć w znacznym stopniu na wiele innych. Prowadzi to do ogromnego wysiłku w zrównoważonym podejściu pod względem indywidualnych rozważań projektowych i wielu ich permutacji. Jako pomoc w tych wysiłkach, większość polega na udokumentowanym doświadczeniu i badaniach w rozproszonej mocy obliczeniowej.
Historia
Wysiłki badawcze i eksperymentalne rozpoczęły się na dobre w latach siedemdziesiątych i trwały przez lata dziewięćdziesiąte, przy czym zainteresowanie osiągnęło szczyt pod koniec lat osiemdziesiątych. W tym okresie wprowadzono szereg rozproszonych systemów operacyjnych; jednak bardzo niewiele z tych wdrożeń odniosło nawet skromny sukces komercyjny.
Podstawowe i pionierskie implementacje prymitywnych koncepcji komponentów rozproszonego systemu operacyjnego datowane są na wczesne lata pięćdziesiąte. Niektóre z tych pojedynczych kroków nie koncentrowały się bezpośrednio na przetwarzaniu rozproszonym, aw tamtym czasie wielu mogło nie zdawać sobie sprawy z ich ważnego wpływu. Te pionierskie wysiłki położyły ważne podstawy i zainspirowały dalsze badania w obszarach związanych z przetwarzaniem rozproszonym.
W połowie lat siedemdziesiątych XX wieku badania przyniosły ważne postępy w przetwarzaniu rozproszonym. Te przełomy zapewniły solidną, stabilną podstawę dla wysiłków, które trwały przez lata 90.
Przyspieszające rozprzestrzenianie się badań systemów wieloprocesorowych i wielordzeniowych doprowadziło do odrodzenia koncepcji rozproszonego systemu operacyjnego.
DYSEAC
Jednym z pierwszych wysiłków był DYSEAC , komputer synchroniczny ogólnego przeznaczenia . W jednej z najwcześniejszych publikacji Association for Computing Machinery , w kwietniu 1954 roku, naukowiec z National Bureau of Standards – obecnie National Institute of Standards and Technology ( NIST ) – przedstawił szczegółową specyfikację DYSEAC. We wstępie skupiono się na wymaganiach zamierzonych aplikacji, w tym na elastycznej komunikacji, ale wspomniano także o innych komputerach:
Wreszcie, urządzenia zewnętrzne mogą obejmować nawet inne pełnowymiarowe komputery wykorzystujące ten sam język cyfrowy co DYSEAC. Na przykład SEAC lub inne podobne do niego komputery można podłączyć do DYSEAC i za pomocą skoordynowanych programów można zmusić je do współpracy we wzajemnej współpracy nad wspólnym zadaniem… W konsekwencji [] komputer może być używany do koordynowania różnych działania wszystkich urządzeń zewnętrznych w efektywną pracę zespołową.
— ALAN L. LEINER, Specyfikacje systemu dla DYSEAC
W specyfikacji omówiono architekturę systemów wielokomputerowych, preferując raczej peer-to-peer niż master-slave.
Każdy członek takiej połączonej grupy oddzielnych komputerów może w dowolnym momencie inicjować i wysyłać specjalne rozkazy kontrolne do któregokolwiek ze swoich partnerów w systemie. W konsekwencji kontrola nadzorcza nad wspólnym zadaniem może być początkowo luźno rozproszona w całym systemie, a następnie tymczasowo skoncentrowana na jednym komputerze lub nawet szybko przekazywana z jednej maszyny na drugą, gdy zajdzie taka potrzeba. …opisane różne ułatwienia w zakresie przerwań opierają się na wzajemnej współpracy między komputerem a pomocniczymi urządzeniami zewnętrznymi i nie odzwierciedlają jedynie prostej relacji master-slave.
— ALAN L. LEINER, Specyfikacje systemu dla DYSEAC
Jest to jeden z najwcześniejszych przykładów komputera ze sterowaniem rozproszonym. Raporty Departamentu Armii potwierdziły, że był on niezawodny i przeszedł wszystkie testy odbiorcze w kwietniu 1954 roku. Został ukończony i dostarczony na czas, w maju 1954 roku. Był to „komputer przenośny ”, mieszczący się w ciągniku z przyczepą , z 2 pojazdów towarzyszących i 6 ton pojemności chłodniczej .
Lincolna TX-2
Opisany jako eksperymentalny system wejścia-wyjścia, Lincoln TX-2 kładł nacisk na elastyczne, jednocześnie działające urządzenia wejścia-wyjścia, tj. Wieloprogramowość . Konstrukcja TX-2 była modułowa, zapewniając wysoki stopień modyfikacji i rozbudowy.
System wykorzystywał technikę programu wielosekwencyjnego. Ta technika umożliwiła powiązanie wielu liczników programów z jedną z 32 możliwych sekwencji kodu programu. Te sekwencje z wyraźnym priorytetem mogą być przeplatane i wykonywane jednocześnie, wpływając nie tylko na obliczenia w procesie, ale także na przepływ sterowania sekwencjami i przełączanie urządzeń. Wiele dyskusji dotyczyło sekwencjonowania urządzeń.
Podobnie jak DYSEAC, oddzielnie zaprogramowane urządzenia TX-2 mogą działać jednocześnie, zwiększając przepustowość . Pełna moc jednostki centralnej była dostępna dla dowolnego urządzenia. TX-2 był kolejnym przykładem systemu wykazującego sterowanie rozproszone, którego jednostka centralna nie miała dedykowanego sterowania.
Komórki komunikujące się
Jedną z wczesnych prób abstrakcji dostępu do pamięci były komórki komunikujące się, w których komórka składała się ze zbioru elementów pamięci . Element pamięci był w zasadzie binarnym elektronicznym przerzutnikiem lub przekaźnikiem . W komórce były dwa rodzaje elementów, symbol i komórka . Każda struktura komórkowa przechowuje dane w postaci ciągu symboli, składającego się z nazwy i zestawu parametrów . Informacje są łączone poprzez powiązania komórek.
Teoria głosiła, że adresowanie jest marnotrawstwem i bezwartościowym poziomem pośrednictwa . Dostęp do informacji uzyskano na dwa sposoby: bezpośredni i krzyżowy. Bezpośrednie pobieranie akceptuje nazwę i zwraca zestaw parametrów. Projekty wyszukiwania krzyżowego za pomocą zestawów parametrów i zwraca zestaw nazw zawierających dany podzbiór parametrów. Było to podobne do zmodyfikowanej struktury danych tabeli skrótów , która pozwalała na wiele wartości (parametrów) dla każdego klucza (nazwy).
Pamięć komórkowa miałaby wiele zalet: większa część | ||
logiki systemu jest rozproszona w powiązaniach informacji przechowywanych w komórkach, | ||
ten przepływ informacji jest w pewnym stopniu zależny od czynności przechowywania i wyszukiwania, | ||
czas potrzebny do przechowywania i odzyskiwania jest w większości stałe i całkowicie niezwiązane z rozmiarem i współczynnikiem wypełnienia pamięci | ||
Komórki są logicznie nie do odróżnienia, co czyni je zarówno elastycznymi w użyciu, jak i stosunkowo prostymi w rozbudowie |
Ta konfiguracja była idealna dla systemów rozproszonych. Projekcja w stałym czasie przez pamięć w celu przechowywania i odzyskiwania była z natury atomowa i wyłączna . Wewnętrzne rozproszone cechy pamięci komórkowej byłyby nieocenione. Wpływ na użytkownika , sprzęt / urządzenie lub interfejsy programowania aplikacji był pośredni. Autorzy rozważali systemy rozproszone, stwierdzając:
Chcieliśmy tutaj przedstawić podstawowe idee rozproszonego systemu logicznego z… makroskopową koncepcją projektowania logicznego, z dala od skanowania, wyszukiwania, adresowania i liczenia, jest równie ważna. Musimy za wszelką cenę uwolnić się od ciężaru szczegółowych problemów lokalnych, które przystoją tylko maszynom znajdującym się nisko w ewolucyjnej skali maszyn.
— Chung-Yeol (CY) Lee, Komunikujące się komórki, podstawa komputera z logiką rozproszoną
Praca u podstaw
Spójna abstrakcja pamięci
Algorytmy skalowalnej synchronizacji na multiprocesorach z pamięcią współdzieloną
Abstrakcja systemu plików
Pomiary rozproszonego systemu plików Spójność pamięci we współdzielonych systemach pamięci wirtualnej
Abstrakcja transakcji
Sagi Transakcyjne
Pamięć transakcyjna Komponowalne transakcje pamięciowe Pamięć transakcyjna: architektoniczna obsługa struktur danych bez blokad Transakcyjna pamięć programowa dla struktur danych o dynamicznych rozmiarach Transakcyjna pamięć programowa
Abstrakcja trwałości
OceanStore: architektura trwałego przechowywania na skalę globalną
Abstrakcja koordynatora
Głosowanie ważone dla zreplikowanych danych Konsensus w obecności częściowej synchronizacji
Abstrakcja niezawodności
Kontrole poczytalności Problem bizantyjskich generałów Procesory typu fail-stop: podejście do projektowania odpornych na uszkodzenia systemów komputerowych
Odzyskiwanie Rozproszone migawki: określanie globalnych stanów systemów rozproszonych Optymistyczne odtwarzanie w systemach rozproszonych
Rozproszone modele obliczeniowe
Trzy podstawowe dystrybucje
Aby lepiej zilustrować ten punkt, zbadaj trzy architektury systemu ; scentralizowane, zdecentralizowane i rozproszone. W tym badaniu rozważ trzy aspekty strukturalne: organizację, połączenie i kontrolę. Organizacja opisuje cechy układu fizycznego systemu. Połączenie obejmuje ścieżki komunikacyjne między węzłami. Kontrola zarządza działaniem dwóch wcześniejszych rozważań.
Organizacja
System scentralizowany ma jeden poziom struktury, na którym wszystkie elementy składowe zależą bezpośrednio od pojedynczego elementu sterującego. Zdecentralizowany system jest hierarchiczny. Dolny poziom łączy podzbiory jednostek systemu. Te podzbiory jednostek z kolei łączą się na wyższych poziomach, ostatecznie osiągając punkt kulminacyjny w centralnym elemencie głównym. System rozproszony to zbiór autonomicznych elementów bez koncepcji poziomów.
Połączenie
Systemy scentralizowane łączą składniki bezpośrednio z centralną jednostką nadrzędną na zasadzie „hub and speak”. System zdecentralizowany (inaczej system sieciowy ) obejmuje bezpośrednie i pośrednie ścieżki między elementami składowymi a jednostką centralną. Zazwyczaj jest to konfigurowane jako hierarchia z tylko jedną najkrótszą ścieżką między dowolnymi dwoma elementami. Wreszcie, rozproszony system operacyjny nie wymaga żadnego wzorca; możliwe są bezpośrednie i pośrednie połączenia między dowolnymi dwoma elementami. Rozważmy zjawisko „ string art ” lub rysunku spirograficznego z lat 70. jako w pełni połączony system , a pajęczą sieć lub system autostrad międzystanowych między miastami USA jako przykłady częściowo połączonego systemu .
Kontrola
Scentralizowane i zdecentralizowane systemy kierują przepływy połączeń do iz jednostki centralnej, podczas gdy systemy rozproszone komunikują się wzdłuż dowolnych ścieżek. To jest kluczowa koncepcja trzeciego rozważania. Kontrola obejmuje przydzielanie zadań i danych do elementów systemu, równoważąc wydajność, szybkość reakcji i złożoność.
Scentralizowane i zdecentralizowane systemy oferują większą kontrolę, potencjalnie ułatwiając administrację poprzez ograniczenie opcji. Systemy rozproszone są trudniejsze do jawnej kontroli, ale lepiej skalują się poziomo i oferują mniej punktów awarii całego systemu. Stowarzyszenia są zgodne z potrzebami narzuconymi przez projekt, ale nie przez chaos organizacyjny
Rozważania projektowe
Przezroczystość
Przezroczystość lub obraz pojedynczego systemu odnosi się do zdolności aplikacji do traktowania systemu, na którym działa, bez względu na to, czy jest dystrybuowany i bez względu na sprzęt lub inne szczegóły implementacji. Wiele obszarów systemu może zyskać na przejrzystości, w tym dostęp, lokalizacja, wydajność, nazewnictwo i migracja. Uwzględnienie przejrzystości wpływa bezpośrednio na podejmowanie decyzji w każdym aspekcie projektowania rozproszonego systemu operacyjnego. Przejrzystość może nakładać pewne wymagania i/lub ograniczenia na inne kwestie projektowe.
Systemy mogą opcjonalnie naruszać przezroczystość w różnym stopniu, aby spełnić określone wymagania aplikacji. Na przykład rozproszony system operacyjny może prezentować dysk twardy na jednym komputerze jako „C:”, a dysk na innym komputerze jako „G:”. Użytkownik nie wymaga znajomości sterowników urządzeń ani lokalizacji dysku; oba urządzenia działają w ten sam sposób, z perspektywy aplikacji. Mniej przejrzysty interfejs może wymagać, aby aplikacja wiedziała, na którym komputerze znajduje się dysk. Domeny przejrzystości:
- Przejrzystość lokalizacji — przezroczystość lokalizacji obejmuje dwa odrębne aspekty przejrzystości: przezroczystość nazw i mobilność użytkowników. Przejrzystość nazewnictwa wymaga, aby nic w fizycznych lub logicznych odniesieniach do jakiejkolwiek jednostki systemowej nie ujawniało żadnych wskazówek dotyczących lokalizacji jednostki ani jej lokalnych lub zdalnych relacji z użytkownikiem lub aplikacją. Mobilność użytkowników wymaga spójnego odwoływania się do jednostek systemowych, niezależnie od lokalizacji systemu, z którego pochodzi odniesienie.
- Przejrzystość dostępu — jednostki systemu lokalnego i zdalnego muszą pozostać nie do odróżnienia podczas przeglądania za pośrednictwem interfejsu użytkownika. Rozproszony system operacyjny utrzymuje to postrzeganie poprzez ujawnienie pojedynczego mechanizmu dostępu dla jednostki systemowej, niezależnie od tego, czy jednostka ta jest lokalna czy zdalna dla użytkownika. Przejrzystość nakazuje, aby wszelkie różnice w metodach dostępu do dowolnej jednostki systemowej — lokalnej lub zdalnej — były zarówno niewidoczne, jak i niewykrywalne dla użytkownika.
- Przejrzystość migracji — zasoby i działania są migrowane z jednego elementu do drugiego, kontrolowane wyłącznie przez system i bez wiedzy lub działania użytkownika/aplikacji.
- Przejrzystość replikacji – proces lub fakt, że zasób został zduplikowany na innym elemencie, odbywa się pod kontrolą systemu i bez wiedzy lub interwencji użytkownika/aplikacji.
- Przejrzystość współbieżności — użytkownicy/aplikacje nie są świadomi obecności/działań innych użytkowników i nie mają na nie wpływu.
- Przejrzystość awarii — system jest odpowiedzialny za wykrywanie i usuwanie awarii systemu. Nie jest wymagana żadna wiedza/działanie użytkownika poza czekaniem, aż system rozwiąże problem.
- Przejrzystość wydajności — system jest odpowiedzialny za wykrywanie i usuwanie lokalnych lub globalnych braków wydajności. Należy pamiętać, że zasady systemowe mogą preferować niektórych użytkowników/klasy użytkowników/zadania od innych. Brak wiedzy użytkownika lub interakcji. jest zaangażowany.
- Przejrzystość rozmiaru/skali – System jest odpowiedzialny za zarządzanie swoim zasięgiem geograficznym, liczbą węzłów, poziomem możliwości węzłów bez wymaganej wiedzy użytkownika lub interakcji.
- Przejrzystość wersji — system jest odpowiedzialny za aktualizacje, rewizje i zmiany w infrastrukturze systemu bez wiedzy i działań użytkownika.
- Przejrzystość kontroli — system jest odpowiedzialny za dostarczanie wszystkim użytkownikom i aplikacjom wszystkich informacji systemowych, stałych, właściwości, ustawień konfiguracyjnych itp. w spójny sposób, konotacji i denotacji.
- Przejrzystość danych – System jest odpowiedzialny za dostarczanie danych do aplikacji bez wiedzy użytkownika lub działań związanych z tym, gdzie system je przechowuje.
- Przejrzystość równoległości — system jest odpowiedzialny za wykorzystywanie wszelkich możliwości równoległości wykonywania zadań bez wiedzy lub interakcji użytkownika. Prawdopodobnie najtrudniejszy aspekt przejrzystości, opisany przez Tanenbauma jako „Święty Graal” dla projektantów systemów rozproszonych.
Komunikacja między procesami
Komunikacja międzyprocesowa (IPC) to implementacja ogólnej komunikacji, interakcji procesów i przepływu danych między wątkami i/lub procesami zarówno w obrębie węzła, jak i między węzłami w rozproszonym systemie operacyjnym. Wymagania dotyczące komunikacji wewnątrz węzła i między węzłami napędzają projektowanie IPC niskiego poziomu, co jest typowym podejściem do wdrażania funkcji komunikacyjnych wspierających przejrzystość. W tym sensie komunikacja międzyprocesowa jest najważniejszą koncepcją leżącą u podstaw niskopoziomowych rozważań projektowych rozproszonego systemu operacyjnego.
Zarządzanie procesem
Zarządzanie procesami zapewnia zasady i mechanizmy efektywnego i wydajnego współdzielenia zasobów między rozproszonymi procesami. Te zasady i mechanizmy obsługują operacje obejmujące alokację i cofanie alokacji procesów i portów do procesorów, a także mechanizmy uruchamiania, zawieszania, migracji, zatrzymywania lub wznawiania wykonywania procesów. Chociaż te zasoby i operacje mogą być lokalne lub zdalne względem siebie, rozproszony system operacyjny utrzymuje stan i synchronizację wszystkich procesów w systemie.
Na przykład równoważenie obciążenia jest powszechną funkcją zarządzania procesami. Równoważenie obciążenia monitoruje wydajność węzłów i jest odpowiedzialne za przenoszenie aktywności między węzłami, gdy system nie jest zrównoważony. Jedną z funkcji równoważenia obciążenia jest wybieranie procesu do przeniesienia. Jądro może wykorzystywać kilka mechanizmów selekcji, w tym wybór oparty na priorytetach. Ten mechanizm wybiera proces w oparciu o zasady, takie jak „najnowsze żądanie”. System realizuje politykę
Zarządzanie zasobami
Zasoby systemowe , takie jak pamięć, pliki, urządzenia itp., są rozproszone w całym systemie iw dowolnym momencie każdy z tych węzłów może być obciążony lekkim lub bezczynnym obciążeniem. Podział obciążenia i równoważenie obciążenia wymagają wielu decyzji zorientowanych na zasady, począwszy od znalezienia bezczynnych procesorów, kiedy przenieść i które przenieść. Istnieje wiele algorytmów pomagających w podejmowaniu tych decyzji; wymaga to jednak drugiego poziomu polityki decyzyjnej przy wyborze algorytmu najlepiej dopasowanego do scenariusza i warunków towarzyszących scenariuszowi.
Niezawodność
Rozproszony system operacyjny może zapewnić zasoby i usługi niezbędne do osiągnięcia wysokiego poziomu niezawodności lub zdolności do zapobiegania błędom i/lub odzyskiwania po nich. Błędy to defekty fizyczne lub logiczne, które mogą powodować błędy w systemie. Aby system był niezawodny, musi w jakiś sposób przezwyciężyć niekorzystne skutki usterek.
Podstawowe metody radzenia sobie z awariami obejmują unikanie awarii , tolerancję na awarie oraz wykrywanie i usuwanie awarii . Unikanie usterek obejmuje proaktywne działania podejmowane w celu zminimalizowania występowania usterek. Te proaktywne środki mogą przybierać formę transakcji , replikacji i kopii zapasowych . Tolerancja błędów to zdolność systemu do kontynuowania działania w przypadku wystąpienia błędu. W takim przypadku system powinien wykryć i odzyskać pełną funkcjonalność. W każdym przypadku podejmowane działania powinny dokładać wszelkich starań, aby zachować jednolity obraz systemu .
Dostępność
Dostępność to ułamek czasu, w którym system może odpowiedzieć na żądania.
Wydajność
Wiele wskaźników porównawczych określa ilościowo wydajność ; przepustowość, czas odpowiedzi, ukończenie zadania w jednostce czasu, wykorzystanie systemu itp. W przypadku rozproszonego systemu operacyjnego wydajność najczęściej sprowadza się do równowagi między równoległością procesów a IPC. [ Potrzebne źródło ] Zarządzanie szczegółowością zadania równoległości w rozsądnym stosunku do komunikatów wymaganych do wsparcia jest niezwykle skuteczne. [ Potrzebne źródło ] Skuteczne jest również określanie, kiedy migracja procesu do jego danych jest bardziej korzystna niż kopiowanie danych. [ potrzebne źródło ]
Synchronizacja
Współbieżne procesy mają nieodłączną potrzebę synchronizacji , która gwarantuje, że zmiany zachodzą w prawidłowy i przewidywalny sposób. Trzy podstawowe sytuacje określające zakres tej potrzeby:
- jeden lub więcej procesów musi zostać zsynchronizowanych w danym punkcie, aby jeden lub więcej innych procesów mogło być kontynuowanych,
- jeden lub więcej procesów musi czekać na warunek asynchroniczny, aby kontynuować,
- lub proces musi ustanowić wyłączny dostęp do współdzielonego zasobu.
Niewłaściwa synchronizacja może prowadzić do wielu trybów awarii, w tym utraty atomowości, spójności, izolacji i trwałości , impasu , blokady na żywo i utraty możliwości serializacji . [ potrzebne źródło ]
Elastyczność
Elastyczność w rozproszonym systemie operacyjnym jest zwiększona dzięki modułowej charakterystyce rozproszonego systemu operacyjnego oraz dzięki bogatszemu zestawowi usług wyższego poziomu. Kompletność i jakość jądra/mikrojądra upraszcza wdrażanie takich usług i potencjalnie umożliwia usługodawcom większy wybór dostawców takich usług. [ potrzebne źródło ]
Badania
Zreplikowany model rozszerzony na komponentowy model obiektowy
Projekt architektoniczny rozproszonego systemu operacyjnego E1 Rozproszony system operacyjny Cronus Projekt i rozwój rozproszonego systemu operacyjnego MINIX
Złożoność/ekspozycja zaufania poprzez zaakceptowaną odpowiedzialność
- Skala i wydajność w jądrze izolacji Denali.
Systemy zorientowane na wiele/wiele rdzeni
- Multikernel: nowa architektura systemu operacyjnego dla skalowalnych systemów wielordzeniowych.
- Corey: system operacyjny dla wielu rdzeni.
- Almos: Zaawansowany system operacyjny do zarządzania lokalizacją dla wielu rdzeni cc-NUMA.
Rozproszone przetwarzanie w ekstremalnych warunkach heterogeniczności
- Helios: heterogeniczne przetwarzanie wieloprocesorowe z jądrami satelitarnymi.
Efektywne i stabilne na wielu poziomach złożoności
- Teselacja: partycjonowanie czasoprzestrzenne w systemie operacyjnym klienta Manycore.
Zobacz też
- Obliczenia rozproszone
- HarmonyOS
- Plan 9 z Bell Labs
- Piekło
- MINIX
- Pojedynczy obraz systemu (SSI)
- Architektura systemów komputerowych
- Wielojądrowe
- Projekty systemów operacyjnych
- Nagroda Edsgera W. Dijkstry w dziedzinie przetwarzania rozproszonego
- Lista konferencji dotyczących przetwarzania rozproszonego
- Lista ochotniczych projektów komputerowych
Dalsza lektura
- Chow, Randy; Theodore Johnson (1997). Rozproszone systemy operacyjne i algorytmy . Addisona Wesleya. ISBN 978-0-201-49838-7 .
- Sinha, Pradeep Kumar (1997). Rozproszone systemy operacyjne: koncepcje i projektowanie . IEEE Naciśnij. ISBN 978-0-7803-1119-0 .
- Galli, Doreen L. (2000). Rozproszone systemy operacyjne: koncepcje i praktyka . Sala Prentice'a. ISBN 978-0-13-079843-5 .
Linki zewnętrzne