Truyền thông giữa các tiến trình
(Inter-process communication)
Các chủ đề chính
– Các đặc trưng của IPC
– Truyền thông đồng bộ và bất đồng bộ
– Biểu diễn dữ liệu ngoài và marshalling
• CORBA’s Common Data Representation
• Java Object serialisation
– Truyền thông trong Client-Server
• Client-Server Communication
• Truyền thông bên trong các dịch vụ được một nhóm server cung
cấp
– Truyền thông nhóm
– IP multicast
Nhắc lại: Tiếp cận lớp
! The OSI model
Application
Presentation
Session
Transport
Network
Data
Physical
Application
Presentation
Session
– Một yêu cầu đơn giản là cả hai: các nơi nhận và các thông điệp liên
quan đến đồng bộ hóa (synchronisation)
Đồng bộ hóa
– Đồng bộ (blocking)
• Người gởi bị “khóa” nghĩa là bị “đóng băng” trong khi gởi
cho đến khi có phản hồi từ người nhận
• Người gởi và người nhận đồng bộ với nhau
– Bất đồng bộ (non-blocking)
• Người gởi có thể thực hiện xử lý một khi thông điệp đã được
gởi
– Các hệ thống hiện nay nhắm đến đồng bộ
– Bất đồng bộ làm cho mã chương trình thêm phức
tạp
Đồng bộ (tt.)
• Ví dụ
– Blocking:
• Yêu cầu rút tiền từ máy ATM
• Máy ATM bị khóa cho đến khi nhận được xác nhận quyền truy xuất từ
ngân hàng.
– Non-blocking
• Một DIS là non-blocking, nó cho pháp các xủa lý được thực hiện trong
khi đợi trả lời
• Email là một ví dụ trong thế giớ thực về thông điệp non-blocking
• Bạn gởi một email và rồi làm chuyện khác trong khi chờ trả lời
API & IP: truyền thông giữa các tiến trình
• Nơi đến của thông điệp
– Địa chỉ
• Địa chỉ xác định duy nhất một phần cứng, có thể là một máy
– Gán một cổng cục bộ đến một tiến trình
– Tiến trình trao đổi với socket – liên quan đến một cổng
– Các tiến trình chỉ có thể truy xuất thông điệp từ các
cổng liên kết đến socket của chúng
Truyền thông giữa các tiên trình
A computer, IP address = 138.37.543.345
client
ports
server
A computer, IP address = 138.37.53.349
ports
Port: 1
Port: 671
Port: 1
Port: 771
Socket maps to a port
Socket maps to a port
Truyền thông theo UDP
◦ UDP và phương pháp Datagram
" Datagram được gởi từ một tiến trình đến tiến trình nhận
" Tr ước hết người gởi (the client) và người nhận (the server) phải
được liên kết đến cùng một socket
" Client có thể liên kết đến bất kỳ cổng nào
" Server liên kết đến cổng bảng bá đã xác định để nhận thông điệp
" client gởi thông điệp của nó đến server bao gồm dịa chỉ nguwowgi
gởi (để nhận trả lời)
" server nhận và xử lý
" server gởi trả lời cho client thông qua địa chỉ và cổng
" connect
API & IP: truyền thông UDP
• In Java
• A DatagramPacket class contains:
• i.e.
In Java a DatagramPacket is constructed:
myPacket = new DatagramPacket(m,args[0].length(), aHost, serverPort);
Note: the DatagramPacket contains the host address (aHost) and the host port
(serverPort)
The message Length of message Internet address Port
3432 543 4531 13 145.25.123.871 589
API & IP: truyền thông UDP
• Trong'Java'
Trong'Java,'một'DatagramPacket'được'gởi'và'nhận'như'sau:'
'
'aSocket.send(myPacket);2
2aSocket.recieve(myPacket);2
'
Ghi'chú:'aSocket'là'một'thể'hiện'của'lớp'DatagramSocket'.'
'