Professional Documents
Culture Documents
Chuong 4. Lien Lac Giua Cac Tien Trinh - Ver - 03
Chuong 4. Lien Lac Giua Cac Tien Trinh - Ver - 03
Chương 4
LIÊN LẠC GIỮA CÁC TIẾN TRÌNH
• Ưu điểm: • Ưu điểm:
– Tiện lợi khi kích thước thông – Thực hiện nhanh hơn cơ chế
điệp nhỏ truyền thông điệp (chỉ dùng lời
– Dễ thực hiện trong các hệ gọi hệ thống xây dựng vùng
thống phân tán hơn cơ chế nhớ chung)
chia sẽ vùng nhớ
• Nhược điểm • Nhược điểm:
– Thực hiện chậm hơn cơ chế – Tốn kém bộ nhớ khi phải lưu
chia sẻ vùng nhớ (cần nhiều nhiều bản sao của vùng nhớ
lời gọi hệ thống để mới có thể chia sẻ trong mỗi tiến trình
truyền thông điệp) cần liên kết.
SIGSEGV Tiến trình truy xuất đến một địa chỉ bất hợp lệ
pipe
1/2016 Ch4. Liên lạc giữa các tiến trình 14
2/2
Liên lạc bằng đường ống (Pipe)
• Đồng bộ hoá đường ống khi
– Tiến trình đọc pipe sẽ bị khoá nếu pipe trống
– Tiến trình ghi pipe sẽ bị khoá nếu pipe đầy
• Thảo luận
– Ưu điểm
• Cho phép truyền dữ liệu không có cấu trúc
– Nhược điểm:
• Chi phí thực hiện cao (system call)
• Cơ chế liên lạc 1 chiều
• 2 đường ống (2 chiều): có thể xảy ra tình trạng tắc nghẽn
(deadlock): 2 pipe đều đầy ( hoặc đều trống) -> bị khoá và
chờ nhau mãi mãi.
• Chỉ cho phép kết nối hai tiến trình có quan hệ cha-con, và
trên cùng một máy tính
Map Map
Destination ID
Header Source ID
Message Length
Control Information
Máy X Máy Y
P
? Q
(UNIX)
(Windows)
1/2016 Ch4. Liên lạc giữa các tiến trình 22
1/13
Liên lạc qua socket
• Socket là endpoint của một kết nối hai chiều
• 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
• Mô tả:
– Sử dụng một transport protocol
– Cần đặc tả IP address 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
– Được hỗ trợ trong hầu hết các HĐH hiện đại
P
Socket Send()
(Windows)
Máy Y
Receive() Socket
Q
(UNIX)
1/2016 Ch4. Liên lạc giữa các tiến trình 25
4/13
Liên lạc qua socket
• Hai phương thức liên lạc:
– Conection-Oriented (TCP/IP)
• Stream
• Reliable
• Bi-directional communication
– Conectionless (UDP/IP)
• Datagram
• Unreliable
• Bi-directional communication
bind()
client listen()
socket()
accept()
connect() Blocks until connection from client
write() read()
Process request
read() write()
close() close()
1/2016 Ch4. Liên lạc giữa các tiến trình 33
12/13
Liên lạc qua socket
Server
• UDP system calls
socket()
bind()
Client
recvfrom()
socket()
Blocks until connection
from client
sendto()
Process request
Data (reply)
recvfrom() sendto()
close()
1/2016 Ch4. Liên lạc giữa các tiến trình 34
13/13
Liên lạc qua socket
• Socket 161.25.19.8:1625 nghĩa là port 1625 trên
host 161.25.19.8
– Việc liên lạc gồm một cặp socket.