Procesy

24
Procesy Wykład 3

description

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). - PowerPoint PPT Presentation

Transcript of Procesy

Page 1: Procesy

Procesy

Wykład 3

Page 2: Procesy

Użycie wątków w systemach lokalnych

Przełączanie kontekstu w wyniku komunikacji międzyprocesowej (IPC)

Page 3: Procesy

Implementacja wątku

Połączenie procesów lekkich poziomu jądra z wątkami poziomu użytkownika.

Page 4: Procesy

Serwery wielowątkowe (1)

Serwer wielowątkowy w modelu ekspedytor-pracownik.

Page 5: Procesy

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

Page 6: Procesy

System X-Window

Podstawowa organizacja systemu X-Window

Page 7: Procesy

Przezroczystość rozproszenia po stronie klienta

Możliwe podejście do przezroczystego zwielokrotniania obiektu poprzez rozwiązanie po stronie klienta

Page 8: Procesy

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

Page 9: Procesy

Adapter obiektu (1)

Organizacja serwera obiektowego, umożliwiającego różną politykę uaktywnień

Page 10: Procesy

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 */

Page 11: Procesy

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. */

Page 12: Procesy

Adapter obiektu (4)

Główna część adaptera, która realizuje politykę wątek na obiekt.

Page 13: Procesy

Powody wędrówki kodu

Zasada dynamicznego konfigurowania klienta z serwerem komunikacyjnym. Klient najpierw pobiera niezbędne oprogramowanie, po czym wywołuje serwer.

Page 14: Procesy

Modele wędrówki kodu

Możliwe sposoby wędrówki kodu

Page 15: Procesy

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

Page 16: Procesy

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

Page 17: Procesy

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

Page 18: Procesy

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)

Page 19: Procesy

Zagadnienia implementacyjne (1)

Architektura systemu D'Agents.

Page 20: Procesy

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

Page 21: Procesy

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ć

Page 22: Procesy

Technologia agentów

Ogólny model platformy agentów.

Page 23: Procesy

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

Page 24: Procesy

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)