Procesy
description
Transcript of Procesy
Procesy
Wykład 3
Użycie wątków w systemach lokalnych
Przełączanie kontekstu w wyniku komunikacji międzyprocesowej (IPC)
Implementacja wątku
Połączenie procesów lekkich poziomu jądra z wątkami poziomu użytkownika.
Serwery wielowątkowe (1)
Serwer wielowątkowy w modelu ekspedytor-pracownik.
Serwery wielowątkowe (2)
Trzy sposoby budowania serwera.
Model Charakterstyka
Wątki Równoległość, blokowane wywołania systemowe
Proces jednowątkowy Brak równoległości, blokowane wywołania systemowe
Automat skończony Równoległość, wywołania systemowe bez blokowania
System X-Window
Podstawowa organizacja systemu X-Window
Przezroczystość rozproszenia po stronie klienta
Możliwe podejście do przezroczystego zwielokrotniania obiektu poprzez rozwiązanie po stronie klienta
Serwery: Ogólne zagadnienia projektowe
a) Wiązanie klient serwer z wykorzystaniem demona (DCE)b) Wiązanie klient serwer z wykorzystaniem superserwera (UNIX)
3.7
Adapter obiektu (1)
Organizacja serwera obiektowego, umożliwiającego różną politykę uaktywnień
Adapter obiektu (2)
Plik nagłówkowy header.h, używany przez adapter i każdy program wywołujący adapter.
/* Definitions needed by caller of adapter and adapter */#define TRUE#define MAX_DATA 65536
/* Definition of general message format */struct message { long source /* senders identity */ long object_id; /* identifier for the requested object */ long method_id; /* identifier for the requested method */ unsigned size; /* total bytes in list of parameters */ char **data; /* parameters as sequence of bytes */};
/* General definition of operation to be called at skeleton of object */typedef void (*METHOD_CALL)(unsigned, char* unsigned*, char**);
long register_object (METHOD_CALL call); /* register an object */void unrigester_object (long object)id); /* unrigester an object */void invoke_adapter (message *request); /* call the adapter */
Adapter obiektu (3)
Plik thread.h używany przez adapter przy korzystaniu z wątków.
typedef struct thread THREAD; /* hidden definition of a thread */
thread *CREATE_THREAD (void (*body)(long tid), long thread_id);/* Create a thread by giving a pointer to a function that defines the actual *//* behavior of the thread, along with a thread identifier */
void get_msg (unsigned *size, char **data);void put_msg(THREAD *receiver, unsigned size, char **data);/* Calling get_msg blocks the thread until of a message has been put into its *//* associated buffer. Putting a message in a thread's buffer is a nonblocking *//* operation. */
Adapter obiektu (4)
Główna część adaptera, która realizuje politykę wątek na obiekt.
Powody wędrówki kodu
Zasada dynamicznego konfigurowania klienta z serwerem komunikacyjnym. Klient najpierw pobiera niezbędne oprogramowanie, po czym wywołuje serwer.
Modele wędrówki kodu
Możliwe sposoby wędrówki kodu
Wędrówka a zasoby lokalne
Działania dot. odniesień do zasobów lokalnych, podejmowane przy wędrówce kodu na inną maszynę
Przez Niepołączony Umocowany Nieruchomy
identyfikatorwartośćtyp
PZ (lub GR)KW (lub PZ, GR)ZL (lub PZ, KW)
GR (lub PZ)GR (lub KW)
ZL (lub GR,KW)
GRGR
ZL (lub GR)
Wiązanie zasobu z maszyną
Wiązanie procesu z zasobem
GR – utwórz globalną referencję systemowąPZ – przenieś zasóbKW – skopuj wartość zasobuZL – zwiąż na nowo z zasobem dostępnym lokalnie
Wędrówka w systemach heterogenicznych
Zasada utrzymywania stosu wędrówki w celu umożliwienia wędrówki segmentu wykonania w środowisku heterogenicznym
3-15
Wędrówka kodu w systemie D'Agents (1)
Prosty przykład agenta Tcl w systemie D'Agents, przesyłający skrypt zdalnej maszynie
proc factorial n { if ($n 1) { return 1; } # fac(1) = 1 expr $n * [ factorial [expr $n – 1] ] # fac(n) = n * fac(n – 1)
}
set number … # tells which factorial to compute
set machine … # identify the target machine
agent_submit $machine –procs factorial –vars number –script {factorial $number }
agent_receive … # receive the results (left unspecified for simplicity), blocks
Wędrówka kodu w systemie D'Agents (2)
An example of a Tel agent in D'Agents migrating to different machines where it executes the UNIX who command (adapted from [gray.r95])
all_users $machines
proc all_users machines { set list "" # Create an initially empty list foreach m $machines { # Consider all hosts in the set of given machines agent_jump $m # Jump to each host set users [exec who] # Execute the who command append list $users # Append the results to the list } return $list # Return the complete list when done}
set machines … # Initialize the set of machines to jump toset this_machine # Set to the host that starts the agent
# Create a migrating agent by submitting the script to this machine, from where# it will jump to all the others in $machines.
agent_submit $this_machine –procs all_users-vars machines-script { all_users $machines }
agent_receive … #receive the results (left unspecified for simplicity)
Zagadnienia implementacyjne (1)
Architektura systemu D'Agents.
Zagadnienia implementacyjne (2)
Części wchodzące w skład stanu agenta w systemie D'Agents.
Status Description
Zmienne globalne interpretera Zmienne potrzebne interpreterowi, np.
Zmienne globalne systemowe Kody powrotne, kody błędów, napisy, itp.
Zmienne globalne programu Zmienne globalne zdefiniowane przez użytkownika
Definicje procedur Definicje skryptów do wykonania przez agenta
Stos poleceń Aktualnie wykonywany stos poleceń
Stos ramek wywołań Stos rekordów uaktywnień, po 1 na każde wykonywane polecenie
Agenci programowi w SR
Niektóre ważne cechy, za pomocą których można scharakteryzować agentów.
CechaWspólna dla
wszystkichagentów?
Opis
Autonomiczność Tak Może działać samodzielnie
Reaktywność Tak Reaguje na zmiany w swoim środowisku
Proaktywność Tak Inicjuje działania wpływające na środowsko
Komunikatywność Tak Może wymieniać informacje z użytkownikami i innymi agentami
Ciągłość Nie Ma względnie długi czas istnienia
Mobilność Nie Może wędrować między maszynami
Adaptacja Nie Potrafi się uczyć
Technologia agentów
Ogólny model platformy agentów.
Języki komunikacji agentów (1)
Przykłady komunikatów w języku FIPA ACL.
Cel komunikatu Opis Treść komunikatu
INFORM Potwierdza prawdziwość twierdzenia Twierdzenie
QUERY-IF Zapytanie o prawdziwość twierdzenia Twierdzenie
QUERY-REF Zapytanie o dany obiekt Wyrażenie
CFP Prośba o ofertę Cechy oferty
PROPOSE Dostarczenie oferty Oferta
ACCEPT-PROPOSAL Powiadomienie o przyjęciu oferty ID oferty
REJECT-PROPOSAL Powiadomienie o odrzucenie oferty ID oferty
REQUEST Żądanie wykonania działania Specyfikacja działania
SUBSCRIBE Subskrypcja źródła informacji Referencja do źródła
Języki komunikacji agentów (2)
Prosty przykład komunikatu FIPA ACL, przesyłanego między dwoma agentami (w Prologu).
Field Value
Purpose INFORM
Sender max@http://fanclub-beatrix.royalty-spotters.nl:7239
Receiver elke@iiop://royalty-watcher.uk:5623
Language Prolog
Ontology genealogy
Content female(beatrix),parent(beatrix,juliana,bernhard)