MRJP Wykład 13: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Salwicki (dyskusja | edycje)
Salwicki (dyskusja | edycje)
Linia 89: Linia 89:
Wysyłanie komunikatu
Wysyłanie komunikatu


== Łączenie maszyn wirtualnych w wieloprocesorową wirtualną maszynę wirtualną ==
= Łączenie maszyn wirtualnych w wieloprocesorową wirtualną maszynę wirtualną =  
Każda maszyna wirtualna zainstalowana w sieci lokalnej posiada swój numer identyfikacyjny 0<nr<256. Numery te powinny różnić sie między sobą.  
Poniżej przytaczam opis eksperymentalnej realizacji.
Każda loglanowska maszyna wirtualna VLP zainstalowana w sieci lokalnej posiada swój numer identyfikacyjny 0<nr<256. Numery te powinny różnić sie między sobą.  
Maszyna wirtualna '''A''' może dołączyć do innej(innych) maszyn wirtualnych. W tym celu jej operator powinien wykonać polecenie
Maszyna wirtualna '''A''' może dołączyć do innej(innych) maszyn wirtualnych. W tym celu jej operator powinien wykonać polecenie
  - Machine -> Connect  
  - Machine -> Connect  
Linia 97: Linia 98:
Od tej pory maszyny połączone z maszyną '''B''' tworzą razem z maszyną '''A''' jedną wieloprocesorową sieciową maszynę wirtualną '''A + B'''.
Od tej pory maszyny połączone z maszyną '''B''' tworzą razem z maszyną '''A''' jedną wieloprocesorową sieciową maszynę wirtualną '''A + B'''.


Od tego momentu  
Od tego momentu aż do momentu wykonania polecenia Disconnect ...
Maszyna wirtualna
Maszyna wirtualna

Wersja z 16:31, 5 lip 2006

Obiekty aktywne: współbieżne i rozproszone

W niektórych językach programowania obiektowego pewne obiekty mogą być aktywne tzn. wykonywać swoje własne instrukcje równocześnie z innymi obiektami aktywnymi.

Przypomnijmy, że zwykle obiekt jest kolekcją swych atrybutów: pól i metod. Taki obiekt nie wykonuje swoich własnych poleceń. W odróżnieniu od zwykłych obiektów klas istnieć mogą obiekty aktywne odpowiednio zadeklarowanych klas. W języku Java są to obiekty podklas klasy Thread. W Loglanie są to obiekty procesów. W Adzie ... TODO

Obiekty aktywne (alias procesy albo wątki) są więc dla nas obiektami, które posiadają możliwość wykonywania instrukcji równocześnie z innymi procesami. Mówiąc dokładniej obliczenia procesów mogą być wykonywane:

  • Współbieżnie (wiele procesów wykonywanych na jednym procesorze fizycznym),
  • W rozproszeniu (na maszynach połączonych siecią),
  • Równolegle (na maszynie z wieloma procesorami, które dzielą się wspólną pamięcią).

Nie opanowałem jszcze wstawiania obrazków Plik:AliencallII.pdf

Chcę zrobić animację protokołu aien call.

== Jednolicie czy oddzielnie? == Pytanie takie pojawia sie bardzo wcześnie gdy zamierzamy w języku programowania zawrzeć narzędzia programowania rozproszonego i współbieżnego. W Javie mamy dwie odrębne koncepcje: procesy współbieżne realizowane są jako obiekty pokdlas klasy Thread. Procesy rozproszone wymagają użycia mechanizmu [RMI]link RMI. Trzeba więc zapoznac sie z dwoma odrebnymi koncepcjami i opanować ich własności.

W języku Loglan'82 zrealizowano rozproszoną współbieżność. Wyglądające jednakowo wyrażenie generowania nowego obiektu new MojProces (arg1, arg2, ) tworzy obiekt procesu, który jest alokowany na wirtualnej maszynie wskazanej przez wartość wyrażenia arg1. Jeśli ta wartość wynosi 0 to alokacja odbywa się na bieżącym procesorze i wtedy stary i nowy proces działają współbieżnie dzieląc się czasem maszyny wirtualnej. Jeśli wartość ta jest różna od zera to nowy proces jest alokowany na procesorze o wskazanym numerze = arg1 i dalsze obliczenia odbywają sie w rozproszeniu. Łatwo dostrzec, że model ten dopuszcza wiele różnych odmian wykonywania obliczeń w rozproszeniu wymieszanym ze współbieżnościa.

Statyczna czy dynamiczna konfiguracja systemu procesów

Mechanizmy komunikacji procesów rozproszonych

Obce wołanie metod w procesach

Na czym to polega?

Składniowo wygląda to jak wołanie metody w obiekcie

    x.Tametoda(parametry aktualne)

semantyka to cały protokół porozumiewania się procesu wykonującego tę instrukcję procedury z procesem x. proces wywołujący: proces x:

  oblicz parametry aktualne                     
  sprawdź czy proces x istnieje
     jeśli NIE to czekaj
     jeśli TAK to sprawdź czy proces x jest aktywny
                              jeśli NIE to czekaj
                              jeśli TAK to sprawdź czy TaMetoda jest w masce
                                   jeśli NIE to czekaj
                                   jeśli TAK to przekaż parametry procesowi x

proces x:

Opis realizacji mechanizmu obcego wołania metod

Sieciowe wskaźniki do obiektów procesów

Struktury

Pamięć procesów

Deskryptory procesów

Kolejka procesów gotowych

Komunikaty

Globalna kolejka komunikatów

Stos masek metod

Algorytmy

Inicjowanie maszyny wirtualnej

Zarządzanie procesami

  Generowanie procesu
  Powrót z generacji procesu

  Zakończenie procesu
  Usuwanie procesu

podział czasu

Obce wołanie metod

  Rozpoczęcie 
  Instrukcja accept
  Operacje na maskach metod
  Obsługa błędów

Wysyłanie komunikatu

Łączenie maszyn wirtualnych w wieloprocesorową wirtualną maszynę wirtualną

Poniżej przytaczam opis eksperymentalnej realizacji. Każda loglanowska maszyna wirtualna VLP zainstalowana w sieci lokalnej posiada swój numer identyfikacyjny 0<nr<256. Numery te powinny różnić sie między sobą. Maszyna wirtualna A może dołączyć do innej(innych) maszyn wirtualnych. W tym celu jej operator powinien wykonać polecenie

- Machine -> Connect 
- wskazać IP lub URL maszyny wirtualnej B do której chce dołączyć
- zatwierdzić

Od tej pory maszyny połączone z maszyną B tworzą razem z maszyną A jedną wieloprocesorową sieciową maszynę wirtualną A + B.

Od tego momentu aż do momentu wykonania polecenia Disconnect ... Maszyna wirtualna