Tải bản đầy đủ (.pdf) (29 trang)

chương8 :Liên lạc giữa các tiến trình ppsx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (622.28 KB, 29 trang )

12/16/2007 Trần Hạnh Nhi 1
BÀI GIẢNG 8 : LIÊN LẠC GIỮA CÁC TIẾN TRÌNH
CƠ CHE
CƠ CHE
Á
Á
?
?
VA
VA
Á
Á
N
N
Đ
Đ
E
E
À
À
?
?
TRAO
TRAO
Đ
Đ
O
O
Å
Å
I THÔNG TIN GI


I THÔNG TIN GI
Ư
Ư
ÕA CA
ÕA CA
Ù
Ù
C TIE
C TIE
Á
Á
N TRÌNH
N TRÌNH
G
G


AI PHA
AI PHA
Ù
Ù
P ?
P ?
12/16/2007 Trần Hạnh Nhi 2
NhuCầuLiênLạc
Q
L
P
 Chia sẻ thông tin
R

 Phối hợp xử lý
P
JOB
R1
R2
L
Q
12/16/2007 Trần Hạnh Nhi 3
Các cơ chế liên lạc
 Chia sẻ tài nguyên chung
 Signal
 Pipe
 Shared Memory
 Trao đổi thông điệp
 Message
 Socket
12/16/2007 Trần Hạnh Nhi 4
IPC theo nguyên tắc chia sẻ tài nguyên chung
User Process User Process
OS - Kernel
shared
resources
Các tiến trình chia sẻ
Memory
File System Space
Communication Facilities, Common communication protocol
12/16/2007 Trần Hạnh Nhi 5
Signal
 Signal
 Meaning

 Handler
 Đònh nghóa trước khi thực hiện liên lạc
 SIGINT, SIGSTOP…
 SIGUSR1, SIGUSER2
 Hỗ trợ liên lạc
 Kernel với User Process
 Process Error
 Timer
 Child Process kết thúc…
 User process vơí nhau
 Terminate Process
 Suspend, Resume…
OS
Process
Signal handler
Signal Action
Signal
Name Value Function
SIGHUP 1 Terminal hangup
SIGINT 2 Interrupt by user: generated by < CTRL C >
SIGQUIT 3 Quit by user: generated by < CTRL \ >
SIGFPE 8 Floating point error such as divide by zero
SIGKILL 9 Kill the process
SIGUSR1 10 User defined signal 1
SIGSEGV 11
Segment violation: process has tried to access
memory not assigned to it
SIGUSR2 12 User defined signal 2
SIGALRM 14 Timer set with alarm() function has timed out
SIGTERM 15 Termination request

SIGCHLD 17 Child process termination signal
SIGCONT 18 Continue after a SIGSTOP or SIGSTP signal
SIGSTOP 19 Stop the process
SIGTSTP 20 Terminal stop: generated by < CTRL Z >
SIGWINCH 28 Change of window size
12/16/2007 Trần Hạnh Nhi 7
Nhận xét Signals
 Liên lạc không đồng bộ
 Không biết trước thời điểm
 Thiếu tin cậy
 Không cho phép trao đổi dữ liệu
Sig
Result
L
Q
SH
L
Q
Quiz : OK
?
A B
12/16/2007 Trần Hạnh Nhi 8
Pipes
 Pipe
 Kernel buffer (File) có kích thước giới hạn (4K, 8K…)
 HĐH cung cấp hàm WritePipe & ReadPipe
 WritePipe khi Pipe đầy ?
 ReadPipe khi Pipe rỗng ?
 Phảiù xét đến các khả năng đồng bộ
 Hỗ trợ liên lạc (UNIX original )

 Giữa 2 tiến trình Cha - Con
 Một chiều
 Không cấu trúc (byte transfer)
WritePipe() ReadPipe()
L
Q
B……….A
AB
AB
12/16/2007 Trần Hạnh Nhi 9
Nhận xét Pipe
 Ưu điểm :
 Cho phép trao đổi dữ liệu không cấu trúc
 Khuyết điểm
 Chi phí thực hiện cao (system call)
 Liên lạc giữa 2 tiến trình
 Liên lạc một chiều
 Pipe trong các HĐH hiện đại :
 Anomynous Pipe : This…
 Named Pipe : Unix , Windows NT…
 Truyền dữ liệu có cấu trúc
 Liên lạc 2 chiều
12/16/2007 Trần Hạnh Nhi 10
Shared Memory
 Shared Memory:
 Là một phần không gian nhớ không thuộc sở hữu của tiến trình
nào
 Được HĐH tạo ra
 Các tiến trình có thể ánh xạ đòa chỉ vào không gian chia sẻ này
để truy xuất dữ liệu (như đối với không gian nội bộ)

 Không giới hạn số lượng tiến trình, chiều trao đổi, và thứ tự
truy cập
 Mâu thuẫn truy xuất - > nhu cầu đồng bộ
12/16/2007 Trần Hạnh Nhi 11
IPC theo nguyên tắc trao đổi thông điệp
User Process
OS-Kernel
User Process
OS-Kernel
Network
 Không có bộ nhớ chung
 Cần có đường kết nối giữa các máy tính
12/16/2007 Trần Hạnh Nhi 12
Message
 Message
 Dữ liệu có cấu trúùc
 Cấu trúc và thông dòch msg được thỏa thuận giữa 2 tiến trình liên
lạc
 HĐH cung cấp 2 primitive chính
 send(destination, message)
 receive(source, message)
 Các vấn đề quan tâm :
 Direct or indirect addressing
 Blocking or non-blocking communication
 Reliable or unreliable communication
 Buffered or un-buffered communication
12/16/2007 Trần Hạnh Nhi 13
Ñònh daïng Message
12/16/2007 Trần Hạnh Nhi 14
Nhận xét message

 Là cơ chế IPC tổng quát
 Hỗ trợ liên lạc giữa các tiến trính trên cùng máy
 Hỗ trợ liện lạc giữa các tiến trính trong hệ thống phân tán
 Liên lạc giữa các hệ thống không đồng nhất ?
12/16/2007 Trần Hạnh Nhi 15
Máy A
(UNIX)
Máy B
(Windows)
Liên lạc giữa các hệ thống không đồng nhất
P1
P2
Send( ) //UNIX
Receive( ) //WIN
12/16/2007 Trần Hạnh Nhi 16
Socket
 Endpoint của một kết nối 2 chiều
 Tương đương với một network interface (hardware)
 Cho phép các ứng dụng “plug in” vào mạng một cách ẩn dụ
 Là một giao diện lập trình mạng
 Cho phép các tiến trình liên lạc 2 chiều với nhau
 Thiết lập liên lạc : tạo 2 socket, kết nối chúng với nhau
 Socket description
 Sử dụng một transport protocol
 Cần đặc tả IPaddress và port kết nối
 Được hỗ trợ đầu tiên trong Berkeley socket
 Là sự mở rộng của nhập xuất file trừu tượng
 Hiện nay được hỗ trợ trong hầu hết HĐH hiện đại
12/16/2007 Trần Hạnh Nhi 17
12/16/2007 Trần Hạnh Nhi 18

Socket Communication
12/16/2007 Trần Hạnh Nhi 19
Máy A
(UNIX)
Máy B
(Windows)
Liên lạc giữa các hệ thống không đồng nhất
P1
P2
Send( )
Receive( )
Socket
Socket
12/16/2007 Trần Hạnh Nhi 20
Liên lạc thông qua Socket
 Hỗ trợ 2 phương thức liên lạc
 Connection-oriented (TCP/IP)
 Stream
 Reliable
 Bi-directional communication
 Connectionless (UDP/IP)
 Datagram
 Unreliable
 Bi-directional communication
 Cho phép liên lạc giữa các tiến trình trên các mạng không
đồng nhất
12/16/2007 Trần Hạnh Nhi 21
Phương thức Connection-Oriented
 Thực hiện trên TCP (Transmission Control Protocol.)
 Phải thực hiện kết nối giữa 2 tiến trình trước khi trao đổi dữ liệu

 Tương tự hệ thống điện thoại
 Dữ liệu được phân phối

in sequence
.

guaranteed
.
 Kết nối kết thúc khi liên lạc chấm dứt
 2 modes:
 Iterative (synchronous)
 Concurrent (asynchronous)
12/16/2007 Trần Hạnh Nhi 22
Phương thức Connectionless
 Thực hiện trên UDP (User Datagram Protocol)
 Không yêu cầu kết nối tồn tại trước khi truyền dữ liệu
 Tương tự hệ thống thư tín
 Dữ liệu truyền có thể bò mất mát hay không đúng trật tự
 2 modes:
 Iterative (synchronous)
 Concurrent (asynchronous)
12/16/2007 Trần Hạnh Nhi 23
Caáu truùc ñòa chæ Socket
 Generic socket address structure:
 struct sockaddr {
sa_family_t sa_family; /* address family */
char sa_data[14]; /* socket address */
};
 A popular BSD-derived implementation:
 struct sockaddr_in {

sa_family_t sin_family; /* address family */
in_port_t sin_port; /* protocol port number */
struct in_addr sin_addr; /* IP addr in NW byte
order */
char sin_zero[8]; /* unused, set to zero */
};
12/16/2007 Trần Hạnh Nhi 24
Port Numbers
 Port là 1 khái niệm trừu tượng được TCP/UDP sử dụng
để phân biệt các ứng dụng trên một máy chủ
 Một port được xác đònh bằng 1 số nguyên 16 bit là
port
number
.
 3 miền giá trò đươc dành cho
 Well-known ports (0-1023)
 Registered ports (1024-49151)
 Dynamic ports (49512 – 65535)
12/16/2007 Trần Hạnh Nhi 25
Some Well-Known Ports

×