PS IV

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

Wykład z Programowania Sieciowego

Programowanie wielowątkowe

i komunikacja międzyprocesowa

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

Tematyka wykładu

Wielowątkowość i

serwery sieciowe

Procesy

Wątki

Komunikacja międzyprocesowa

Synchronizacja

Wielowątkowość w systemie UNIX

R Stevens

Programowanie usług sieciowych w systemie Unix tom 2 WNT

2001

Programowanie wielowątkowe w systemie UNIX

1.

Pojęcie wielowątkowości

2.

Typy wielowątkowości w systemie UNIX

Program wieloprocesowy

1.

Program wielowątkowy

3.

Systemy operacyjne i wielowątkowość

1.

Tworzenie wątków

1.

fork, exec , exit

2.

pthreads

4.

Komunikacja między-procesowa

1.

Pipes and fifos

2.

Message Queues

3.

Mutexes Condition Variables

4.

Read-Write Lock

5.

Rekord Locking

6.

Semaphores

1.

Posix

2.

System V

7.

Shared Memory

WIELOWĄTKOWOŚĆ

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

Typologia serwerów

Typy serwerów

Serwer

jednowątkowy

Serwer

wielowątkowy

Serwer pozornie

wielowątkowy

Obsługa klienta

Oczekiwanie

Zalety
• Prostota implementacji
• Nadaje się do systemów

operacyjnych/środowisk jednowątkowych

• Małe wymagania pamięciowe

Wady
• Nadaje się tylko do usług krótkotrwałych
• Klient blokując swoją sesje blokuje cały

serwer

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

Utworzenie nowego

procesu

Oczekiwanie

Wątek

główny

Typologia serwerów

Typy serwerów

Serwer

jednowątkowy

Serwer

wielowątkowy

Serwer pozornie

wielowątkowy

Stop

Start

Obsługa

klienta

Stop

Start

Obsługa

klienta

Zalety

Implementacja umiarkowanie trudna

Obsługuje wielu klientów jednocześnie

Nadaje się do usług krótko i długotrwałych

Odporny na błędy. Klient blokując swoją sesję
nie ma wpływu na pozostałych klientów

Wady

Stosunkowo powolny

Możliwy do
zaimplementowania w
systemach operacyjnych
wspierających
wielowątkowość

Wymaga sporych zasobów
pamięciowych

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

Typologia serwerów

Typy serwerów

Serwer

jednowątkowy

Serwer

wielowątkowy

Serwer pozornie

wielowątkowy

E.O. klient 1

Sprawdzenie

E.O. klient 2

....

E.O. klient n

Dołączenie

nowego klienta

Zalety

Szybki w działaniu

Obsługuje wielu klientów jednocześnie

Nadaje się do usług krótko i długotrwałych

Możliwy do zaimplementowania w systemach
nie wspierających wielowątkowości

Wady

Trudny do implementacji

Łatwy do zawieszenia przez
klientów

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

Typologia serwerów

 serwery przechowujące stan interakcji ( stanowe )

 serwer nie przechowujący stanu interakcji (bez-stanowy)

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

Procesy

Stos

Stan Procesora

Stos

Stan Procesora

Zmienne

globalne

Sterta

zmiennych

dynamicznych

Zmienne

globalne

Sterta

zmiennych

dynamicznych

Program 1

Program 2

System

operacyjny

System

operacyjny

Sprzęt

Sprzęt

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

Wątki w ramach procesu

Stos

Stan Procesora

Stos

Stan Procesora

Zmienne globalne

Sterta zmiennych dynamicznych

System

operacyjny

System

operacyjny

Sprzęt

Sprzęt

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

Procesy programy i wątki

• Program to zbiór rozkazów procesora zorganizowany w

postaci pliku dyskowego czytelnego dla systemu

operacyjnego.

• Proces to reprezentacja programu w pamięci systemu

operacyjnego połączona ze strukturami systemu takimi

jak kontekst procesu.

• Wątki są składnikami procesu

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

Procesy i programy

Diagram przejść międzystanowych procesu
TW Wykonywany w trybie użytkownika
TJ Wykonywany w trybie jądra
RD Gotowy do wykonania
Z Stan zombie
ŚP Śpi w pamięci
ŚD

Śpi w pamięci SWAP

RDD Gotowy do wykonania w pamięci SWAP
U Utworzony
W

Wywłaszczony

TU

TJ

RD

ŚP

ŚD

RDD

U

W

Z

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

Funkcja select

Definicja

int select ( int nfds, fd_set FAR* readfds,

fd_set FAR*
writefds, fd_set FAR* exceptfds,

const struct timeval FAR *
timeout );

\nfds

- ilość deskryptorów testowanych funkcją select. W Windows parametr

ignorowany
readfds/writefds/except - wskaźnik do struktury fd_set zawierającej deskryptory
testowane na

możliwość odczytu/zapisu/obecność danych

pilnych
timeout - ilość czasu w [ms], którą funkcja select czeka na wystąpienie zdarzenia
na testowanych deskryptorach

Parametry

Funkcja czeka na wystąpienie zdarzenia na jednym z wyspecyfikowanych
deskryptorów. Zdarzeniem jest gotowość urządzenia do odczytu , zapisu lub
wystąpienie błędu

Opis

Ilość deskryptorów dla których zaszło zdarzenie wyzwalające w przypadku
sukcesu lub wartość SOCKET_ERROR w przypadku błędu

Wartość zwrotna

Windows NT: Tak
Windows: Tak
Windows CE: W wersji 1.0 i późniejszych.
Nagłówek: Zadklarowana w winsock2.h.
Biblioteka importowa: ws2_32.lib.

accept, connect, recv, recvfrom, send,

WSAAsyncSelect, WSAEventSelect

Patrz także

Informacja skrótowa

struct fd_set {
u_int fd_count;
SOCKET fd_array[ FD_SETSIZE ];
} fd_set;

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

Funkcja fork

Definicja

pid_t fork(void);

brak

Parametry

Tworzy nowy proces , który jest dokładną kopią istniejącego programu.
Proces tworzący nowy wątek jest procesem rodzicielskim , proces utworzony
jest procesem potomnym.

Opis

Proces rodzicielski identyfikator procesu potomnego
Proces potomny 0

Wartość zwrotna

Windows NT: Nie
Windows: Nie\

Windows CE: Nie

Linux : Tak

Solaris: Tak

fork1, alarm(2),exec(2),exit(2),fcntl(2),getitimer(2),

getrlimit(2),memcntl(2), mmap(2), nice(2), priocntl(2),

ptrace(2), semop(2), shmop(2), times(2), umask(2), wait(2),

exit(3C), plock(3C), pthread_atfork(3T), signal(3C),

system(3S), thr_create(3T) timer_create(3R),

attributes(5),standards(5)

Patrz także

Informacja skrótowa

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

Funkcja fork

Definicja

pid_t fork(void);

brak

Parametry

Tworzy nowy proces , który jest dokładną kopią istniejącego programu.
Proces tworzący nowy wątek jest procesem rodzicielskim , proces utworzony
jest procesem potomnym.

Opis

Proces rodzicielski identyfikator procesu potomnego
Proces potomny 0

Wartość zwrotna

Windows NT: Nie
Windows: Nie\

Windows CE: Nie

Linux : Tak

Solaris: Tak

fork1, alarm(2),exec(2),exit(2),fcntl(2),getitimer(2),

getrlimit(2),memcntl(2), mmap(2), nice(2), priocntl(2),

ptrace(2), semop(2), shmop(2), times(2), umask(2), wait(2),

exit(3C), plock(3C), pthread_atfork(3T), signal(3C),

system(3S), thr_create(3T) timer_create(3R),

attributes(5),standards(5)

Patrz także

Informacja skrótowa

....
if ( pid = fork() )
{
...
} else
{

}

....
if ( pid = fork() )
{
// PROCES RODZICIELSKI
} else
{

....
if ( pid = fork() )
{
...
}else
{
// PROCES POTOMNY
}

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

Współpraca procesów i wątków

Proces 1

Proces 2

Jądro systemu

System Plików

Proces 1

Proces 2

Jądro systemuStr. Jądra

Proces 1

Proces 2

Pamięć

współdzielona

Wymiana danych za
pośrednictwem systemu plików

Wymiana danych za
pośrednictwem struktur jądra

Wymiana danych za
pośrednictwem pamięci dzielonej

IPC

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

Mechanizmy IPC

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

Trwałość obiektów IPC

Proces 1

Jądro systemu

System Plików

Trwałość w ramach Procesu

Trwałość w ramach Jądra

Trwałość w ramach systemu plików

Obiekt IPC jest usuwany

najpóźniej wtedy gdy
proces który go utworzył
kończy działanie

Obiekty trwają najpóźniej do momentu

jawnego usunięcia lub zakończenia
działania systemu

Obiekty trwają do momentu

jawnego usunięcia

Obiekt IPC

Trwałość

Łącze komunikacyjne
FIFO

Proces

Mutex ( posix )
Zmienna warunkowa (
posix)
Rygiel RW( posix )
Rygiel rekordów
( posix )
Semafor w pamięci

Proces

Kolejka komunikatów
Nazwany semafor
Pamięć współdzielona

Jądro

Kolejka komunikatów
Semafor
Pamięć współdzielona

Jądro

Gniazdo TCP/UDP
Gniazdo UNIX

Proces

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

POSIX IPC

Kolejki
komunikató
w

Semafory

Pamięć
współdzielo
na

Tworzen
ie/
usunięci
e

mq_open
mq_close
mq_unlink

sem_open
sem_clos
e
sem_unlin
k
sem_init
sem_destr
oy

shm_open
shm_unlink

Zmiana
paramet
rów

mq_getattr
mq_setattr

ftruncate
fstat

Wymian
a
danych/
operowa
nie na

mq_send
mq_receive
mq_notify

sem_wait
sem_tryw
ait
sem_post
sem_getv
alue

mmap
munmap

S_TYPEISMQ
S_TYPEISSEM
S_TYPEISSHM

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

POSIX IPC

Kolejki
komunikató
w

Semafory

Pamięć
współdzielo
na

Tworzen
ie/
usunięci
e

mq_open
mq_close
mq_unlink

sem_open
sem_clos
e
sem_unlin
k
sem_init
sem_destr
oy

shm_open
shm_unlink

Zmiana
paramet
rów

mq_getattr
mq_setattr

ftruncate
fstat

Wymian
a
danych/
operowa
nie na

mq_send
mq_receive
mq_notify

sem_wait
sem_tryw
ait
sem_post
sem_getv
alue

mmap
munmap

S_TYPEISMQ
S_TYPEISSEM
S_TYPEISSHM

Pobranie statusu pliku
lstat, fstat, stat

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

POSIX IPC

Kolejki
komunikatów

Semafory

Pamięć
współdzielo
na

Tworzenie/
usunięcie

mq_open

sem_open

shm_open

Odczyt/zapis

O_RDONLY
O_WRONLY
O_RDWR

O_RDONLY

O_RDWR

Utworzenie/
wyłączność/inne

O_CREAT
O_EXCL
O_NONBLOCK

O_CREAT
O_EXCL

O_TRUNC

Int xxx_open( const char *name, u_int oflag )

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

Funkcja _beginthread

Definicja

unsigned long _beginthread( void ( __cdecl
*
start_address )( void * ), unsigned stack_size, void
*
arglist );

start_addres

- wskaźnik do funkcji wątku

addr

- rozmiar stosu

arglist

- wskaźnik do danych przekazywanych do funkcji wątku

Parametry

Funkcja tworzy nowy wątek wykonania aplikacji. Wątek ten tworzony jest na
podstawie funkcji podanej pierwszym argumentem. Dla utworzonego wątku
przydzielany jest stos o rozmiarze podanym drugim argumentem

Opis

-1 w przypadku błędu , 0 w przypadku powodzenia

Wartość zwrotna

Windows NT: Tak
Windows: Tak
Windows CE: W wersji 1.0 i późniejszych.
Nagłówek: process.h
Biblioteka importowa: libcmt.lib lub
msvcrt.lib

_beginthreadex

, CreateThread,

_endthread, _endthreadex

ExitThread, CloseHandle, select

Patrz także

Informacja skrótowa

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

Łącza i kolejki FIFO

#include <unistd.h>
int pipe( int fd[2] );

fd[0] - ODCZYT
fd[1] - ZAPIS

ls –la | grep „ala*” | rm

pipe_main.cpp

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

Łącza i kolejki FIFO

#include <unistd.h>
int pipe( int fd[2] );

ls –la | grep „ala*” | rm

pipe_main.cpp

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

Łącza i kolejki FIFO

#include <unistd.h>
FILE *popen(const char *cmd, const char *type );
int pclose( FILE *stream );

Proces

potomny

Proces

rodzicielski

fifo.c

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

Łącza i kolejki FIFO

FIFO umożliwiają jednokierunkowy przepływ danych)

Proces

potomny

Proces

rodzicielski

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

Kolejki komunikatów

Standard POSIX

#include <mqueue.h>

mqd_t mq_send ( mqd_t dscr, const char *ptr, size_t len, unsigned int prio ) ;
mqd_t mq_receive ( mqd_t dscr, char *ptr, size_t len, unsigned int *prio ) ;

background image

© 2008 dr inż.. Sławomir Jeżewski

Katedra Informatyki Stosowanej PŁ

Programowanie Sieciowe

Muteksy

Standard POSIX

Mutex (mutual exclusion) – jedna z form synchronizacji procesów koncepcyjnie

polegająca na wykluczających się alternatywach

CreateMutex
. . .

lock_the_mutex
. . .

unlock_mutex

#include <pthread.h>
int pthread_mutex_lock ( pthread_mutex_t *p ) ;
int pthread_mutex_trylock ( pthread_mutex_t *p ) ;
int pthread_mutex_unlock ( pthread_mutex_t *p ) ;

#include <pthread.h>
int pthread_mutex_init ( pthread_mutex_t *p, const pthread_mutexattr_t *attr ) ;
int pthread_mutex_destroy ( pthread_mutex_t *p ) ;


Document Outline


Wyszukiwarka

Podobne podstrony:
Wybrane zagadnienia ps Rozdział IV
Wybrane zagadnienia ps Rozdział IV
W. IV., PS w UE-Zakres gwarancji unijnych
wyklad IV
Mała chirurgia II Sem IV MOD
Temat IV 2 2
Pr UE Zródła prawa (IV 2013)
IV lek leczenie wspomagające w onkologii Żywienie
IV NIPiP Zmiany w podsystemie
PS VI
IV 1 2 Atrybuty Osobow
BIOMATERIALY IV 2010
PS spolecznosc lokalna 3
Zarządzanie skrzynką pocztową IV
Prezentacja wykłady I IV
1 Budownictwo ogólne sem IV

więcej podobnych podstron