Samostabilizacja



Informacje, które udało nam się zgromadzić na temat Samostabilizacja, zostały starannie sprawdzone i uporządkowane, aby były jak najbardziej przydatne. Prawdopodobnie trafiłeś tutaj, aby dowiedzieć się więcej na temat Samostabilizacja. W Internecie łatwo zgubić się w gąszczu stron, które mówią o Samostabilizacja, a jednocześnie nie podają tego, co chcemy wiedzieć o Samostabilizacja. Mamy nadzieję, że dasz nam znać w komentarzach, czy podoba Ci się to, co przeczytałeś o Samostabilizacja poniżej. Jeśli informacje o Samostabilizacja, które podajemy, nie są tym, czego szukałeś, daj nam znać, abyśmy mogli codziennie ulepszać tę stronę.

.

Samostabilizujący lub siebie stabilizacji , jest właściwością systemu rozproszonego zawierającego kilka urządzenie może komunikować się ze sobą, co ma miejsce, gdy system został zainicjowany lub poważnie rozerwana w celu automatycznego powrotu do prawidłowego funkcjonowania ilość gotowych kroków obliczeniowych . Został zdefiniowany przez Edsgera Dijkstrę w 1974 roku . Zasadniczo analizowana w informatyce teoretycznej , samostabilizacja jest ukierunkowana na zastosowania w obszarach, w których interwencja człowieka w celu przywrócenia systemu po awarii jest niemożliwa lub w których lepiej się bez niej obejść: sieci komputerowe , czujniki sieci i systemy krytyczne , takie jak satelity .

Możliwe zastosowanie: sieci czujników

Sieci sensorowe jest zbiorem małych, autonomicznych maszynach czujników . Każdy czujnik posiada mikroprocesor , niewielką ilość pamięci o dostępie swobodnym , baterię , radio nadawczo-odbiorcze oraz jeden lub więcej przyrządów pomiarowych: termometr , higrometr itp. Celem takiej sieci jest automatyczne zestawienie pomiarów wykonanych przez poszczególne czujniki w celu ustalenia wyniku ogólnego. Wśród aplikacji sieci czujników można rozmieścić w lesie w celu ostrzegania w przypadku pożaru, w strefie konfliktu w celu wykrycia obecności wrogów lub w biotopie w celu obserwacji zwierząt bez niepokojenia ich. Ponieważ czujniki są ograniczone do podstawowych procesorów, ich moc obliczeniowa jest ograniczona. Ponadto ich baterie ulegają zmniejszeniu, a zużycie energii rośnie wraz z zasięgiem transmisji radiowych, co ogranicza odległość ich komunikacji. Ponieważ czujniki są używane głównie w trudno dostępnych miejscach, generalnie nie planuje się ingerencji w nie w celu wymiany baterii. Ogólnie informacje pochodzące z czujników są pobierane przez stację bazową (schemat obok), która ma większą moc obliczeniową i transmisyjną. Z reguły czujniki są stałe  : są umieszczone w określonym miejscu i nie mogą się poruszać.

Sieć czujników, aby była użyteczna, musi być autonomiczna. Czujniki muszą wymieniać informacje i przetwarzać je bez konieczności interwencji. Jednak może wystąpić wiele zakłóceń systemu. Na przykład czujnik może ulec awarii lub w okolicy mogą zostać rozmieszczone nowe czujniki. Samostabilizacja jest jednym z rozwiązań pozwalających zapewnić, że sieć czujników automatycznie wychodzi z tych zakłóceń.

Algorytmy samostabilizujące mogą rozwiązywać podstawowe problemy specyficzne dla sieci sensorowych, w szczególności multipleksowanie z podziałem czasu (czujniki zgadzają się na szczeliny, w których nadaje tylko jeden z nich), ukierunkowana komunikacja rozgłoszeniowa (metoda routingu odpowiednia dla sieci sensorowych) oraz działanie pomimo faktu że niektóre czujniki mogą być okresowo odłączane od reszty sieci. Podobnie, rozwiązania samostabilizujące przystosowane do sieci czujników istnieją w przypadku konwencjonalnych problemów, takich jak kolorowanie wykresów , obliczanie maksymalnej stabilności lub drzewa rozpinającego , a nawet synchronizacja zegara .

Istnieją również sieci czujników mobilnych , w których czujniki są umieszczane na agentach zdolnych do poruszania się. Daje to nowy sposób obserwacji dzikich zwierząt bez zakłócania ich zachowania poprzez instalowanie czujników już nie w biotopie, ale na samych zwierzętach. W ramach tych ustalono niezbędne i wystarczające warunki do rozwiązania problemu samostabilizującego się zliczania polegającego na określeniu liczby czujników obecnych w układzie. Problem ten wiąże się z problemem protokołów populacyjnych , które zostały sformułowane osobno i polegają na traktowaniu systemu jako zbioru agentów o bardzo ograniczonej pamięci, poruszających się losowo, zdolnych do wymiany informacji, gdy się spotkają.

Definicje

Samostabilizację definiuje się w formalizmie algorytmów rozproszonych , których jest gałęzią. Poniższe definicje ograniczają się do tego, co jest konieczne do scharakteryzowania samostabilizacji.

Model

Układu jest zestaw n procesów . Każdy proces ma zmienne, w których przechowywane są informacje o procesie. Zbiór zmiennych procesu to jego stan .

Istnieją dwa modele reprezentujące komunikację między procesami. Pierwszy model to przekazywanie wiadomości  : procesy mogą komunikować się, wysyłając do siebie komunikaty kanałami FIFO . W tym przypadku istnienie lub brak kanału między dwoma danymi procesami jest definiowane przez topologię sieci . Stan kanału jest definiowany jako sekwencja zawartych w nim komunikatów. Drugi model to pamięć współdzielona . W tym przypadku jest kilka wspólnych rejestrów i konieczne jest zdefiniowanie, które procesy mogą odczytywać i zapisywać do których rejestrów. Stan rejestru to zawarta w nim wartość. Konfiguracja systemu jest gromadzenie stanu wszystkich procesów i komunikacji.

Etap C → C „układu definiuje się jako wykonywania przejścia w procesie tak, że układ jest początkowo w konfiguracji C, a następnie przez dokonanie działanie przechodzi do konfiguracji C”. Podczas przejścia proces może odebrać wiadomość (odp. Odczytać współdzielony rejestr w przypadku modelu z pamięcią współdzieloną), zmienić stan i wysyłać wiadomości (odp. Zapis do współdzielonych rejestrów ).

Wykonanie nieskończona sekwencja naprzemiennych konfiguracji i etapy: E = (C 0 , A 1 c 1 , A 2 , C 2 , ...), takie, że dla i> 0 działanie A i sprawia, że układ odejść od konfiguracji c i-1 do konfiguracji c i . Mówi się, że jest sprawiedliwy, jeśli nie zawiera nieskończonej sekwencji kroków, podczas których można by wykonać określone przejście, ale nigdy nie jest. Innymi słowy, w uczciwym wykonaniu żaden proces nie jest pozbawiony możliwości dokonania jakiejś zmiany.

Samostabilizacja

Dla każdego systemu samostabilizującego się definiujemy zbiór ℒ legalnych egzekucji . Ten zestaw reprezentuje przebiegi, w których system zawsze zachowuje się poprawnie. Mówi się, że konfiguracja c jest bezpieczna w odniesieniu do ℒ wtedy i tylko wtedy, gdy jakiekolwiek wykonanie rozpoczynające się od c jest w ℒ. System stabilizuje się samoczynnie w kierunku ℒ wtedy i tylko wtedy, gdy jakiekolwiek wykonanie tego systemu, niezależnie od konfiguracji początkowej, osiągnie konfigurację bezpieczną w odniesieniu do ℒ.

Podstawowa własność

System stabilizuje się samoczynnie wtedy i tylko wtedy, gdy możemy skojarzyć z dowolną konfiguracją wartość pobraną w pierścieniu Noether w taki sposób, że każdy krok wykonania rozpoczynający się w niezabezpieczonej konfiguracji wartości v powoduje przejście systemu do konfiguracji o wartości v ' <v, a niższe wartości pierścienia odpowiadają bezpiecznym konfiguracjom. Ta właściwość, zademonstrowana przez Goudę, może być użyta do wykazania, że ​​algorytm stabilizuje się samoczynnie, w taki sam sposób, w jaki można go użyć do wykazania, że ​​algorytm sekwencyjny się zatrzymuje .

Miary złożoności

Pomiar wydajności algorytmu jest przedmiotem analizy złożoności algorytmów . Definiuje metody obliczania wydajności algorytmu, głównie wzdłuż dwóch osi: czasu obliczeń i ilości wykorzystanej pamięci . W przypadku samostabilizacji, czas stabilizacji definiuje się jako najdłuższy czas, jaki może zająć systemowi osiągnięcie bezpiecznej konfiguracji. W systemie asynchronicznym , który nie ma pojęcia czasu, definiujemy rundę jako najkrótszą sekwencję kroków wykonania, podczas których każdy proces jest aktywowany przynajmniej raz, co daje jednostkę, w której możemy wyrazić czas stabilizacji. Inne miary złożoności zdefiniowane w systemach rozproszonych mają również zastosowanie w przypadku samostabilizacji: w ten sposób można dążyć do wymiany jak najmniejszej liczby komunikatów lub wykorzystania minimalnej ilości pamięci w każdym procesie.

Interpretacja w praktyce

Po każdym incydencie, który zmienia stan systemu, samostabilizacja zapewnia, że ​​po pewnym okresie działania, bez dalszych incydentów, automatycznie odzyska on prawidłowe działanie, a tym samym poprawne działanie. W szczególności pozwala to tolerować każdą przejściową awarię , dowolną modyfikację stanu procesu podczas wykonywania. Taka awaria może być spowodowana np. Uderzeniem promienia kosmicznego w układ scalony . Może to być również spowodowane złym działaniem systemu, zwłaszcza przegrzaniem lub przetaktowaniem . Przejściowa awaria pozostawia system w jakiejś konfiguracji, która jest całkowicie nieprzewidywalna. Ten automatyczny powrót do normalności jest szczególnie pożądany w systemie, w którym nie jest możliwe zaangażowanie technika, na przykład satelity.

W większości systemów komputerowych sam program jest danymi przechowywanymi w pamięci RAM. W efekcie jest podatny na przejściowe awarie, co zapobiega samostabilizacji. Rozwiązaniem jest zapisanie programu w pamięci ROM . Jeśli program wymaga załadowania do pamięci RAM, watchdog może w razie potrzeby załadować go ponownie z pamięci ROM. Inną możliwością jest wykonanie programu bezpośrednio w postaci układu scalonego.

Dijkstra Token Ring i historia

Pojęcie samostabilizacji po raz pierwszy sformułował Dijkstra w 1974 r. W artykule, w którym przedstawiono trzy algorytmy samostabilizujące oparte na koncepcji token ringów . Zasada token ring polega na rozwiązaniu problemu wzajemnego wykluczenia poprzez krążenie tokena , co stanowi prawo jedynego procesu, który jest jego właścicielem, do wykonania akcji, która byłaby problematyczna, gdyby kilka procesów wykonywało ją w tym samym czasie, np. przykład wysyłania tekstu do drukarki  : proces, który chce drukować, musi najpierw czekać na odebranie tokena, a następnie wysłać swój tekst do drukarki; po czym traci żeton. W przypadku samostabilizującego się token ringa, jeśli system zostanie zakłócony przez wprowadzenie jednego lub więcej dodatkowych tokenów, samoczynnie naprawi się po awarii usuwając wszystkie tokeny obecne na ringu, z wyjątkiem jednego.; następnie kontynuuje wykonywanie, przekazując jedyny pozostały token, jakby nigdy nie było innego.

N procesów (z nieparzystym n ), ponumerowanych od 0 do n-1, jest połączonych w pierścień , tj. Proces ia jako prawy sąsiad i + 1 modulo n i jako lewy sąsiad i-1 modulo n. Innymi słowy, lewy sąsiad procesu 0 to proces n-1, a prawy sąsiad procesu n-1 to proces 0. Każdy proces ma stan całkowity między 0 a 2. Oznaczamy przez É stan d 'proces, D stan sąsiada po prawej stronie i G stan sąsiada po lewej stronie.

Przedstawiony poniżej algorytm jest trzecim w artykule, który Dijkstra uważa za najbardziej skuteczny. Podano bezpieczne wykonanie, aby pokazać, jak system zachowuje się normalnie, a następnie rozwiązano problem usunięcia nadliczbowych uprawnień.

Obsługa z jednym uprawnieniem

Na każdym etapie wykonywania proces jest wybierany arbitralnie przez program planujący . W praktyce ten harmonogram zależy od sprzętu, systemu operacyjnego i środowiska, w którym działa; dlatego jego zachowanie jest nieprzewidywalne. Arbitralność tego wyboru jest podstawą początkowej motywacji Dijkstry, który bada, czy system może zachowywać się poprawnie pomimo sterowania rozproszonego . W tym algorytmie tylko te procesy, które mają uprawnienia, mogą reagować na ich wybór, zmieniając stan. Uprawnienia i związane z nimi zmiany stanu określają następujące zasady:

  1. Dla procesu 0: jeśli (É + 1) mod 3 = D, to É ← (É-1) mod 3
  2. Dla procesu n-1: jeśli G = D i (G + 1) mod 3 ≠ É, to É ← (G + 1) mod 3
  3. W przypadku wszystkich innych procesów:
    • jeśli (É + 1) mod 3 = G to É ← G
    • jeśli (É + 1) mod 3 = D to É ← D

W tym przypadku przywilej reprezentuje fakt, że proces jest właścicielem tokenu. Aby zrozumieć, jak działa ten algorytm, gdy istnieje wyjątkowy przywilej, rozważ przypadek odwrotny. Numery procesów są czarne, stany niebieskie. Proces 0 ma przywilej, zmaterializowany na czerwono, zgodnie z regułą 1. Rzeczywiście, jego stan to 1; dodając 1, otrzymujemy 2, czyli stan jej sąsiada po prawej stronie. Z drugiej strony żaden inny proces nie ma przywileju: proces 4, ponieważ stany jego sąsiadów nie są równe, inne procesy, ponieważ żaden proces nie ma stanu (2 + 1) mod 3 = 0.

Dlatego podczas pierwszego kroku wykonywania, to proces 0 zmienia stan. Przy zastosowaniu reguły 1 przyjmuje stan 1-1 = 0. Daje to przywilej dla procesu 1, który w związku z tym zmienia stan podczas następnego kroku wykonywania. Kontynuuje w następujący sposób:

W konfiguracji (5) proces 4 ma to uprawnienie. Dlatego zmienia stan przy zastosowaniu reguły 2, przyjmując stan 0 + 1 = 1. Daje to przywilej przetwarzania 3.

Uprawnienie było przekazywane, krok po kroku, wszystkim procesom. Konfiguracja (9) jest równoważna konfiguracji (1); system jest zatem gotowy do ponownego przekazania przywileju na tej samej zasadzie. Spostrzeżenie, że „wszystko idzie dobrze”, nieoficjalnie pokazuje, że ta egzekucja jest legalna.

Operacja z wieloma uprawnieniami

Aby zrozumieć, w jaki sposób algorytm gwarantuje, że liczba uprawnień z konieczności osiągnie 1, musimy najpierw zauważyć, że reguły nie pozwalają na żadną sytuację, w której nie byłoby żadnego przywileju. Rzeczywiście, na mocy reguły 3, w takiej konfiguracji, wszystkie procesy o numerach od 1 do n-2 muszą mieć ten sam stan e; ponadto procesy 0 i n-1 muszą mieć albo stan e, albo stan (e-1) mod 3. Teraz, jeśli proces 0 ma stan (e-1) mod 3, to ma przywilej; jeśli proces n-1 ma stan (e-1) mod 3, to ma uprawnienia.

Dowód poprawności tego algorytmu, opublikowany w 1986 roku , polega na tym, że jeśli istnieje kilka przywilejów, to ich liczba musi się koniecznie zmniejszyć. W tym celu Dijkstra pokazuje, że między dwiema zmianami stanu procesu n-1 nieuchronnie zachodzi zmiana stanu procesu 0. Następnie udowadnia, że ​​nie ma sekwencji nieskończonych kroków, w których proces 0 nie zmienia stanu. Na koniec wymienia możliwe scenariusze zachowania przywileju znajdującego się najbardziej po lewej stronie na ringu i demonstruje, że ten przywilej zanika. Przez nawrotu , po pewnej liczbie kroków, jest w końcu tylko jeden przywilej.

Aby zobaczyć, jak znikają nadliczbowe uprawnienia, wystarczy zobaczyć, w normalnym wykonaniu powyżej, że uprawnienia przepływają od lewej do prawej z procesu 0 i od prawej do lewej z procesu n-1. W rezultacie, jeśli na ringu są dwa przywileje, kończą się spotkaniem. Sytuację tę zilustrowano powyżej pierwszym przypadkiem kolizji, w którym nie jest zaangażowany ani proces 0, ani proces n-1. W tym przypadku, gdy tylko jeden z procesów uprzywilejowanych zmieni stan, traci swoje uprawnienia, podczas gdy drugi proces zachowuje swoje: liczba uprawnień zmniejszyła się o 1.

Przypadek kolizji procesów 0 i 1 jest szczególny (drugi przypadek kolizji powyżej). Rzeczywiście, jeśli 1 zmienia stan, jego przywilej po prostu zmienia „kierunek”, przechodząc od lewej do prawej. Jednak może przejść przez proces n-1 i dlatego musi zniknąć. Jeśli jest to proces 0, który zmienia stan w podobny sposób, jego przywilej przechodzi na proces n-1.

Dijkstra nie porusza kwestii czasu stabilizacji swojego algorytmu ani w swoim oryginalnym artykule z 1974 roku, ani w artykule z 1986 roku, w którym podaje dowód poprawności. W 2007 roku zespół niezwiązany z Dijkstrą wykazał, że algorytm ten stabilizuje się w krokach O (n²).

Nowa dynamika

Chociaż zaprezentowany powyżej algorytm został wykorzystany w produkcji, artykuł Dijkstry przeszedł prawie niezauważony, dopóki Leslie Lamport , zaproszony w 1984 roku do wygłoszenia prezentacji na konferencji PODC, wymienił go jako szczególnie wartego uwagi. Samostabilizacja staje się wówczas odrębnym tematem w algorytmach rozproszonych, które Lamport uważa za jeden z jego najważniejszych wkładów w informatykę. Studenci bronią prac doktorskich z zakresu samostabilizacji i specjalizują się w badaniach naukowych na ten temat. Samostabilizacja jest nauczana na uniwersytecie w ramach zajęć z rozproszonych algorytmów.

W 2000 roku ukazała się Self-Stabilization , książka napisana przez Shlomi Dolev, pierwsza w całości poświęcona samostabilizacji. Następnie kilka rozproszonych algorytmów i podręczników programowania poświęca rozdział temu tematowi. Dijkstra otrzymał nagrodę PODC Influential Article Award za swój artykuł z 1974 roku w 2002 roku , na krótko przed śmiercią. Od następnego roku, ku jego pamięci , nagroda ta została przemianowana na Nagrodę Dijkstry .

Międzynarodowe spotkanie na temat samostabilizacji rozpoczęło się w 1989 roku pod nazwą WSS, Workshop on Self-Stabilizing Systems . W 2003 roku , po pięciu edycjach warsztatów, spotkanie stało się renomowaną międzynarodową konferencją SSS, Symposium on Self-Stabilizing Systems . W 2005 roku konferencja poszerzyła swoją tematykę i przekształciła się w Sympozjum Stabilizacji, Bezpieczeństwa i Bezpieczeństwa Systemów Rozproszonych . Od wydania w 2003 r. Materiały wydawane są w formie książkowej .

Budowa układów samostabilizujących się

Badania nad samostabilizacją pozwalają lepiej zrozumieć, w jaki sposób można zbudować algorytm samostabilizujący. Można go uzyskać automatycznie z klasycznego algorytmu rozproszonego za pomocą stabilizatora lub przez zestawienie kilku algorytmów, które same się stabilizują. Z drugiej strony analiza zagadnienia pracy niskopoziomowej wskazuje na warunki, jakie musi spełniać sprzęt, aby autostabilizacja mogła funkcjonować.

Korzystanie ze stabilizatora

Stabilizator to algorytm, który powoduje samostabilizację dowolnego algorytmu rozproszonego. Najlepszym znanym rozwiązaniem dla osiągnięcia stabilizator jest zapewnienie wyróżniającą procesowi rolę badania całego systemu, które obejmuje uzyskiwanie i rejestrowanie stanu innymi procesami, a następnie, w razie potrzeby, układu zerowania systemu. Zerowej w sposób samostabilizujący droga. Ta metoda jest zbyt kosztowna w pamięci i liczbie wymienianych wiadomości, aby była wykonalna w praktyce.

Dobra kompozycja

Ponowne wykorzystanie algorytmów to klasyczne pytanie w inżynierii oprogramowania . W kontekście samostabilizacji jest on postawiony w następujący sposób: zakładając podane algorytmy samostabilizujące się, czy można je połączyć w celu uzyskania algorytmu globalnego, czy też za każdym razem musimy wszystko przepisywać od początku Odpowiedni skład daje odpowiedź: pod pewnymi warunkami możliwe jest ponowne wykorzystanie algorytmów autostabilizujących.

Wprowadzony przez Shlomi Dolev, Amos Israeli i Shlomo Moran w 1989 r. I opracowany przez tych samych autorów w 1993 r. , Opiera się na dwóch obserwacjach. Po pierwsze, algorytm Q, który nie zapisuje zmiennych odczytywanych przez algorytm, nie może mu przeszkadzać w celu ustabilizowania. Po drugie, ponieważ P jest samostabilizujący się, Q może odczytywać zmienne P podczas własnej stabilizacji: w istocie z definicji gwarantuje się, że wartości tych zmiennych w końcu staną się poprawne; od tego momentu Q stabilizuje się normalnie.

Możliwe jest zatem połączenie algorytmów P i Q, po prostu dodając ich kody i zmienne, w celu utworzenia nowego algorytmu, oznaczonego P⊕Q (patrz diagram obok). Ten nowy algorytm sam się stabilizuje, pod warunkiem, że żaden z algorytmów nie może blokować drugiego; dlatego konieczne jest wymaganie, aby w każdym wykonaniu systemu globalnego każdy z dwóch algorytmów wykonywał nieskończoną liczbę kroków. Ten ostatni warunek gwarantuje uczciwość uporządkowania między dwoma algorytmami, stąd pojęcie sprawiedliwego składu .

W ten sposób możliwe jest zaprojektowanie algorytmu samostabilizującego się w sposób modułowy , poprzez podzielenie go na wyspecjalizowane podalgorytmy, które należy skomponować w celu uzyskania ostatecznego algorytmu. Jeśli dla danego zadania został już napisany algorytm, można go ponownie wykorzystać. Na przykład, jeśli chcemy rozprowadzić token w systemie, którego topologia nie znajduje się w pierścieniu, wystarczy skomponować algorytm Dijkstry z algorytmem konstrukcji topologii, z którego można wyodrębnić pierścień.

Projektowanie urządzeń samostabilizujących się

Aby system był naprawdę samostabilizujący się, sprzęt, na którym działa, musi być do tego zaprojektowany. Rzeczywiście, sprzęt lub jego oprogramowanie układowe może zawierać błędy, które powodują awarię . Dlatego konieczne jest zapewnienie, aby mikroprocesor nie został zablokowany przez wejście w stan, z którego nie może już wyjść. Badania w tej dziedzinie pozwoliły na precyzyjną identyfikację warunków jakie musi spełniać mikroprocesor, poszczególne podstawowe komponenty sprzętowe oraz oprogramowanie, które z nich korzysta, tak aby umożliwiały samostabilizację: mikroprocesor, system operacyjny, sterowniki urządzeń oraz system plików . Ogólnie rzecz biorąc, ma to na celu zapewnienie, że żadne blokowanie nie jest możliwe, ani w stanie, z którego system nie może się wydostać, ani w zestawie stanów, w których byłby nieskończenie zapętlony . Stabilizacji zabezpieczonego kompilator został zaprojektowany tak, by można pisać programy, które wykorzystują te sprzętu i oprogramowania: jeśli jest on wyposażony samodzielnego stabilizowania programu, produkuje kod maszynowy poszanowaniem tę samą koncepcję blokowania unikania. Na podstawie tych wyników złożono patent.

Warianty samostabilizacji

W zależności od okoliczności i pojawiających się problemów samostabilizację czasami uważa się za niepotrzebnie restrykcyjną lub wręcz przeciwnie, za niewystarczająco silną. W tym miejscu pojawiają się zmiany, rozluźnienia lub wzmocnienia podstawowej definicji.

Pseudostabilizacja

Pseudostabilizacja, czyli pseudostabilizacja, to rozluźnienie ograniczeń samostabilizacji. Zamiast wymagać, aby każde wykonanie kończyło się na ℒ, wymagamy, aby każde wykonanie wykonało zadanie abstrakcyjne , czyli predykat w systemie. Na przykład, aby określić wzajemne wykluczenie, można wymagać, aby wszystkie procesy w systemie miały dane przywileje nieskończenie często, ale dwa procesy nigdy go nie miały w tym samym czasie. Nie pozwala to na zdefiniowanie legalnych egzekucji, ponieważ muszą one opierać się na stanie systemu; Jednak w definicji zadania abstrakcyjnego jest to niemożliwe, ponieważ nie wiemy nic o sposobie realizacji procesów. Pseudostabilizacja jest słabsza i mniej restrykcyjna niż samostabilizacja, ponieważ każdy system samostabilizujący jest pseudostabilizujący, ale sytuacja odwrotna jest fałszywa. Burns, Gouda i Miller, którzy wprowadzili to pojęcie w 1993 roku, uważają, że w praktyce jest ono ogólnie wystarczające.

Klasycznym przykładem pseudostabilizacji zilustrowanym powyżej jest system, w którym dwa procesy wymieniają komunikaty. Podczas normalnej pracy system znajduje się w stanie A; wysyła komunikat, który wprowadza system w stan S; drugi proces odbiera komunikat, który wprowadza system w stan B; drugi proces z kolei wysyła komunikat, który wprowadza system w stan T; pierwszy proces odbiera komunikat, a system jest z powrotem w stanie A. Problem polega na tym, że kanał, przez który przechodzą komunikaty, może utracić komunikat, w którym to przypadku system odzyskuje z tej utraty przechodząc w stan A '. Definicja A 'jest całkowicie zależna od metody zastosowanej w celu odzyskania wiadomości po utracie wiadomości; jest zatem nieznany na poziomie zadania abstrakcyjnego. Od A 'realizacja przebiega w podobny sposób: A', S ', B', T ', A' itd.

Ponieważ może nastąpić utrata wiadomości, system nie stabilizuje się samoczynnie w kierunku pętli A, S, B, T. Z drugiej strony ta utrata wiadomości może nigdy nie nastąpić, więc system nie jest samostabilizujący się. stabilizowanie albo w kierunku pętli A ', S', B ', T', ani w kierunku zbioru możliwych stanów. Z drugiej strony, system ten, nie będąc samostabilizującym się, jest rzeczywiście pseudostabilizujący dla abstrakcyjnego zadania, zgodnie z którym dwa procesory kolejno wymieniają komunikaty, ponieważ utrata wiadomości nie podważa tej definicji.

Superstabilizacja

Idea superstabilizacji, wprowadzona przez Shlomi Dolev i Ted Herman, polega na rozważeniu zmiany topologii, to znaczy dodania lub usunięcia łącza komunikacyjnego w systemie, jako specjalnego zdarzenia, o którym powiadamia się każdy proces, którego to dotyczy, i co wyzwala procedurę zwaną sekcją przerwania . W rezultacie system jest w stanie zapewnić, że określona właściwość bezpieczeństwa , predykat zaliczenia , zawsze pozostaje zweryfikowana podczas stabilizacji, gdy następuje zmiana topologii z bezpiecznej konfiguracji. To wzmacnia gwarancje, jakie daje system w obliczu bardzo częstych w praktyce awarii. Kilka podstawowych problemów algorytmicznych rozproszonych zostało rozwiązanych przez superstabilizujący algorytm, na przykład wzajemne wykluczanie, konstrukcja drzewa rozpinającego i konstrukcja drzewa Steinera .

Natychmiastowa stabilizacja

Zamiast pozwalać systemowi na stosowanie swojego algorytmu i korygowanie go w razie potrzeby, można zrobić odwrotnie: stale monitorować system pod kątem niespójności i natychmiast je korygować, zanim pozwoli na wykonanie kroku. W ten sposób system zawsze zachowuje się zgodnie ze swoją specyfikacją: samostabilizuje się w zerowych krokach. System natychmiastowej stabilizacji jest zatem doskonale odporny na przejściowe awarie, bez zauważenia przez obserwatora, że ​​wystąpiły.

Na razie opracowano tylko kilka podstawowych algorytmów stabilizujących się błyskawicznie, na przykład dla problemu dogłębnej podróży dowolnej zidentyfikowanej sieci lub komunikacji punkt-punkt w sieci komutowanej . Możliwe jest natychmiastowe ustabilizowanie dowolnego algorytmu samostabilizującego się w pamięci współdzielonej, ale transformacja wiąże się z dużymi kosztami. Wreszcie, chwilowa stabilizacja może być zastosowana w systemach przekazywania wiadomości, ale tutaj znowu, za znaczną dodatkową opłatą.

Podejście probabilistyczne

W rozszerzonej wersji swojego przełomowego artykułu Dijkstra stwierdza, że ​​nie może istnieć samostabilizujący się algorytm token ring, w którym wszystkie procesy są takie same, chyba że rozmiar pierścienia jest liczbą pierwszą . W 1990 roku Ted Herman przedstawił sposób na przezwyciężenie tego ograniczenia: zmuszając planistę do zachowywania się już nie w sposób niedeterministyczny, ale w sposób probabilistyczny , jako dowód koncepcji za pomocą następującego probabilistycznego samostabilizującego się algorytmu token ring: liczba procesów jest nieparzysta, a stan każdego procesu to jeden bit , który może zatem wynosić tylko 0 lub 1. Proces ma token wtedy i tylko wtedy, gdy jego stan jest taki sam, jak jego sąsiad po lewej stronie. W poniższej konfiguracji (1) proces 0 ma token, ponieważ jego stan to 1, podobnie jak proces 4, i żaden inny proces nie ma tokenu. Każdy proces, który ma token, prawdopodobnie zostanie wybrany przez program planujący do zmiany stanu. W tym przypadku jej nowy stan jest losowany: 0 lub 1, z prawdopodobieństwem ½.

Interpretacja tej zasady w praktyce jest taka, że ​​proces ma szansę jeden do dwóch na zatrzymanie swojego tokena i jeden na dwa na przekazanie go do następnego procesu na pierścieniu. W konfiguracji (1), jeśli proces, który ma token ściąga stan 1, nic się nie zmienia. Jeśli wyciągnie stan 0, nie ma już żetonów, ponieważ jego nowy stan jest identyczny z stanem sąsiada po lewej stronie. W przeciwieństwie do tego proces 1 ma teraz token, ponieważ ma ten sam stan, co jego lewy sąsiad.

W konfiguracji (2) trzy procesy mają token. W zależności od wybranego przez planistę procesu i wyniku losowania, po jednym kroku wykonania mogą pozostać trzy żetony lub tylko jeden. Tak więc, jeśli zostanie wybrany proces 1, może albo zachować swój token, albo przekazać go do procesu 2, co nie zmienia liczby tokenów. Ale jeśli zostanie wybrany proces 0 i ściągnie stan 0, nie tylko straci swój żeton, ale także proces 1 straci swój żeton. Niedeterministyczny planista, taki jak ten używany przez Dijkstrę, mógłby wymusić na procesach przekazanie ich tokenów bez ich utraty, ale planista probabilistyczny nie może, ponieważ utrata tokena ma ściśle dodatnie prawdopodobieństwo: podczas nieskończonej realizacji występuje zatem z prawdopodobieństwo 1.

W przypadku algorytmu probabilistycznego nie jest możliwe obliczenie czasu stabilizacji, ponieważ zależy to od losowania. Z drugiej strony można obliczyć jego oczekiwanie . Początkowo Herman pokazuje, że oczekiwany czas stabilizacji jego algorytmu to O (n² log n) kroków. Bardziej precyzyjne obliczenia pokazują następnie, że to oczekiwanie wynosi dokładnie Θ (n²) kroków. Nowsze badania dostarczają ogólnych ram opartych na teorii łańcucha Markowa do wykonywania tych obliczeń złożoności w modelu probabilistycznym.

Uwagi i odniesienia

Uwagi

  1. Niektórzy autorzy, na przykład Shlomi Dolev w swojej książce Self-Stabilization , wspominają o poprzedniej publikacji z 1973 roku, ale nie pojawia się ona w żadnym oficjalnym katalogu. Z drugiej strony Dijkstra w swoim artykule z 1986 roku A Belated Proof of Self-Stabilization wskazuje, że opublikował swój przełomowy artykuł w 1974 roku.
  2. „  Uważam, że wskrzeszenie genialnej pracy Dijkstry nad samostabilizacją jest jednym z moich największych wkładów w informatykę.  " (" Widzę wskrzeszenie wspaniałej pracy Dijkstry nad samostabilizacją jako jeden z moich największych wkładów w rozwój komputera ") w Leslie Lamport, The Writings of Leslie Lamport  " (dostęp 10 stycznia 2010 )
  3. Przykład procesorów Intel Core 2  : (en) [PDF] „  Procesor Intel® Core ™ 2 Duo z serii E8000Δ i E7000Δ - Aktualizacja specyfikacji  ” , Intel (dostęp: 29 stycznia 2010 )

Bibliografia

  1. str.  5-9
  2. p.  9
  3. str. 31
  4. p.  11
  5. str.  1
  6. str.  121
  7. str.  22
  8. str.  24
  9. str.  45
  10. str.  47
  11. str.  159
  • Odniesienia do prac doktorskich
  1. (w) Ted Herman , adaptacyjność rozproszona poprzez konwergencję , University of Texas at Austin (rozprawa informatyczna)
  2. (w) Shlomi Dolev , Self-Stabilization of Dynamic Systems , Technion, Haifa (rozprawa informatyczna)
  3. (w) George Varghese , Self-stabilization by Local Checking and Correction , University of California, San Diego in La Jolla (praca doktorska)
  4. Sébastien Tixeuil , Efficient self-stabilizacja , Uniwersytet Paris Sud 11 (praca doktorska w dziedzinie informatyki),( czytaj online )
  • Inne referencje
  1. (w) Holger Karl i Andreas Willig , Protocols and Architectures for Wireless Sensor Networks , Wiley-Blackwell,, 524  s. ( ISBN  978-0-470-51923-3 , prezentacja online )
  2. (w) Liyang Yu , Neng Wang i Xiaoqiao Meng , „  Wykrywanie pożarów lasów w czasie rzeczywistym za pomocą bezprzewodowych sieci czujników  ” , Materiały z Międzynarodowej Konferencji na temat komunikacji bezprzewodowej, sieci i komputerów przenośnych ,, s.  1214-1217
  3. Randall Parker, „  US Military Sensor Network In Iraq Invasion Performed Poorly  ”, ParaPundit (dostęp 12 stycznia 2010 )
  4. David Greig, „  Hełm żołnierza, który namierza wrogich snajperów  ” , Gizmag (dostęp 12 stycznia 2010 )
  5. (w) Jean Kumagai , „  Życie ptaków (bezprzewodowa sieć czujników do badań ptaków)  ” , IEEE Spectrum , vol.  41, n o  4,, s.  42-49
  6. (w) Ted Herman , „  Modele samostabilizacji i sieci czujników  ” , 5th International Workshop on Distributed Computing ,, s.  205-214
  7. (w) Mahesh Arumugam i S. Sandeep Kulkarni , „  Self-stabilizing Deterministic TDMA for Sensor Networks  ” , druga międzynarodowa konferencja nt. Rozproszonych komputerów i technologii internetowych ,, s.  69-81 ( czytaj online [PDF] )
  8. (w) Doina Bein i Ajoy Kumar Datta , „  Samostabilizujący się ukierunkowany protokół transmisji dla sieci sensorowych  ” , warsztaty CPPI ,, s.  69-76 ( czytaj online [PDF] )
  9. (w) Chalermek Intanagonwiwat Ramesh Govindan i Deborah Estrin , „  Dyfuzja kierowana: skalowalny i niezawodny paradygmat komunikacji dla sieci czujników  ” , MOBICOM ,, s.  56-67
  10. (w) Ted Herman , V. Sriram Pemmaraju Laurence Pilard i Morten Mjelde , „  Temporal Partition in Sensor Networks  ” , Proceedings of the 9th International Symposium on Stabilization, Safety, and Security of Distributed Systems ,, s.  325-339
  11. (en) Christoph Weyer , Volker Turau , Andreas Lagemann i Jörg Nolte , „  Programming Wireless Sensor Networks in a Self-Stabilizing Style  ” , Proceedings of the Third International Conference on Sensor Technologies and Applications ,
  12. (w) Ted Herman i Chen Zhang , „  Best Paper: Stabilizing Clock Synchronization for Wireless Sensor Networks  ” , 8th International Symposium on Stabilization, Safety, and Security of Distributed Systems ,, s.  335-349
  13. „  The ZebraNet Wildlife Tracker  ” (dostęp 12 stycznia 2010 )
  14. (w) Philo Juang , Hidekazu Oki , Yong Wang , Margaret Martonosi , Li-Shiuan Peh i Daniel Rubenstein , „  Energy-Efficient Computing for Wildlife Tracking: Design Tradeoffs and Early Experiences with ZebraNet  ” , Proceedings of the Tenth International Conference on Architectural Wsparcie dla języków programowania i systemów operacyjnych ,( przeczytaj online [PDF] )
  15. (w) Joffroy Beauquier Julien Clément Stéphane Messika Laurent Rosaz i Brigitte Rozoy , „  Samostabilizujące się liczenie w mobilnych sieciach sensorowych ze stacją bazową  ” , 21. międzynarodowe sympozjum na temat obliczeń rozproszonych ,, s.  63-76
  16. (w) Joffroy Beauquier Julien Clément Stéphane Messika Laurent Rosaz i Brigitte Rozoy , „  Self-stabilizing Counting in Mobile Sensor Networks with a Base Station  ” , Proceedings of the 26th Annual ACM Symposium on Principles of Distributed Computing ,, s.  396-397
  17. (w) Dana Angluin James Aspnes , Michael J. Fischer i Hong Jiang , „  Samostabilizujące się protokoły populacji  ” , ACM Transactions on Autonomous and Adaptive Systems , vol.  3, n O  4,
  18. (w) Mohamed G. Gouda , Triumph and Tribulation of Stabilization System  " , Proceedings of the 9th International Workshop on Distributed Algorithms ,, s.  1-18
  19. (w) Christos H. Papadimitriou , Złożoność obliczeniowa , Addison Wesley,, 523  str. ( ISBN  978-0-201-53082-7 )
  20. (w :) James F. Ziegler , „  Ziemskie promienie kosmiczne  ” , IBM Journal of Research and Development , tom.  40, n o  1,, s.  19-40
  21. (i) Shlomi Dolev i Yinnon A. Haviv , „  samostabilizujących mikroprocesora: Analiza i pokonywanie miękkie błędów  ” , IEEE Transactions on Computers , vol.  55, n o  4,, s.  385-399
  22. (en) Edsger Wybe Dijkstra , „  Samostabilizujące systemy pomimo rozproszonej kontroli  ” , Communications of the ACM , vol.  17 N O  11, s.  643-644 ( czytaj online [PDF] )
  23. (w) Nancy Lynch , Distributed Algorithms , Morgan Kaufmann,, 904  str. ( ISBN  978-1-55860-348-6 ) , str.   255
  24. (in) Edsger Wybe Dijkstra , „  A spóźniony dowód samostabilizacji  ” , Distributed Computing , Vol.  1, N O  1,, s.  5-6 ( czytaj online [PDF] )
  25. (w) Viacheslav Chernoy Mordechai Shalom i Shmuel Zaks , „  On the Performance of Dijkstra's Third Self-stabilizing Algorithm for Mutual Exclusion.  » , Materiały z IX Międzynarodowego Sympozjum na temat stabilizacji, bezpieczeństwa i ochrony systemów rozproszonych ,, s.  114-123 ( czytaj online [PDF] )
  26. (w) Leslie Lamport , „  Solved Problems, Problems and Unsolved Problems in Non-Concurrency (adres na zaproszenie)  ” , Principles of Distributed Systems ,, s.  1-11 ( czytaj online [PDF] )
  27. Rozproszone algorytmy i odporność na błędy  " [ archiwum] , Paryski magister informatyki (konsultacja 11 stycznia 2010 r. )
  28. (w) Vijay Garg, „  EE 382N: Distributed Systems Syllabus  ” (dostęp 11 stycznia 2010 )
  29. Tel 2001
  30. Garg 2002
  31. Garg 2004
  32. (w) „  DTCA Influential Paper Award: 2002  ” , DTCA (dostęp 30 grudnia 2009 )
  33. „  Strona główna samostabilizacji  ” (dostęp 10 stycznia 2010 )
  34. „  Sixth Symposium on Self-Stabilizing Systems  ” (dostęp 10 stycznia 2010 )
  35. „  Eighth International Symposium on Stabilization, Safety, and Security of Distributed Systems  ” (dostęp: 10 stycznia 2010 )
  36. (w) Baruch Awerbuch Shay Kutten , Yishay Mansour , Boaz Patt-Shamir i George Varghese , Optymalna czasowo samostabilizująca się synchronizacja  " , Materiały z dwudziestego piątego dorocznego sympozjum ACM to Teoria obliczeń ,, s.  652-661
  37. (w) Shlomi Dolev , Amos Israeli i Shlomo Moran , „  Self-stabilization of Dynamic Systems  ” , Proceedings of the MCC Workshop on Self-stabilizing Systems ,
  38. (in) Shlomi Dolev , Amos Israeli i Shlomo Moran , „  Self-Stabilization of Dynamic Systems Assuming Only Read / Write Atomicity  ” , Distributed Computing , Vol.  7, N O  1,, s.  3-16
  39. (w) Shlomi Dolev i Reuven Yagel , „  Towards Self-Stabilizing Operating Systems  ” , IEEE Transactions on Software Engeneering , vol.  34, n o  4,, s.  564-576
  40. (w) Shlomi Dolev i Reuven Yagel , „  Zarządzanie pamięcią dla samostabilizujących się systemów operacyjnych  ” , Materiały z 7th International Symposium on Self-Stabilizing Systems ,, s.  113-127
  41. (w) Shlomi Dolev i Reuven Yagel , „  Self-stabilizing device drivers  ” , ACM Transactions on Autonomous and Adaptive Systems , vol.  3, n O  4,
  42. (w) Shlomi Dolev i Ronen Kat , „  Samostabilizujący się rozproszony system plików  ” , Journal of High Speed ​​Networks , vol.  14 N O  2, s.  135-153
  43. (w) Shlomi Dolev , Yinnon A. Haviv i Mooly Sagiv , Self-stabilizacja zachowania kompilacji  " , Transakcje ACM na języki programowania i systemów , obj.  31 N O  6,
  44. (in) Aparatura i metody stabilizacji procesorów, systemów operacyjnych i innych konfiguracji sprzętu i / lub oprogramowania  " (dostęp: 29 stycznia 2010 )
  45. (w) James E. Burns , Mohamed G. Gouda i Raymond E. Miller , „  Stabilization and Stabilization Pseudo  ” , Distributed Computing , Vol.  7, N O  1,, s.  35-42
  46. (w) Shlomi Dolev i Ted Herman , „  Superstabilizing Protocols for Dynamic Distributed Systems  ” , Chicago Journal of Theoretical Computer Science ,( przeczytaj online [PDF] )
  47. (w) Ted Herman , „  SuperStabilizing Mutual Exclusion  ” , Proceedings of the International Conference on Parallel and Distributed Processing Techniques and Applications ,, s.  31-40
  48. (w) Yoshiak Katayama , Toshiyuki Hasegawa i Naohisa Takahashi , „  A superstabilizing spanning tree protocol for a link failure  ” , Systems and Computers in Japan , Vol.  38 N O  14, s.  41-51
  49. (w) Lelia Blin , Maria Gradinariu Potop-Butucaru and Stéphane Rovedakis , A Superstabilizing log (n) factorgorithm Algorithm for Dynamic Steiner Trees  " , Proceedings of the 11th International Symposium on Stabilization, Safety, and Security of Distributed Systems ,, s.  133-148
  50. (w) Alain Bui , Ajoy Kumar Datta , Franck Petit i Vincent Villain , „  State-optimum snap-stabilizing PIF in tree networks  ” , Proceedings of the Workshop on Self-CBCSI stabilizing Systems ,, s.  78-85 ( czytaj online [PDF] )
  51. (w) Alain Cournier Stéphane Devismes Franck Petit i Vincent Villain , „  Snap-Stabilizing Depth-First Search is Arbitrary Networks  ” , Computing Journal , vol.  49, n o  3,, s.  268-280
  52. (w) Alain Cournier i Swan Dubois , Snap-stabilizing Point-to-point protocol in post-switch communication networks  " , Proceedings of the 23rd IEEE International Symposium on Parallel and Distributed Processing ,, s.  1-11
  53. (w) Alain Cournier Stéphane Devismes i Vincent Villain , „  From Self- to Snap-Stabilization  ” , Proceedings of the 8th International Symposium on Stabilization, Safety, and Security of Distributed Systems ,, s.  199-213
  54. (w) Sylvie DeLaet Stéphane Devismes Mikhail Nesterenko and Sebastien Tixeuil , „  Snap-Stabilization in Message-Passing Systems  ” , Proceedings of the 10th International Conference on Distributed Computing and Networking ,, s.  281-286
  55. (w) Edsger Wybe Dijkstra , Samostabilizacja pomimo kontroli rozproszonej  " , Edsger W. Dijkstra, Selected Writings on Computing: A Personal Perspective ,, s.  3 ( przeczytaj online [PDF] )
  56. (in) Ted Herman , „  Probabilistyczna samostabilizacja  ” , Listy dotyczące przetwarzania informacji , t.  35 N O  2, s.  63-67
  57. (w) Annabelle McIver i Carroll Morgan , Elementarny dowód Pierścienia Hermana, który jest Θ (n ²)  " , Listy przetwarzania informacji , t.  94 N O  2, s.  79–84
  58. (w) Laurent Fribourg i Stéphane Messika , „  Sprzężenie i samostabilizacja  ” , Distributed Computing , Vol.  18, n o  3,, s.  221-232

Załączniki

Bibliografia

Dokument użyty do napisania artykułu : dokument używany jako źródło tego artykułu.

Od edycji z 2003 roku materiały z konferencji SSS są publikowane jako książki w kolekcji Lecture Notes in Computer Science wydawnictwa Springer Verlag . Samostabilizacja była jedynym tematem konferencji do 2005 roku, jednym z głównych tematów później.

  • (en) Shing-Tsaan Huang ( reż. ) i Ted Herman ( reż. ), Self-Stabilizing Systems: 6th International Symposium, SSS 2003, San Francisco, Kalifornia, USA, 24-25 czerwca 2003 r. Proceedings , Springer Verlag ,, 215  str. ( ISBN  978-3-540-40453-8 , prezentacja online ) Dokument użyty do napisania artykułu
  • (en) Sébastien Tixeuil ( reż. ) and Ted Herman ( reż. ), Self-Stabilizing Systems: 7th International Symposium, SSS 2005, Barcelona, ​​Hiszpania, 26-27 października 2005 (Lecture Notes in Computer Science) , Springer Verlag ,, 229  s. ( ISBN  978-3-540-29814-4 ) Dokument użyty do napisania artykułu
  • (en) Ajoy Kumar Datta ( reż. ) i Maria Gradinariu Potop-Butucaru ( reż. ), Stabilization, Safety, and Security of Distributed Systems: VIII International Symposium, SSS 2006 Dallas, TX, USA, 17-19 listopada 2006 r. (Notatki z wykładów z informatyki) , Springer Verlag ,, 805  s. ( ISBN  978-3-540-49018-0 ) Dokument użyty do napisania artykułu
  • (en) Toshimitsu Masuzawa ( reż. ) and Sébastien Tixeuil ( reż. ), Stabilization, Safety, and Security of Distributed Systems: 9th International Symposium, SSS 2007 Paryż, Francja, 14-16 listopada 2007 r. Proceedings (Lecture Notes in Computer Science ) , Springer Verlag ,, 409  pkt. ( ISBN  978-3-540-76626-1 ) Dokument użyty do napisania artykułu
  • (en) Sandeep Kulkarni ( reż. ) and André Schiper ( reż. ), Stabilization, Safety, and Security of Distributed Systems: 10th International Symposium, SSS 2008, Detroit, MI, USA, 21-23 listopada 2008 , Springer Verlag ,, 265  s. ( ISBN  978-3-540-89334-9 )
  • (en) Rachid Guerraoui ( reż. ) and Franck Petit ( reż. ), Stabilization, Safety, and Security of Distributed Systems: 11th International Symposium, SSS 2009, Lyon, Francja, 3-6 listopada 2009. Proceedings , Springer Verlag ,, 805  s. ( ISBN  978-3-642-05117-3 ) Dokument użyty do napisania artykułu

Powiązane artykuły

Linki zewnętrzne

Mamy nadzieję, że informacje, które zgromadziliśmy na temat Samostabilizacja, były dla Ciebie przydatne. Jeśli tak, nie zapomnij polecić nas swoim przyjaciołom i rodzinie oraz pamiętaj, że zawsze możesz się z nami skontaktować, jeśli będziesz nas potrzebować. Jeśli mimo naszych starań uznasz, że informacje podane na temat _title nie są całkowicie poprawne lub że powinniśmy coś dodać lub poprawić, będziemy wdzięczni za poinformowanie nas o tym. Dostarczanie najlepszych i najbardziej wyczerpujących informacji na temat Samostabilizacja i każdego innego tematu jest istotą tej strony internetowej; kierujemy się tym samym duchem, który inspirował twórców Encyclopedia Project, i z tego powodu mamy nadzieję, że to, co znalazłeś o Samostabilizacja na tej stronie pomogło Ci poszerzyć swoją wiedzę.

Opiniones de nuestros usuarios

Alex Wysocki

Nie wiem, jak dotarłem do tego artykułu o zmiennej, ale bardzo mi się podobał.

Ilona Lisowski

Ten wpis o Samostabilizacja był właśnie tym, co chciałem znaleźć.

Julita Pietrzyk

Artykuł o Samostabilizacja jest kompletny i dobrze wyjaśniony. Nie dodawałbym ani nie usuwał przecinka.