SO 05 Watki


© Z. ZieliÅ„ski
W kł d5
Wykład 5.
WÄ…tki
Instytut Teleinformatyki i Automatyki © 2006
Agenda
Koncepcja wÄ…tku
Rodzaje wątków
R d j tkó
Modele wielowątkowości
Obsługa wątków
WÄ…tki w wybranych systemach operacyjnych
Komunikacja i synchronizacja procesów 
zagadnienia ogólne
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
2
Koncepcja wÄ…tku
WÄ…tek (lekki proces, ang. lightweight process
 LWP) jest obiektem w obrębie procesu
LWP) jest obiektem w obrębie procesu
ciężkiego (heavyweight), posiadającym
własne sterowanie i współdzielącym z innymi
własne sterowanie i współdzielącym z innymi
wÄ…tkami tego procesu przydzielone
(procesowi) zasoby:
(p ) y
 segment kodu i segment danych w pamięci
 tablicę otwartych plików
 tablicę sygnałów.
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
3
Proces jedno- a wielowÄ…tkowy
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
4
Korzyści
" Zdolność do reagowania
Zd l ść di
" Współdzielenie zasobów
Współdzielenie zasobów
" Oszczędności
" Wykorzystanie architektury
wieloprocesorowej
wieloprocesorowej
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
5
Rodzaje wątków
WÄ…tki jÄ…dra
Ä… jÄ…
Procesy lekkie
Wątki użytkownika
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
6
WÄ…tki jÄ…dra
Realizacja wątków na poziomie jądra systemu
operacyjnego  jÄ…dro tworzy odpowiednie
struktury (blok kontrolny) do utrzymywania
t kt (bl k k t l ) d t i
stanu wÄ…tku.
WÄ…tek odpowiada za wykonanie pewnej
W t k d i d k i j
konkretnej czynności  przydatne przy
wykonywaniu operacji takich jak
wykonywaniu operacji, takich jak
asynchroniczne wejście/wyjście lub obsługa
przerwań
przerwań.
Wątek współdzieli kod jądra i jego dane
globalne ma własny stos jądra jest
globalne, ma własny stos jądra, jest
niezależnie szeregowany i wykorzystuje
standardowe mechanizmy synchronizacji jÄ…dra.
y y j jÄ…
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
7
WÄ…tki jÄ…dra
" Obsługiwane przez jądro
" Przykłady:
" Przykłady:
- Windows 95/98/NT/2000
- Solaris
- Tru64 UNIX
- BeOS
BeOS
- Linux
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
8
Procesy lekkie
Proces lekki (lightweight process  LWP) jest
wspieranym przez jÄ…dro wÄ…tkiem z poziomu
użytkownika. System, udostępniający procesy
ż tk ik S t d t i j
lekkie, musi także udostępniać wątki jądra. W
każdym procesie możebyć kilka procesów
każdym procesie może być kilka procesów
lekkich, z których każdy jest wspierany przez
oddzielny wÄ…tek jÄ…dra
oddzielny wÄ…tek jÄ…dra.
Procesy lekkie są niezależnie szeregowane,
współdzielą przestrzeń adresową i inne zasoby
współdzielą przestrzeń adresową i inne zasoby
procesu.
WielowÄ…tkowe procesy sÄ… najbardziej
WielowÄ…tkowe procesy sÄ… najbardziej
przydatne wtedy, gdy każdy wątek jest w miarę
niezależny i rzadko komunikuje się z innymi
yj Ä™ y
wÄ…tkami - wymagana synchronizacja.
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
9
Wątki użytkownika (1)
Struktury związane ze stanami wątków tworzone
Struktury związane ze stanami wątków tworzone
sÄ… w przestrzeni adresowej procesu  jÄ…dro nie
wie o ich istnieniu.
Realizuje się to za pomocą funkcji z pakietów
bibliotecznych, takich jak C-threads w systemie
yj y
Mach i pthreads.
Implementacja wątków użytkownika jest możliwa
pj Ä… yj
dzięki temu, że kontekst wątku z poziomu
użytkownika można zapamiętać i odtworzyć bez
udziału jądra.
d i Å‚ j d
Każdy wątek użytkownika ma własny stos,
przestrzeń do zapisania kontekstu rejestrów z
t ń di i k t k t j t ó
poziomu użytkownika a także informacje o stanie
wątku jak maska sygnałów
wątku, jak maska sygnałów.
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
10
Wątki użytkownika (2)
Biblioteka szereguje wątki użytkownika i
Biblioteka szereguje wątki użytkownika i
przełącza kontekst między nimi, zachowując
stos i rejestry wątku bieżącego oraz odtwarzając
jy Ä… Ä… gjÄ…
stos i rejestry wÄ…tku wybranego do wykonania.
ądro nadal odpowiada za przełączanie
JÄ… pp Ä…
procesów, ponieważ tylko ono ma przywilej
modyfikacji rejestrów zarządzania pamięcią.
Wątki użytkownika nie są zatem rzeczywistymi
jednostkami, które podlegają szeregowaniu,
j d i i t i h i t i i S j
jÄ…dro nie wie nawet o ich istnieniu. Szereguje
ono proces lub proces lekki, w obrębie którego
wykonują się wątki użytkownika
wykonują się wątki użytkownika.
Najważniejszą zaletą wątków użytkownika jest
ich wydajność
ich wydajność.
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
11
Wątki użytkownika
" ZarzÄ…dzanie wÄ…tkami wykonywane na
poziomie użytkownika (zbiór funkcji
bibliotecznych)
y )
" Przykłady
" Przykłady
- POSIX Pthreads
- Mach C-threads
- Solaris UI-threads
S l i UI th d
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
12
Przełączanie kontekstu wątków
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
13
Porównanie czasów wykonywania operacji
(system Solaris SPARCstation 2)
Czas tworzenia Czas
Czas tworzenia Czas
(mikrosekundy) synchronizacji
(mikrosekundy)
(mikrosekundy)
WÄ…tek 52 66
użytkownika
użytkownika
Proces lekki 350 390
Proces (ciężki) 1700 200
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
14
Modele wielowątkowości
" Wiele-do-jednego
" Jeden-do-jednego
" Wiele-do-wielu
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
15
Model  wiele-do-jednego
" Wiee ą ó po o u u y o a
ele wątków poziomu użytkownika
mapowanych na pojedynczy wÄ…tek
jÄ…dra
jÄ…dra.
" Stosowany w systemach operacyjnych,
które nie wspomagają wątków jądra.
pg jÄ… Ä… jÄ…
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
16
Model  wiele-do-jednego
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
17
Model  jeden-do-jednego
" Każdy wątek poziomu użytkownika
posiada odpowiedni wÄ…tek jÄ…dra.
ppÄ… jÄ…
" Przykłady
" Przykłady
- Windows NT/2000
- OS/2
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
18
Jeden-do-jednego
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
19
Model  wiele-do-wielu
" Pozwala na mapowanie wielu wątków
użytkownika na wiele wątków jądra.
y Ä… jÄ…
" System operacyjny tworzy niezbędną
liczbę wątków jądra
liczbę wątków jądra.
" Solaris (od wersji 2)
" Windows NT/2000 z pakietem
ThreadFiber
ThreadFiber
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
20
 Wiele-do-wielu
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
21
Obsługa wątków (1)
" Two e e Ä… u
orzenie wÄ…tku
 POSIX: pthread_create
 Windows: CreateThread,
Windows: CreateThread
CreateRomoteThread
" Usuwanie wÄ…tku
 POSIX: pthread_exit, pthread_cancel
p , p
 Windows: ExitThread, TerminateThread
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
22
Tworzenie wÄ…tku
" int pthread_create
int pthread_create(pthread_t * thread,
pthread create
pthread create(pthread t thread,
const pthread_attr_t * attr,
void * (*start_routine)(void *),
id * (* t t ti )( id *)
void *arg);
g);
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
23
Obsługa wątków (2)
" Wstrzymywanie i wznawianie wÄ…tku
 POSIX: brak
 Windows: SuspendThread, ResumeThread
" Zmiana priorytetu wÄ…tku
 POSIX: pthread_setschedprio,
pthread_setschedparam
th d t h d
 Windows: SetThreadPriority
" Oczekiwanie na zakończenie wątku
Oki i k Å„ i tk
 POSIX: pthread_join
 Windows: brak bezpośredniego wsparcia, należy
Wi d b k b ś d i i l ż
użyć odpowiednich mechanizmów synchronizacji
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
24
Przykład-1 (1)
#include
#include
#include
p
void *funkcja_wypisz_tekst ( void *ptr );
main()
main()
{ pthread_t thread1, thread2;
char message1 = "Watek 1";
char *message1 = Watek 1 ;
char *message2 = "Watek 2";
i t i t1 i t2
int iret1, iret2;
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
25
Przykład-1 (2)
/* Utwórz niezależne wątki, każdy z których wykonuje tę
samÄ… funkcjÄ™ */
f k j */
iret1 = pthread create( &thread1 NULL
iret1 = pthread_create( &thread1, NULL,
funkcja_wypisz_tekst, (void*) message1);
iret2 pthread create( &thread2, NULL,
iret2 = pthread_create( &thread2, NULL,
funkcja_wypisz_tekst, (void*) message2);
/* Poczekaj aż wątki zakończą swoje działanie */
pthread_join( thread1, NULL);
pthread_join( thread2, NULL);
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
26
Przykład-1 (3)
printf("Watek 1 zwrocił: %d\n", iret1);
printf( Watek 2 zwrocił: %d\n", iret2);
exit(0);
( );
}
void * funkcja_wypisz_tekst ( void *ptr )
{ char message;
{ char *message;
message = (char *) ptr;
printf("%s \n", message);
i tf("% \ ")
}
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
27
P-wÄ…tki
" Standard POSIX (IEEE 1003.1c)
dotyczący wywołań (API) systemowych.
y Ä… y y () y y
" API specyfikujÄ… biblioteki funkcji.
" Rozwiązanie przyjęte w systemach
Ri ij tt h
operacyjnych UNIX.
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
28
Obsługa wątków (3)
" Semantyka wywołań systemowych fork()
i exec().
()
" Kasowanie wątków
" Manipulowanie sygnałami
M i l i Å‚ i
" Da e specy c e ąt ó
ane specyficzne wątków
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
29
Solaris 2
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
30
Procesy w systemie Solaris
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
31
WÄ…tki w systemie Linux
" W jądrze systemu Linux nie odróżnia się pojęcia wątku
od procesu
od procesu.
" Procesy mogą współdzielić takie zasoby, jak:
 przestrzeń adresowa,
 otwarte pliki,
 informacje o systemie plików,
 procedury obsługi sygnałów.
procedury obsługi sygnałów
" Deskryptory procesów (o strukturze struct
task struct) przechowywane sÄ… na dwukierunkowej,
task_struct) przechowywane sÄ… na dwukierunkowej,
cyklicznej liście zadań.
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
32
WÄ…tki w systemie Linux
" Wątki tworzone są za pomocą wywołania
Wątki tworzone są za pomocą wywołania
systemowego clone().
clone
" Clone
" Clone()
" Clone pozwala zadaniu potomnemu
" Clone() pozwala zadaniu potomnemu
współdzielić przestrzeń adresową rodzica
(parent task process)
(parent task process)
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
33
Stany procesu (wÄ…tku) w systemie Linux
" TASK_RUNNING  wykonywanie lub gotowość (do
wykonania)
" TASK_INTERRUPTIBLE  oczekiwanie na zajście
zdarzenia lub sygnał
" TASK_UNINTERRUPTIBLE  oczekiwanie na zajście
zdarzenia, przy czym sygnały są ignorowane
" TASK_ZOMBI  stan zakończenia utrzymywany w
celu przechowania deskryptora procesu
celu przechowania deskryptora procesu
" TASK_STOP  zatrzymanie w wyniku otrzymania
sygnału (np SIGSTOP)
sygnału (np. SIGSTOP)
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
34
Stany procesu (wÄ…tku) w systemie Linux
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
35
WÄ…tki Windows 2000/XP
Proces stanowi środowisko do wykonywania
wątków.
Struktury opisu procesu obejmujÄ…:
y p p j jÄ…
 EPROCESS  blok centrum wykonawczego,
opisujÄ…cy proces,
p jÄ… y p ,
 KPROCESS  blok kontrolny procesu, część
struktury EPROCESS,
struktury EPROCESS,
 PEB  blok środowiska procesu, dostępny w trybie
użytkownika.
y
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
36
WÄ…tki Windows 2000/XP
Implementacja modelu  jeden-do-
pj j
jednego .
Każdy wątek zawiera
Każdy wątek zawiera
- id
- zbiór rejestrów
- odseparowane stosy użytkownika i jądra
py jÄ…
y
- prywatny obszar danych
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
37
WÄ…tki Windows 2000/XP
Wątki korzystają z zasobów przydzielonych procesom.
Wątki (nie procesy) ubiegają się o przydział procesora i
W tki ( i ) bi j i d i Å‚ i
są szeregowane przez planistę krótkoterminowego.
Struktury opisu wÄ…tku obejmujÄ…:
Struktury opisu wÄ…tku obejmujÄ…:
 ETHREAD  blok centrum wykonawczego, opisujÄ…cy
wÄ…tek,
Ä…
 KTHREAD  blok kontrolny procesu, część struktury
ETHREAD,
 TEB  blok środowiska procesu, dostępny w trybie
TEB blok środowiska procesu dostępny w trybie
użytkownika.
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
38
Stany wÄ…tku w Windows 2000/XP
Inicjalizowany (initialized, wartość 0)  stan
wewnętrzny w trakcie tworzenia wątku
wewnętrzny w trakcie tworzenia wątku,
Gotowy (ready, wartość 1)  oczekuje na przydział
procesora
procesora,
Wykonywany (running, wartość 2),
Czuwający (standby, wartość 3)  wybrany do
Czuwający (standby, wartość 3) wybrany do
wykonania jako następny,
Zakończony (terminated, wartość 4),
y ( , ),
OczekujÄ…cy (waiting, wart. 5)  oczekuje na zdarzenie,
Przejście (transition, wartość 6)  oczekuje na
sprowadzenie swojego stosu jÄ…dra z pliku wymiany,
Unknown (wart. 7)
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
39
Stany wÄ…tku w Windows 2000/XP
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
40
WÄ…tki Javy
" WÄ… p g y gÄ… y
ątki w programach Javy mogą być
tworzone przez:
 KlasÄ™ Thread (metoda Run)
 ImplementacjÄ™ Runnable interface
Il t j Rbl i t f
" Watki sÄ… zarzÄ…dzane przez JVM.
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
41
Stany wątków Javy
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
42
Procesy współpracujące
" Proces niezależny nie może wpływać na
zachowanie innych procesów ani też inne
zachowanie innych procesów, ani też inne
procesy nie mogą oddziaływać na niego.
" Proces współpracujący może wpływać na
Pół j ż ł ć
zachowanie innych procesów, lub sam może
ulegać wpływom innych procesów.
l ć ł ih ó
" Korzyści z współpracy procesów
 Współdzielenie informacji
 Przyśpieszanie obliczeń
 Modularność
 Wygoda
yg
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
43
Problem producenta i konsumenta
" Paradygmat procesów
współpracujących proces producenta
współpracujących, proces producenta
producenta
producenta
dostarcza informacji, która jest
pobierana przez proces konsumenta
konsumenta.
 unbounded-buffer brak ograniczenia na
g
rozmiar bufora.
 bounded buffer zakłada się, że bufor ma
bounded-buffer zakłada się że bufor ma
ustalony rozmiar.
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
44
Ograniczony bufor  rozwiązanie oparte o współdzieloną
pamięć
" Współdzielone dane
#define BUFFER SIZE 10
#define BUFFER_SIZE 10
typedef struct {
. . .
} item;
item buffer[BUFFER_SIZE];
i t i 0
int in = 0;
int out = 0;
" RozwiÄ…zanie poprawne lecz
" RozwiÄ…zanie poprawne, lecz
wykorzystujemy jedynie BUFFER_SIZE-
1 elementów
1 elementów.
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
45
Ograniczony bufor  Proces producenta
item nextProduced;
item nextProduced;
while (1)
while (1)
{
while (((in + 1) % BUFFER_SIZE) == out)
; /* nic nie rób */
buffer[in] = nextProduced;
in=(in+1) %BUFFER SIZE;
in = (in + 1) % BUFFER_SIZE;
}
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
46
Ograniczony bufor  proces konsumenta
item nextConsumed;
item nextConsumed;
while (1)
while (1)
{
while (in == out)
while (in == out)
; /* czekaj */
nextConsumed = buffer[out];
tC d b ff [ t]
out = (out + 1) % BUFFER_SIZE;
}
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
47
Komunikacja między procesami Interprocess Communication (IPC)
" Mechanizmy komunikacji między procesami i
M h i k ik ji i di i
synchronizacji ich działań.
" System komunikatów procesy komunikują się
" System komunikatów  procesy komunikują się
między sobą bez uciekania się do współdzielenia
zmiennych.
e yc
" IPC dostarcza dwóch operacji:
 send(komunikat)  stały bądz zmienny rozmiar komunikatu
( ) y Ä… y
 receive(komunikat)
" Jeżeli P i Q potrzebują nawiązać komunikację,
powinny podjąć działania:
 ustanowić łącze komunikacyjne między nimi
Å‚Ä…cze komunikacyjne
 dokonać wymiany komunikatów za pomocą send/receive
d k ć ik ik tó d/ i
" Implementacja Å‚Ä…cza komunikacyjnego
 fizyczna (np.:, współdzielona pamięć, magistrala sprzętowa)
fizyczna (np : współdzielona pamięć magistrala sprzętowa)
 logiczna
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
48
Kwestie implementacyjne
" W jaki sposób ustanawiane są łącza?
" Czy łącze może być powiązane z więcej niż
C ł ż b ć i i j iż
dwoma procesami?
" Jak wiele łączy może być ustanowionych
między każdą parą komunikujących się
procesów?
" Jaka jest pojemność łącza?
jp j Ä…
" Jaki jest rozmiar komunikatów  stały czy
zmienny?
zmienny?
" Czy łącze może być jedno- czy
wielokierunkowe?
wielokierunkowe?
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
49
Komunikacja bezpośrednia
" Procesy muszą być jawnie określone:
 send (P, komunikat)  wyślij komunikat do procesu P
 receive(Q, komunikat)  odbierz komunikat od procesu Q
" Własności łącza:
Własności łącza:
 Aącze jest ustanawiane automatycznie między procesami.
Procesy Ä… j y jy y
y muszą jedynie znać swoje identyfikatory.
 Aącze ustanawiane jest między dwoma procesami.
 Między każdą parą komunikujących się procesów istnieje
d kł d i j d ł
dokładnie jedno łącze.
 Aącze może być jednokierunkowe, lecz zazwyczaj jest
dwukierunkowe.
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
50
Pośrednia komunikacja międzyprocesowa
" Komunikaty sÄ… przekazywane przez skrzynki
pocztowe (również nazywane portami).
 Każda skrzynka posiada unikalny identyfikator.
K żd k k i d ik l id t fik t
 Procesy komunikujące się muszą mieć dostęp do
wspólnej skrzynki
wspólnej skrzynki.
" Własności łącza:
 Aącze między procesami jest ustanawiane tylko
 Aącze między procesami jest ustanawiane tylko
wówczas gdy dzielą one skrzynkę
 Aącze może być związane z więcej niż dwoma
Ä… y Ä… Ä™ j
procesami.
 Każda para komunikujących się procesów może
mieć kilka łączy, z których każde odpowiada
i ć kilk ł któ h k żd d i d
jakiejÅ› skrzynce pocztowej.
 Aącze może być jedno lub dwukierunkowe.
Aącze może być jedno- lub dwukierunkowe
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
51
Komunikacja pośrednia
" Operacje
 utwórz nową skrzynkę pocztową
 wyślij i odbierz komunikat do/ze skrzynki
 usuń skrzynkę
" Prymitywy:
send(A, komunikat)  umieść komunikat w
skrzynce A
sy ce
receive(A, komunikat)  odbierz komunikat ze
skrzynki A
skrzynki A
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
52
Komunikacja pośrednia
" Współdzielenie skrzynki
 P1, P2 oraz P3 współdzielą skrzynkę pocztową A.
P P oraz P współdzielą skrzynkę pocztową A
 P1, wysyła; P2 i P3 odbierają.
 Który proces otrzyma komunikat?
Który proces otrzyma komunikat?
" RozwiÄ…zania
 Zezwolenie na ustanowienie łącza jedynie między
dwoma procesami.
 Zezwolenie jedynie jednemu procesowi w danym
Zl i j d i j d i d
czasie na odbieranie komunikatu (wykonanie
receive)
receive).
 System arbitralnie wybiera odbiorcÄ™. Nadawca jest
powiadamiany, kim jest odbiorca
py, j
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
53
Synchronizacja
" Przekazywanie komunikatów może być
blokowane lub nie-blokowane.
blokowane lub nie blokowane.
" Blokowanie jest rozważane jako
synchroniczne.
hi
" Nie-blokowane jest asynchroniczne
j y
" Prymitywy send i receive mogą być
blokowane i nie blokowane
blokowane i nie-blokowane.
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
54
Buforowanie
Kolejki komunikatów związane z łączem mogą
być implementowane na jeden z trzech
być implementowane na jeden z trzech
sposobów:
1 Zj ść 0 kik tó
1.Zerowa pojemność  0 komunikatów
Nadawca musi czekać na odbiorcę (mechanizm
spotkania rendezvous)
spotkania - rendezvous).
2.Ograniczona pojemność  stała długość n
komunikatów
o u a ó
Nadawca musi czekać jeżeli łącze jest pełne.
3.Nieograniczona pojemność  nieograniczona
gp j g
długość
Nadawca nigdy nie czeka.
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
55
Komunikacja klient - serwer
" Gniazda (Sockets)
" Gniazda (Sockets)
" Zdalne wywoływanie procedur
y yp
(Remote Procedure Calls)
" Remote Method Invocation (Java)
Rt M th d I ti (J )
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
56
Gniazda
" Gniazdo jest punktem końcowym dla
komunikacji.
j
" Konkatenacja adresu IP i numeru portu.
" Gniazdo 161.25.19.8:1625 odnosi siÄ™ do
G i d 161 25 19 8 1625 di i d
portu 1625 na hoście 161.25.19.8
" Komunikacja odbywa się pomiędzy parą
gniazd
gniazd.
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
57
Komunikacja za pomocÄ… gniazd
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
58
Remote Method Invocation
" RMI jest mechanizmem języka Java
podobnym do RPC
podobnym do RPC.
" RMI pozwala programowi napisanemu w
J i d i Å‚ j j d j i
Javie, działającemu na jednej maszynie
wywołać metodę obiektu na zdalnej maszynie.
© Z. ZieliÅ„ski
Instytut Teleinformatyki i Automatyki ©2007
59


Wyszukiwarka

Podobne podstrony:
Lab 05 Proces i watki wprowadzenie
Wykład 05 Opadanie i fluidyzacja
Prezentacja MG 05 2012
2011 05 P
05 2
ei 05 08 s029
ei 05 s052
05 RU 486 pigulka aborcyjna

więcej podobnych podstron