MRJP Wykład 15

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

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ą).

Plik:AliencallII.pdf

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 title. W języku Loglan pierwszy z argumantów wyrażenia new MojProces(nr, ...) ma być wyrażeniem typu integer. Wartość tego argumentu wskazuje na którym procesorze ma byc alokowany nowo utworzony proces. Jeśli ta wartość wynosi 0 to alokacja odbywa się na bieżącym procesorze i stary i nowy proces działają współbieżnie. Jeśli wartość ta jest różna od zera to nowy proces jest alokowany na procesorze o wskazanym numerze i dalsze obliczenia odbywają sie w rozproszeniu. Łatwo dostrzec, że model ten dpouszcza wiele różnych odmian wykonywania obliczeń w rozproszeniu wymieszanym ze współbieżnościa.