chương 4: phỐi hỢp giao tiẾp cÁc tiẾn trÌnh
DESCRIPTION
Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH. GV. Ngô Thanh Huy. Giới thiệu. Các tiến trình tương tác với nhau bằng mô hình truyền thông chuyên biệt để hợp tác thực thi các xử lý Truyền thông liên tiến trình (Interprocess communication - IPC) Phối hợp các tiến trình phân tán - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/1.jpg)
1
Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH
GV. Ngô Thanh Huy
![Page 2: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/2.jpg)
2
Giới thiệu
• Các tiến trình tương tác với nhau bằng mô hình truyền thông chuyên biệt để hợp tác thực thi các xử lý– Truyền thông liên tiến trình (Interprocess communication - IPC)– Phối hợp các tiến trình phân tán
• Message passing: phương thức trao đổi dữ liệu giữa các tiến trình trong hệ phân tán– Tất cả các mô hình truyền thông liên tiến trình (interprocess) ở các
mức cao phải được xây dựng dựa trên Message passing– Tất cả các tiến trình trong hệ phân tán phối hợp với nhau dựa trên
mô hình truyền thông điệp liên tiến trình
![Page 3: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/3.jpg)
3
Các mức truyền thông
Interprocess communication Transaction– Database systems– …
Request/reply (RPC)– Client/Server– Service-oriented
Message passingNetwork operating system Transport connectionCommunication network Packet switching
![Page 4: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/4.jpg)
4
Message Passing Communication
![Page 5: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/5.jpg)
5
Tổng quan
• Phương thức chung cho truyền thông liên tiến trình (IPC)– Cho các tiến trình trong cùng một máy tính– Cho các tiến trình trong hệ thống phân tán
• Cung cấp cơ chế đồng bộ hóa tiến trình• Thông điệp (message)
– Tập hợp các đối tượng dữ liệu dạng “đánh máy”– Các cấu trúc và các thể hiện được định nghĩa bởi các ứng dụng ngang hàng
• Vấn đề chính– Direct or indirect addressing– Blocking or non-blocking communication– Reliable or unreliable communication– Buffered or un-buffered communication
![Page 6: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/6.jpg)
6
Message format
• Bao gồm header và nội dung thông điệp
• Cấu trúc có thể khác trong các hệ thống khác nhau
• Thông tin điều khiển: – Làm gì khi vượt ra ngoài vùng
đệm– Các chuỗi số– Độ ưu tiên...
• Qui tắc hàng đợi: thường sử dụng FIFO nhưng cũng có thể bao gồm độ ưu tiên
![Page 7: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/7.jpg)
7
Giao tiếp nguyên thủy (I)
• Truyền thông điệp cơ bản– send(destination, message)– receive(source, message)
• Đánh địa chỉ nguồn và đích – Tên tiến trình, link, hộp thư (mailbox), port
• Direct communication: symmetric/asymmetric process name, links– Khi một tiến trình có một định danh cụ thể được sử dụng làm nguồn/đích
• Indirect communication: many-to-many mailbox, many-to-one port– Thông điệp được gửi đến một hộp thư chia sẻ với một hàng đợi các thông
điệp– Phía gửi đặt tin nhắn trong hộp thư, phía nhận đến lấy tin nhắn
![Page 8: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/8.jpg)
8
Giao tiếp nguyên thủy (II)
• Truyền thông trực tiếp bằng tên tiến trình– Định danh tiến trình toàn cục = địa chỉ host + Định danh tiến trình
cục bộ– Chỉ tồn tại một kết nối truyền thông luận lý giữa 2 phía nhận/gửi– Địa chỉ đối xứng: phía gửi xác định địa chỉ phía nhận và ngược lại– Địa chỉ bất đối xứng : phía nhận có thể nhận thông điệp từ nhiều
nguồn khác nhau; phía gửi cần xác nhận phía nhận• Truyền thông trực tiếp bằng các link
– Cho phép nhiều kết nối (path) giữa các tiến trình– Links
• Tạo và giải phóng bởi request• Quản lý cục bộ bởi hệ thống
![Page 9: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/9.jpg)
9
Giao tiếp nguyên thủy- truyền/nhận trực tiếp
SymmetricProcess Name
AsymmetricProcess Name
Links
![Page 10: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/10.jpg)
10
Giao tiếp nguyên thủy (III)
• Truyền thông gián tiếp– Tiến trình gửi không quan tâm đến các ID của phía nhận cũng như
thông điệp nhận được bởi một tiến trình – Tiến trình nhận chỉ quan tâm đến bản thân thông điệp, không quan
tâm đến ID của phía gửi• Ví dụ
– Nhiều client có thể yêu cầu các dịch vụ từ một trong nhiều server khác nhau
• Truyền thông gián tiếp có thể mô hình hóa với mailbox and port– Mailbox: các đối tượng chia sẽ, many-to-many communication– Port: chỉ dành cho 1 process, many-to-one communication
![Page 11: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/11.jpg)
11
Giao tiếp nguyên thủy- truyền/Nhận gián tiếp
mailboxmailbox
mailbox
MultipointCommunication
MultipathCommunication
![Page 12: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/12.jpg)
12
Mailbox và Port• Một mailbox có thể được dành
riêng cho một cặp client/server• Một mailbox có thể được chia sẽ
cho nhiều phía gửi và nhiều phía nhận
• Port: là một mailbox nhưng chỉ dành cho một tiến trình (phía nhận)– Ứng dụng Client/server: phía
nhận là server • Port thường được tạo ra và sở
hữu bởi tiến trình nhận• Port bị hủy khi phía nhận kết thúc
![Page 13: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/13.jpg)
13
Message Synchronization
• Quá trình gửi và nhận được gọi là blocking nếu tiến trình gọi đến cần phải khóa cho việc gửi hoặc nhận thông điệp tương ứng – Đồng bộ hoặc bất đồng bộ
• Blocking send: phía gửi blocked cho đến khi thông điệp đến được phía nhận hoặc đến mailbox
• Non-blocking send: phía gửi gửi thông điệp và tiếp tục hoạt động
• Blocking receive: phía nhận blocked cho đến khi có thông điệp đến
• Non-blocking receive: phía nhận có thể nhận thông điệp hợp lệ hoặc một giá trị null
![Page 14: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/14.jpg)
14
Buffered Message Passing
• Buffer: hàng đợi các thông điệp. Có thể có ở mức hệ thống (receiver/sender), hoặc trong các giao tiếp mạng
• Buffer capacity: Bounded, finite length– Phía gửi blocked khi buffer đầy– Phía nhận blocked khi buffer rỗng
• Buffer capacity: Unbounded, infinite length– Asynchronous send: not blocked– Receiver??
• Buffer capacity: zero– Sender/Receiver phải chờ lẫn nhau
![Page 15: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/15.jpg)
15
Socket
![Page 16: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/16.jpg)
16
Socket
• Socket– Socket cung cấp một giao tiếp để lập trình trên hệ thống mạng tại
tầng transport– Liên lạc trên Network bằng socket giống như việc thực thi file I/O– Giao tiếp giữa các socket là độc lập ngôn ngữ
• Chương trình viết bằng Java cũng có thể giao tiếp với chương trình viết bằng ngôn ngữ khác
• Berkeley socket: C• WinSock cho các ứng dụng Windows
![Page 17: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/17.jpg)
17
![Page 18: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/18.jpg)
18
Port
SocketSau khi kết nối được thiết lập,không cần port trong thông điệp
• Port: cổng dùng trong giao tiếp socket, tạo kết nối, lắng nghe kết nối.
![Page 19: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/19.jpg)
19
Socket Primitives
Primitive MeaningSocket Create a new communication endpointBind Attach a local address to a socket
Listen Announce willingness to accept connections
Accept Block caller until a connection request arrives
Connect Actively attempt to establish a connectionSend/Write Send some data over the connectionReceive/Read Receive some data over the connectionClose Release the connection
![Page 20: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/20.jpg)
20
Client/Server hướng dịch vụ Giao tiếp Socket (I)
• Truyền thông hướng kết nối sử dụng socket.
Rendezvous
Request Reply
![Page 21: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/21.jpg)
21
Client/Server hướng dịch vụ Giao tiếp Socket (II)
Cổng ban đầu được sử dụng để chấp nhận các kết nối từ các client khác
Sử dụng cổng mới để giao tiếpvới các client được kết nối
![Page 22: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/22.jpg)
22
Remote Procedure Call (RPC)
![Page 23: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/23.jpg)
23
RPC
• Tính trong suốt với RPC– Access – không có sự phân biệt giữa RPC và (local) procedure call– Communication – che dấu các system calls, chuyển đổi dữ liệu, và các giao
tiếp mạng• Truyền thông reuest/reply hướng dịch vụ• Giao thức RPC giữa một Client và một Server • Dòng điều khiển RPC• Những vấn đề trong hiện thực
– Parameter and result passing, and data conversion– Binding– Compilation– Failures– Security (self study)
![Page 24: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/24.jpg)
24
Giao thức RPC giữa một Client và một Server
Client suspends
Receive(blocked)
Receive(blocked)
Thông tin có thể được chuyển từ client sang server dưới dạng các parameter và kết quả trả về
với dạng procedure result
![Page 25: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/25.jpg)
25
Dòng điều khiển RPC
![Page 26: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/26.jpg)
26
Các bước tuần tự RPC
• Client procedure calls client stub• Client stub builds message, calls local OS• Client's OS sends message to remote OS• Remote OS gives message to server stub• Server stub unpacks parameters, calls server• Server does work, returns result to the stub• Server stub packs it in message, calls local OS• Server's OS sends message to client's OS• Client's OS gives message to client stub• Stub unpacks result, returns to client
![Page 27: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/27.jpg)
27
Client và Server Stubs
• Client stub: chứa procedures mà client sẽ gọi thật sự– Thu thập và đóng gói (pack) các tham số thành thông điệp và gọi
hàm hệ thống (system call) để gửi đi.– Mở đóng gói (Unpack) kết quả trả về và chuyển kết quả cho client
• Server stub: chứa procedures được gọi bởi hệ thống trên máy Server khi có một thông điệp được truyền đến, sau đó sẽ gọi procedures thật sự trên máy Server để thực thi
![Page 28: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/28.jpg)
28
Truyền tham số và chuyển đổi dữ liệu (I)
• Parameter marshaling – các quy luật truyền tham số và chuyển đổi dữ liệu/thông điệp của giao thức RPC
• Passing parameters– Call-by-value hoặc call-by-reference
• Thể hiện dữ liệu và kiểm tra kiểu– Nhiều loại máy khác nhau nhiều thể hiện dữ liệu khác nhau
• ASCII, EBCDIC• 16 bit integer, 32 bit integer,…
• Transfer syntax tuân thủ một số quy luật truyền tải thông điệp– Định dạng thông điệp, thể hiện dữ liệu của các thông điệp, trao đổi
thật sự giữa các thông điệp (connection or connectionless)
![Page 29: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/29.jpg)
29
Data Representation
a) Thông điệp ban đầu trên máy Pentiumb) Thông điệp sau khi nhận trên SPARC c) Thông điệp sau khi bị đảo ngược. Những con số nhỏ trong hộp chỉ ra địa
chỉ của mỗi byte
5
LLIJ
83,886,080
JILL
5
LLIJ
![Page 30: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/30.jpg)
30
Định dạng thông điệp
• Client và server phải thống nhất các qui tắc trong việc đóng gói các tham số của một thông điệp • Client và server phải thống nhất sự biễu diễn dữ liệu
![Page 31: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/31.jpg)
31
Truyền tham số
• Các bước tính toán từ xa thông qua RPC
2-8
Server may support manyprocedures
![Page 32: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/32.jpg)
32
Binding a Client to a Server (I)
![Page 33: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/33.jpg)
33
Binding a Client to a Server (II) – DCE & Directory Server
(Port)
Has a well known port
![Page 34: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/34.jpg)
34
RPC Compilation (I)
• Ba thành phần chính trong một package RPC– An interface specification file– A RPC generator
• Input: interface specification file• Output: client and server stub procedure source codes
– Run-time library for the supporting execution of an RPC• Support for binding, data conversion, and communication
![Page 35: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/35.jpg)
35
RPC Compilation (II)
![Page 36: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/36.jpg)
36
RPC Compilation in DCE
Tạo ra một file IDL nguyên mẫu có chứa một định danh duy nhất trên toàn cầu (Vị trí
+ Thời gian)
Các khai báo gần giống với các chức năng nguyên mẫu
trong ngôn ngữ C: định nghĩa kiểu, khai báo hằng, cú pháp
gọi hàm,…
![Page 37: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/37.jpg)
37
RPC Failures
• Năm dạng lỗi RPC:– Client không thể xác định server– Thông điệp yêu cầu từ client tới server bị mất– Server treo khi nhận được yêu cầu– Thông điệp trả về từ server cho client bị mất– Client treo sau khi truyền thông điệp yêu cầu
• Nguyên nhân và khắc phục (self study)
![Page 38: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/38.jpg)
38
Asynchronous RPC
2-12
Traditional RPC Asynchronous RPC
• Ví dụ Asynchronous RPC: Chuyển tiền, insert một record vào DB,khởi động remote service,…
Không quan tâm giá trị trả về
![Page 39: Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH](https://reader030.vdocuments.net/reader030/viewer/2022020801/56814a3e550346895db758e1/html5/thumbnails/39.jpg)
39
IPC và ứng dụng trong các thành phần của Hệ thống phân tán
IPC Method DistributedComponents
Real-TimeComponents
ParallelComponents
Message Passing Yes Yes Yes
Pipes No Yes Yes
Sockets Yes Yes Yes
RPC Yes Yes Yes