SYSTEMY OPERACYJNE KOMUNIKACJA MIĘDZYPROCESOWA

Slides:



Advertisements
Podobne prezentacje
Praca dyplomowa inżynierska
Advertisements

Protokoły sieciowe.
Mechanizmy pracy równoległej
Jarosław Kuchta Monitory.
Klasyczne problemy współbieżności i ich rozwiązania
Sieci VLAN.
SYSTEMY OPERACYJNE WSTĘP
Systemy rozproszone W. Bartkiewicz
Urządzenia sieciowe Topologie sieci Standardy sieci Koniec.
ANALITYCZNE MODELE SYSTEMÓW KOLEJKOWYCH
Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski.
Systemy operacyjne Wykład nr 4: Procesy Piotr Bilski.
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
Systemy operacyjne.
Magistrala & mostki PN/PD
Model ISO / OSI Model TCP /IP
Domeny kolizyjne i rozgłoszeniowe
Proxy (WWW cache) Sieci Komputerowe
Temat nr 10: System przerwań
Komunikaty sterujące zestawu protokołów TCP/IP
Artur Szmigiel Paweł Zarębski Kl. III i
Projektowanie i programowanie obiektowe II - Wykład IV
Problem rozbieżności czasów jednym z wielu problemów pojawiających się w systemach rozproszonych jest rozbieżność wartości zegarów na poszczególnych węzłach-maszynach.
9. KOORDYNACJA PROCESÓW WSPÓŁBIEŻNYCH PRZY UŻYCIU INTERPRETATORA
Elementy informatyki w kształceniu zintegrowanym.
LEKCJA 2 URZĄDZENIA SIECIOWE
Pamięć wspólna Przegląd stosowanych rozwiązań Marcin Kamiński, Michał Kotra Wydział EAIiE Katedra Automatyki Kraków, 2008.
Podstawowe usługi internetu
Protokół Komunikacyjny
MODEL WARSTWOWY PROTOKOŁY TCP/IP
Wielozadaniowowść systemu operacyjnego Linux
Systemy operacyjne.
RODZAJE TRANSMISJI PRZESYŁANIE INFORMACJI W MODELU WARSTWOWYM
Zasada działania komputera
BUDOWA I DZIAŁANIE SIECI KOMPUTEROWYCH
Wymiana informacji w sieciach komputerowych
Prezentacja opisuje mechanizm pracy
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Sieci komputerowe.
Model OSI Model OSI (Open Systems Interconnection Reference Model) został wprowadzony w celu ujednolicenia regół komunikacji sieciowej. Obejmuje on cały.
Problem sekcji krytycznej
Przerwanie ang. interrupt.
Buforowanie D e f i n i c j a.
Wybrane zagadnienia relacyjnych baz danych
Internetowe surfowanie
S IMON SAYS … A RCHITECTURE ! Usługi zdalne Technologie, techniki i praktyki implementacji.
Sieci komputerowe.
Aplikacje TCP i UDP. Łukasz Zieliński
W ą t e k (lekki proces) thread.
Systemy operacyjne (wiosna 2014)
Systemy operacyjne i sieci komputerowe
Informatyka Poczta elektroniczna.
Systemy operacyjne i sieci komputerowe
Systemy rozproszone  Rozdzielenie obliczeń między wiele fizycznych procesorów.  Systemy luźno powiązane – każdy procesor ma lokalną pamięć; procesory.
Systemy operacyjne i sieci komputerowe
Model warstwowy sieci ISO/OSI
Jednym z podstawowych celów tworzenia sieci komputerowych jest współdzielenie zasobów, takich jak pliki lub drukarki. Każdy z takich zasobów musi być udostępniony,
Procesor, pamięć, przerwania, WE/WY, …
Systemy operacyjne i sieci komputerowe
Andrzej Majkowski 1 informatyka +. 2 Bezpieczeństwo protokołu HTTP Paweł Perekietka.
Model OSI.
PODSTAWY SIECI KOMPUTEROWYCH - MODEL ISO/OSI. Modele warstwowe a sieci komputerowe Modele sieciowe to schematy funkcjonowania, które ułatwią zrozumienie.
Architektury procesorów rdzeniowych mikrokontrolerów.
Procesy, wątki Program a proces Proces: Przestrzeń adresowa, kod, dane, stos (część pamięci do przechowania zmiennych lokalnych i niektórych adresów) Otwarte.
Struktura systemu operacyjnego
Systemy operacyjne i sieci komputerowe DZIAŁ : Systemy operacyjne i sieci komputerowe Informatyka Zakres rozszerzony Zebrał i opracował : Maciej Belcarz.
Model warstwowy ISO-OSI
Bartosz Pawlak Wiktor Paliwoda Bezpieczeństwo Systemów Operacyjnych IMAP vs POP.
Wstęp do programowania Wykład 7
Architektura Rafał Hryniów. Architektura Wizja projektu systemu, którą dzielą twórcy Struktura komponentów systemu, ich powiązań oraz zasad i reguł określających.
Zapis prezentacji:

SYSTEMY OPERACYJNE KOMUNIKACJA MIĘDZYPROCESOWA

KLASYCZNE PROBLEMY KOMUNIKACJI MIĘDZYPROCESOWEJ  problem ucztujących filozofów – symulacja procesów, które współzawodniczą w dostępie do ograniczonych zasobów, np.urządzeń we-wy  problem pisarzy i czytelników – zagadnienie zapewnienia prawidłowego dostępu do bazy danych (w trybie odczytu i zapisu)  problem śpiącego fryzjera – zagadnienie zsynchronizowanej obsługi procesów przez procesor

KLASYCZNE PROBLEMY KOMUNIKACJI MIĘDZYPROCESOWEJ Problem ucztujących filozofów: 5 filozofów dzieli wspólny okrągły stół, wokół stołu jest 5 krzeseł. Na środku stołu jest miska ryżu, a naokoło leży 5 pałeczek. Kiedy filozof myśli, nie kontaktuje się ze swoimi kolegami. Kiedy odczuwa głód, próbuje ująć w dłonie dwie pałeczki leżące najbliżej niego (po lewej i po prawej stronie). Jednorazowo może podnieść tylko jedną pałeczkę. Kiedy głodny filozof zdobędzie 2 pałeczki, rozpoczyna jedzenie. Po posiłku, odkłada pałeczki na stół i zatapia się ponownie w rozmyślaniach.

KLASYCZNE PROBLEMY KOMUNIKACJI MIĘDZYPROCESOWEJ Problem czytelników i pisarzy: Obiekt danych podlega dzieleniu między kilka procesów współbieżnych. Niektóre z nich mogą tylko czytać zawartość obiektu dzielonego (czytelnicy), inne procesy mogą uaktualniać (czytać i zapisywać) obiekt (pisarze). Jednoczesny dostęp do obiektu przez 2 czytelników nie powoduje żadnych szkodliwych skutków. Natomiast gdyby pisarz i jakiś inny proces (czytelnik lub pisarz) miały jednoczesny dostęp do dzielonego obiektu, to może dojść do konfliktu.

KLASYCZNE PROBLEMY KOMUNIKACJI MIĘDZYPROCESOWEJ Problem śpiącego fryzjera: W poczekalni zakładu fryzjerskiego jest n krzeseł a w salonie – jeden fotel. Jeśli brakuje klientów, to fryzjer zasypia. Jeżeli w poczekalni nie ma wolnych krzeseł, to nowy klient odchodzi. Gdy fryzjer jest zajęty, ale są wolne miejsca (krzesła), wówczas klient siada na jednym z nich. Jeśli fryzjer śpi, to klient go budzi.

KOMUNIKACJA MIĘDZYPROCESOWA Sygnały – krótkie wiadomości, które można wysyłać do procesu lub grupy procesów: zostały wprowadzone w celu ułatwienia komunikacji międzyprocesowej, są programowymi odpowiednikami przerwań sprzętowych; niektóre przerwania sprzętowe (np. nieprawidłowy adres pamięci) są zamieniane na odpowiednie sygnały, są dostępne dla procesów w trybie użytkownika, informują proces o wystąpieniu określonego zdarzenia, zmuszają proces do wykonania zawartej w kodzie procesu funkcji obsługującej sygnał.

KOMUNIKACJA MIĘDZYPROCESOWA Działania podejmowane przez proces po otrzymaniu sygnału: 1. zignorowanie sygnału; 2. podejmowanie działań domyślnych: a) przerwanie - proces jest niszczony, b) zrzut - tworzony jest plik core i proces jest niszczony, c) ignorowanie - sygnał jest pomijany, d) zatrzymanie - proces jest zatrzymywany (przechodzi w stan TASK_STOPPED), e) kontynuacja - proces ze stanu TASK_STOPPED przechodzi w stan TASK_RUNNING; 3. wyłapanie sygnału i obsłużenie go przez procedury obsługi sygnału.

KOMUNIKACJA MIĘDZYPROCESOWA Schematy komunikacji: - pamięć dzielona (shared memory); - system komunikatów (message passing). System komunikatów – umożliwia wzajemną komunikację bez zmiennych dzielonych; stosowany w sieciach komputerowych i systemach rozproszonych. Wykorzystywane 2 funkcje systemowe: send (destination, message)- wysłanie komunikatu, receive (destination, message)- odbiór komunikatu,

KOMUNIKACJA MIĘDZYPROCESOWA Aby była możliwa komunikacja pomiędzy procesami, musi istnieć łącze komunikacyjne. Problemy z implementacją łącza: Jak ustanawiać łącze? Czy łącze może być powiązane z więcej niż dwoma procesami? Ile może być łączy między parą procesów? Jaka jest pojemność łącza? Czy łącze ma jakiś obszar buforowy? Jaki jest rozmiar komunikatów? Czy łącze akceptuje komunikaty zmiennej, czy stałej długości? Czy łącze jest jednokierunkowe, czy dwukierunkowe (przepływ komunikatów w jedną stronę czy w obie)?

KOMUNIKACJA MIĘDZYPROCESOWA Metody logicznej implementacji łącza: komunikacja bezpośrednia lub pośrednia; komunikacja symetryczna lub asymetryczna; buforowanie automatyczne lub jawne; wysyłanie na zasadzie tworzenia kopii; komunikaty stałej lub zmiennej długości;

KOMUNIKACJA MIĘDZYPROCESOWA Komunikacja bezpośrednia: jawne określenie nadawcy i odbiorcy*), łącze jest ustanawiane automatycznie, procesy muszą znać swoje identyfikatory, pomiędzy parą procesów istnieje jedno łącze, łącze jest dwukierunkowe. *) Asymetryczne adresowanie – nie jest określany nadawca (zamiast source -> any).

KOMUNIKACJA MIĘDZYPROCESOWA Komunikacja pośrednia: Komunikaty są nadawane i odbierane przez skrzynki pocztowe – obiekty o jednoznacznej identyfikacji. Procesy muszą mieć wspólną skrzynkę pocztową. Operacje: nadaj (A, komunikat) – nadaj komunikat do skrzynki A; odbierz (A, komunikat) – odbierz komunikat ze skrzynki A; Właściwości łącza: - łącze między dwoma procesami jest ustanawiane tylko wówczas, gdy dzielą one skrzynkę pocztową; - łącze może być związane z więcej niż dwoma procesami; - każda para komunikujących się procesów może mieć klika różnych łączy, z których każde odpowiada jakiejś skrzynce pocztowej; - łącze może być jednokierunkowe lub dwukierunkowe.

KOMUNIKACJA MIĘDZYPROCESOWA Własność skrzynki: Skrzynka jest własnością procesu. Właściciel skrzynki może tylko odbierać komunikaty, a użytkownik może tylko nadawać. Proces, na którego zamówienie tworzona jest nowa skrzynka, staje się jej właścicielem na zasadzie domyślności. Gdy właściciel skrzynki kończy działanie to skrzynka znika. 2) Skrzynka nie jest własnością systemu. Skrzynka istnieje bez inicjatywy procesu, jest niezależna i nie przydziela się jej do żadnego konkretnego procesu. System operacyjny dostarcza mechanizmów pozwalających na tworzenie nowej skrzynki, nadawanie i odbieranie komunikatów za pośrednictwem skrzynki, likwidowanie skrzynki.

KOMUNIKACJA MIĘDZYPROCESOWA Właściwości skrzynki: Skrzynki pocztowe umożliwiają komunikację pośrednią z ograniczoną pojemnością bufora (liczbą komunikatów). Liczba komunikatów musi być wyspecyfikowana w momencie tworzenia skrzynki. Przy wykorzystywaniu skrzynek parametry adresowe w funkcjach send i receive są adresami skrzynek a nie procesów. Jeśli proces próbuje wysłać komunikat do pełnej skrzynki, to zostaje zawieszony aż do momentu, kiedy jakiś proces usunie komunikat ze skrzynki.

KOMUNIKACJA MIĘDZYPROCESOWA Buforowanie: Łącze ma pewną pojemność określającą liczbę komunikatów, które mogą w nim czasowo przebywać. Cecha ta może być postrzegana jako kolejka komunikatów przypisanych do łącza. Trzy podstawowe metody implementacji takiej kolejki: Pojemność zerowa. Jeśli zostanie wykonana funkcja send to proces wysyłający jest blokowany aż do chwili wykonania funkcji receive; w tym czasie komunikat może być skopiowany bezpośrednio do procesu adresata bez pośredniego buforowania. Jeśli receive zostanie wykonana jako pierwsza, to proces adresata jest blokowany aż do wykonania send. Procesy wymuszają wzajemną współpracę w tym mechanizmie, jest to rozwiązanie mniej elastyczne lecz nie występuje tu problem buforowania. Ta strategia nosi nazwę rendez-vous.

KOMUNIKACJA MIĘDZYPROCESOWA Pojemność ograniczona. Kolejka ma skończoną długość n. Jeśli w chwili nadania nowego komunikatu kolejka nie jest pełna, to nowy komunikat będzie w niej umieszczony (przez skopiowanie komunikatu lub przez zapamiętanie wskaźnika do niego). W przeciwnym razie nadawca będzie musiał być opóźniany, aż zwolni się miejsce w kolejce. Pojemność nieograniczona. Kolejka ma potencjalnie nieskończoną długość. Nadawca nigdy nie jest opóźniany.

KOMUNIKACJA MIĘDZYPROCESOWA Problem producenta - konsumenta z wykorzystaniem mechanizmu komunikatów. Zakładamy, że wszystkie komunikaty mają ten sam rozmiar a komunikaty wysyłane, ale jeszcze nie odebrane, są buforowane przez system operacyjny. Zakłada się wykorzystanie n komunikatów przy n szczelinach w pamięci buforowej. W tym rozwiązaniu konsument rozpoczyna pracę przez wysłanie n pustych komunikatów do producenta. Producent otrzymuje zestaw pustych komunikatów. Pobiera pusty komunikat od konsumenta, buduje jakiś komunikat i wysyła go do konsumenta. Komunikat jest umieszczany w buforze. W ten sposób ogólna liczba komunikatów pozostaje stała w czasie i mogą być one przechowy-wane w określonym, wydzielonym obszarze pamięci.

KOMUNIKACJA MIĘDZYPROCESOWA Problem producenta - konsumenta z wykorzystaniem mechanizmu komunikatów (cd) Konsument odbiera komunikat wysłany do niego przez producenta, odczytuje jego zawartość i wysyła do producenta pusty komunikat a następnie wykorzystuje zawartość otrzymanego komunikatu. Jeśli producent pracuje szybciej niż konsument, to wszystkie komunikaty zostaną zapełnione i będą czekać na konsumenta a producent zostanie zawieszony w oczekiwaniu na przysłanie pustych komunikatów (i odwrotnie). Możliwych jest wiele konkretnych rozwiązań tego mechanizmu np. każdy proces może mieć unikalny adres wykorzystywany w wysyłaniu komunikatu.

KOMUNIKACJA MIĘDZYPROCESOWA Synchroniczna metoda komunikacji  zdalne wywołania procedur (Remote Procedure Call - RPC).   Wywołanie procedury (funkcji) w systemie jednoprocesorowym działa tak samo jak system komunikatów, w którym nadawca ulega zablokowaniu do czasu otrzymania odpowiedzi. W systemie RPC komunikat przybiera postać zdalnego wywołania procedury, a odpowiedź zawiera wynik obliczeń wywołanej procedury. Komunikaty na pojedynczych maszynach są implementowane najczęściej w pamięci współdzielonej (wada: awaria maszyny  awaria systemu). W systemie rozproszonym łączem jest sieć i załamanie jednej maszyny nie załamuje całego systemu.

KOMUNIKACJA MIĘDZYPROCESOWA Problemy wynikające z zastosowania sieci. Utrata komunikatu w sieci: rozwiązanie - wysyłanie potwierdzenia przez odbiorcę; jeśli w określonym przedziale czasu nadawca nie otrzyma potwierdzenia to komunikat zostanie wysłany ponownie (retransmisja). Identyfikacja i autoryzacja procesów w systemie rozproszonym: stosuje się identyfikatory zawierające m.in. identyfikator procesu, nazwę maszyny, nazwę domeny. Autoryzacja - procesy mogą wysyłać i otrzymywać komunikaty z tego samego poziomu lub poziomu bezpośrednio niższego (Unix), np. procesy użytkowników nie mogą się bezpośrednio komunikować z procesami we/wy.

KOMUNIKACJA MIĘDZYPROCESOWA Model klient-serwer. Siedmiowarstwowy model ISO/OSI jako podstawa oprogramowania zarządzającego siecią. Zadanie poszczególnych warstw: konwersja danych, sprawdzenie poprawności transmisji, sterowanie retransmisją, itp. Taki siedmiowarstwowy model powiększa jednak nakłady czasowe (wysyłany komunikat musi być za każdym razem przetworzony przez siedem warstw, z których każda dodaje swój nagłówek; przy odbieraniu komunikatu każda z warstw sprawdza i odłącza swój nagłówek). Na te operacje potrzeba czasu. W sieciach rozległych, gdzie liczba przesyłanych danych jest duża, nie stanowi to problemu nawet przy takich manipulacjach nagłówkami sieć może pracować z maksymalną szybkością. Natomiast w sieciach lokalnych ograniczenia czasowe, wynikające z obsługi siedmiowarstwowego modelu, mają charakter zasadniczy. Przetwarzanie nagłówków powoduje spadek efektywności sieci. W większości sieci lokalnych nie używa się protokołów warstwowych, a jeśli już, to z liczbą warstw ograniczoną do minimum. W tych środowiskach stosuje się model klient-serwer.

KOMUNIKACJA MIĘDZYPROCESOWA Model klient-serwer. Główna idea tego modelu – wydzielenie w ramach systemu operacyjnego grupy procesów (nazywanych serwerami), które oferują usługi procesom użytkowym (nazywanych klientami). Na danej maszynie może pracować kilka procesów serwerów, klientów bądź ich kombinacja. Aby zlikwidować narzut czasowy związany z protokołem siedmiowarstwowym, model klient-serwer bazuje na prostym protokole pytanie - odpowiedź. Pytanie jest zawarte w komunikacie wysyłanym do serwera, a odpowiedź - w komunikacie wysyłanym do klienta. Rozwiązanie proste  duża jego efektywność. Najczęściej jest to protokół trzywarstwowy - najniższe warstwy z modelu siedmiowarstwowego: warstwy fizyczna i warstwa łącza (sprzęt) zajmują się przesyłaniem danych; warstwa trzecia to w zasadzie oprogramowanie.