Nowe technologie Edukacja Kontakt O nas Dodaj do ulubionych Ustaw tę stronę jako startową

Artykuły dotyczące systemu QNX i jego zastosowań

 

Przetwarzanie rozproszone w systemie operacyjnym QNX.

Opracował: Wiesław Barcikowski

Wydział Cybernetyki
Wojskowa Akademia Techniczna


Najpowszechniej obecnie wykorzystywane mikrokomputery mają w nazwie przymiotnik osobisty. Określenie to, nadane pierwszym mikrokomputerom kilkanaście lat temu, w Czy zastanawialiśmy się kiedykolwiek jaka część mocy obliczeniowej procesora jest wykorzystywana gdy pracujemy z edytorem tekstów, arkuszem kalkulacyjnym, programem zarządzania bazy danych czy nawet kompilatorem?. Być może odpowiedź zdziwi niektórych użytkowników: od ułamków procenta w przypadku wprowadzania tekstu do kilkunastu czy kilkudziesięciu procent w przypadku kompilacji programów źródłowych!!. W trakcie działania tych aplikacji wykonywane są co prawda czynności mocniej obciążające procesor np.: przeformatowywanie tekstu czy przeliczanie arkusza, zajmują one jednak kilka czy co najwyżej kilkanaście procent całkowitego czasu ich realizacji. Jeżeli uwzględnimy jeszcze fakt, że wzmiankowane powyżej aplikacje należą do najczęściej uruchamianych to musimy dojść do wniosku, że procesor naszego komputera przez zdecydowanie większą część czasu jest bezczynny!!!.

W dzisiejszej dobie gdy moc mikrokomputerów "osobistych" osiąga często kilkanaście MIPS (a nawet więcej), nie powinno być traktowane zbyt dosłownie - bo czy nie szkoda tej marnowanej mocy?.

Jednym ze sposobów na jej wykorzystanie jest wielodostęp. W przypadku aplikacji wzmiankowanych powyżej jest to jak najbardziej uzasadnione. Jeżeli mamy szybki i efektywny system operacyjny a także możliwość tworzenia programów, które pozwalają na współdzielenie kodu między wykonujące się procesy (ang. sharable code, reentrant procedure), to możliwości zwykłego AT/286 wystarczą aby obsłużyć kilka terminali!.

W takim systemie można również uruchamiać aplikacje mocniej obciążające procesor, np. skomplikowane obliczenia matematyczne. Nadanie takiemu programowi niższego priorytetu, umożliwia jednoczesne (prawie niezakłócone) działanie kilku użytkowników wykorzystujących komputer w sposób interakcyjny (np. praca z edytorem) i powoduje nieznaczne (kilka - kilkanaście procent) wydłużenie jego czasu realizacji. Oczywiście tak można postąpić z programami, które dają wyniki po akceptowalnym przez użytkownika czasie. Co zrobić jednak z programami, których czas realizacji jest na tyle długi, że nie ma sensu ich uruchamiać w naszym mikrokomputerze?. W szczególności, jeżeli wyczerpaliśmy już wszystkie możliwości, tzn. nie da się zainstalować procesora o szybszym zegarze oraz gdy kod naszego programu nie da się już dalej optymalizować. Stan ten jest czasami błędnie określany "wąskim gardłem von Neumanna" (ang. "von Neumann Bottleneck"); lepszym określeniem będzie "wąskie gardło pojedynczego procesora".

Niemożność rozwiązania tego problemu jest szczególnie denerwująca, gdy jesteśmy podłączeni do sieci składającej się często z kilkunastu lub kilkudziesięciu mikrokomputerów, w których są uruchomione aplikacje interakcyjne (czytaj: spowalniane przez użytkownika). Przecież w naszej sieci "marnuje się" moc często rzędu kilkudziesięciu MIPS!. Czy rzeczywiście nic nie da się zrobić i musimy kupić mini- czy nawet duży komputer (ang. main frame) aby wykonać nasze obliczenia?. Jest jeszcze jedno rozwiązanie: podzielić program na kilka niezależnych procesów i wykonać je w oddzielnych komputerach, czyli rozproszyć obliczenia.

Przetwarzanie rozproszone (ang. distributed processing), mówiąc w uproszczeniu, polega właśnie na równoległym wykonywaniu w wielu niezależnych komputerach procesów, które współpracują ze sobą aby osiągnąć wspólny cel jaki jest postawiony przed aplikacją, której są elementami. Od strony sprzętowej system przetwarzania rozproszonego składa się z niezależnych, oddalonych fizycznie komputerów (wyposażonych we własny procesor i pamięć) połączonych siecią komunikacyjną w celu wymiany informacji (ang. loosely-coupled systems). Należy zaznaczyć, że systemy wieloprocesorowe komunikujące się przez wspólną pamięć (ang. closely-coupled systems), nie są uważane za systemy rozproszone. Najpowszechniej obecnie używanymi systemami, które spieniają warunki sprzętowe stawiane systemom rozproszonym są właśnie lokalne sieci komputerowe. O tym jednak, czy dana sieć komputerowa może być uznana za system przetwarzania rozproszonego, decyduje zarządzający nią sieciowy system operacyjny (ang. NOS- Network Operating System). System taki powinien spełniać przedstawione poniżej wymagania.

Wielozadaniowość.

Jeżeli pojedyncza aplikacja wykorzystuje wiele stacji roboczych sieci, boby bardzo niewygodne dla pracujących przy nich ludzi zatrzymywać swoje programy do czasu jej zakończenia. Ponadto marnotrawstwem byłoby wydzielać niektóre stacje robocze jako dedykowane komputery obliczeniowe (ang. compute servers); w takie j sytuacji faktycznie lepiej rozważyć możliwość zakupu minikomputera.

Przezroczystość sieci.

Każdy proces może być uruchomiony w dowolnym węźle sieci i musi mieć pełny dostęp do niezbędnych mu zasobów. Nie może to wymagać żadnego specjalnego przygotowania procesu oraz sieci, tzn. kod aplikacji, która ma być ;rozpraszana powinien pozostać nie zmieniony bez względu na zmiany konfiguracji sieci, jak również nie może występować konieczność rekonfigurowania sieci w celu realizacji aplikacji rozproszonych.

Efektywność komunikacji w sieci.

Opóźnienia związane z transmisją informacji w sieci powinny być minimalne. Jeżeli będą one miały znaczący udział w całkowitym czasie realizacji aplikacji rozproszonej, lepiej wykonać wszystko lokalnie, w jednym węźle.

Efektywność wykorzystywania pamięci operacyjnej.