–  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
                
              
                                            
                                
            
                       
            
                 18 trang
18 trang | 
Chia sẻ: lylyngoc | Lượt xem: 1974 | Lượt tải: 1 
              
            Bạn đang xem nội dung tài liệu Truyền thông giữa các tiến trình (Inter-Process communication), để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
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 
Transport 
Network 
Data 
Physical 
The network 
A message, 
descends 
through the 
layers 
Then ascends 
through the 
layers at the 
receiver 
A HOST – A COMPUTER A HOST – A COMPUTER 
Bài này tập trung vào Middle ware 
Application: Applications, services 
RMI and RPC 
Request Reply Protocol (RRP) 
Marshalling and external data representation 
Middleware 
layers 
Transport: UDP and TCP 
Other lower lever layers… 
Các cơ sở của thông điệp 
•  API (application programming interface) 
–  Trong ngữ cảnh của bài này, nó đề cập đến một interface cho các lập 
trình viên ứng dụng sử dụng UDP hoặc TCP 
•  Chuyển thông điệp có hai tác vụ chính 
–  Gửi và nhận (Request and Reply) 
–  một tiến trình gởi đến các người nhận khác 
–  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 
tính 
•  Một cổng cục bộ là một nơi đến trên một máy tính 
–  Một hoặc nhiều thông điệp có thể được gởi đến các cổng 
–  Các tiến trình có thể sử dụng một hay nhiều cổng để nhận thông 
điệp 
Address + port 
156.254.12.35:875 
API & IP: truyền thông giữa các tiến trình 
•  Các vấn đề cần quan tâm trong truyền thông 
giữa các tiến trình 
–  Độ tin cậy (Reliability) 
•  Các hệ thống có thể tin cậy không nên làm hư thông điệp ngay cả 
nếu các gói bị mất hay bị hủy 
–  Tính thứ tự (Ordering) 
•  Thông điệp được phân phối theo thứ tự gởi 
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 
Truyền thông tiến trình và Sockets 
•  Sockets 
–  Là một sự trừu tượng theo đó tiến trình liên kết đến 
một socket có quan hệ đến một cổng 
–  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 
Truyền thông UDP (tt.) 
  Phương thức send là non-blocking (asynchronous) 
◦  như vậy chúng ta tự do khi đã gởi 
  Phương thức nhận là blocking (synchronous), mặc dù các 
threads khác có thể được dùng để tiến hành các công việc 
khác. 
  Nhận có thể dùng time-outs để giới hạn thời gian bị block. 
◦  Tuy vậy việc xác định gia trị timeout tốt là khó 
  Thông điệp nhận được được lưu trữ trong hàng đợi liên kết 
với socket. 
  Người nhận kiểm tra socket liên kết để nhận thông điệp 
  Các thông điệp nhận được có thể đến từ khắp nơi 
Truyền thông UDP 
◦  Sử dụng UDP và phương pháp Datagram 
  Hiệu quả khi không quan tâm đến sự cố và khả năng chịu lỗi 
  i.e. naming services 
  Hiệu quả vì giảm các truyền thông bắt tay để bảo đảm các phương 
thức phân phối 
Truyền thông UDP 
  UDP và phương pháp Datagram 
◦  Ví dụ về phương thức: 
  aSocket.send(request) 
  aSocket.recieve(reply) 
  ở đây cả hai request và reply và các gói Datagram 
◦  Các phương thức khác: 
  setSoTimeout 
  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);	
  
	
  aSocket.recieve(myPacket);	
  
Ghi	
  chú:	
  aSocket	
  là	
  một	
  thể	
  hiện	
  của	
  lớp	
  DatagramSocket	
  .