Mô h ình truyền thông gi ữacác tiến trình... Các phương th ức truy ền thông• Truyền thông giữa các tiến trình Inter Process Communication - IPC được hỗ trợ bởi HĐH mạng/HĐH phân tán theo
Trang 1Hệ điều hành m ạng
nâng cao
Giảng viên: Ho àng Xuân D ậu
Email: dauhoang@vnn.vn Khoa Công ngh ệ thông tin 1
Học viện Công ngh ệ BC-VT
Trang 2IV C ác cơ ch ế giao ti ếp giữa các tiến trình phân t án
Trang 3Mô h ình truyền thông gi ữa
các tiến trình
Trang 4Các phương th ức truy ền thông
• Truyền thông giữa các tiến trình (Inter
Process Communication - IPC) được hỗ
trợ bởi HĐH mạng/HĐH phân tán theo 2
phương thức chủ yếu:
– Truyền thông điệp (Message Passing)
– Các cuộc gọi thủ tục từ xa (Remote
Procedure Calls)
Trang 5Middlewares ph ục vụ truyền thông
Trang 6Truy ền thông đi ệp
• Là phương thức truyền thông cơ sở được
hỗ trợ bởi hệ điều hành
• Cho phép một tiến trình trên một máy
truyền môt gói dữ liệu hoặc một chuỗi
bytes đến một tiến trình khác trên máy đó hoặc máy khác
• Socket là một trong những kỹ thuật được dùng phổ biến nhất trong phương thức
truyền thông điệp.
Trang 7Socket v à Ports
Socket = Internet address + Port
Trang 8Sockets (ti ếp)
• Các đặc điểm:
– Là điểm giao tiếp trong truyền thông giữa các tiến
trình
– Các thông điệp được truyền giữa các sockets
– Socket có thể tạo dựa trên giao thức TCP hoặc UDP – Mỗi tiến trình có thể sử dụng nhiều cổng để tạo nhiều sockets
– Không thể chia sẻ các cổng, trừ trường hợp sử dụng
IP multicast.
• Cài đặt:
– Socket được hỗ trợ bởi hầu hết các HĐH
– Java sockets
Trang 9Sockets: tương t ác server -client
Trang 10Gọi thủ tục từ xa - RPC
• Là phương thức truyền thông giữa các tiến trình được thực hiện theo cơ chế gọi thủ tục/hàm
• Khác với gọi thủ tục cục bộ (trong một tiến
trình), thủ tục được gọi từ xa được thực hiện
trong ngữ cảnh của một tiến trình khác, và tiến trình đó có thể chạy ở máy khác
• RPC giúp đơn giản hoá lập trình truyền thông,
do người lập trình không phải tự viết toàn bộ
phần mã phục vụ truyền thông giữa các tiến
trình
Trang 11Gọi thủ tục từ xa (ti ếp)
Trang 12Các lớp/nh óm RPC
• RPC nhóm 1:
– RPC được tích hợp vào ngôn ngữ lập trình
– Ví dụ: Java RMI
• RPC nhóm 2:
– Một ngôn ngữ đặc biệt (Interface Definition
nghĩa giao diện giao tiếp
– Độc lập với ngôn ngữ lập trình
– Ví dụ: Sun RPC, CORBA
Trang 13RPC đ ồng bộ và không đ ồng b ộ
(a) - RPC đồng bộ; (b) - RPC không đồng bộ
Trang 14Cơ ch ế thực hiện RPC
Proxies, stubs, dispatchers được tạo ra tự động nhờ trình biên dịch IDL
Trang 15Client: c ác thành ph ần chính
• Proxies:
– Đóng vai trò như phiên bản cục bộ của giao diện từ xa
– Chuyển hướng tất cả các cuộc gọi đến client stub
• Client stub:
– Thực hiện marshalling các cuộc gọi và yêu
cầu truyền lại thông điệp
Trang 16Server: c ác thành ph ần chính
– Tiếp nhận các thông điệp đến và chuyển
chúng cho server stub ph ù hợp
– Unmarshals các thông điệp và triệu gọi thực hiện các đoạn mã phù hợp
– Marshals các thông điệp trả lời và khởi tạo việc gửi chúng cho client
Trang 17RPC - Ví dụ
Trang 18RPC - Ví dụ
Trang 19RPC - Ví dụ
Trang 20Cơ chế thực hiện Java RMI