truyền thông giữa các tiến trình

3 396 0
truyền thông giữa các tiến trình

Đang tải... (xem toàn văn)

Thông tin tài liệu

10/21/2010 1 TruyTruyềềnn thôngthông gigiữữaa cáccác titiếếnn trìnhtrình ((InterInter process communication)process communication) CácCác chchủủ ññềề chínhchí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àExternal data representation and 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 NhNhắắcc llạạii: : TiTiệệpp ccậậnn llớớpp  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àiBài nàynày ttậậpp trungtrung vàovào Middle wareMiddle 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ácCác ccơơ ssởở ccủủaa thôngthông ñiñiệệpp • 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) ððồồngng bbộộ hóahó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 10/21/2010 2 ððồồngng bbộộ ((tttt.).) • 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: API & IP: truytruyềềnn thôngthông gigiữữaa cáccác titiếếnn trìnhtrì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: API & IP: truytruyềềnn thôngthông gigiữữaa cáccác titiếếnn trìnhtrì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 TruyTruyềềnn thôngthông gigiữữaa cáccác titiếếnn trìnhtrì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 TruyTruyềềnn thôngthông titiếếnn trìnhtrình vàvà SocketsSockets • 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 TruyTruyềềnn thôngthông gigiữữaa cáccác tiêntiên trìnhtrì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 10/21/2010 3 TruyTruyềềnn thôngthông theotheo UDPUDP ◦ 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 TruyTruyềềnn thôngthông UDP (UDP (tttt.).)  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 TruyTruyềềnn thôngthông UDPUDP ◦ 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 TruyTruyềềnn thôngthông UDP 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: API & IP: truytruyềềnn thôngthông UDPUDP • 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: API & IP: truytruyềềnn thôngthông UDPUDP • 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 . . cáccác titiếếnn trìnhtrì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. 10/21/2010 1 TruyTruyềềnn thôngthông gigiữữaa cáccác titiếếnn trìnhtrình ((InterInter process communication)process communication) CácCác chchủủ ññềề chínhchính – Các ñặc trưng của IPC – Truyền thông ñồng bộ. 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 TruyTruyềềnn thôngthông gigiữữaa cáccác

Ngày đăng: 31/01/2015, 11:20

Tài liệu cùng người dùng

Tài liệu liên quan