Truyền thông giữa các tiến trình (Inter-Process communication)

–  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

pdf18 trang | Chia sẻ: lylyngoc | Lượt xem: 1819 | Lượt tải: 1download
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  .  
Tài liệu liên quan