Chương 5. Giao tiếp liên tiến trình<br />
Phạm Quang Dũng<br />
http://fita.hua.edu.vn/pqdung<br />
<br />
Khái niệm và ví dụ<br />
<br />
<br />
Interprocess communication (IPC) là sự truyền dữ<br />
liệu giữa các tiến trình.<br />
<br />
<br />
<br />
Vd1: Web browser yêu cầu 1 trang web từ Web<br />
server. Dạng truyền này thường sử dụng các socket<br />
trong một kết nối dạng telephone.<br />
<br />
<br />
<br />
Vd2: Lệnh in các tên file trong 1 thư mục:<br />
ls | lpr<br />
2 tiến trình giao tiếp thông qua 1 pipe (|)<br />
<br />
2<br />
<br />
Các dạng IPC<br />
<br />
<br />
bộ nhớ chia sẻ: các tiến trình giao tiếp bằng cách<br />
đọc, ghi dữ liệu tại vùng nhớ xác định.<br />
<br />
<br />
<br />
bộ nhớ ánh xạ: tương tự như bộ nhớ chia sẻ, chỉ<br />
khác là nó được liên kết với 1 file.<br />
<br />
<br />
<br />
pipe: giao tiếp tuần tự từ 1 tiến trình này tới 1 tiến<br />
trình khác có liên quan.<br />
<br />
<br />
<br />
FIFO: tương tự pipe, chỉ khác là giao tiếp giữa các<br />
tiến trình không liên quan.<br />
<br />
<br />
<br />
socket: hỗ trợ giao tiếp giữa các tiến trình không liên<br />
quan thậm chí trên các máy tính khác nhau.<br />
3<br />
<br />
Các tiêu chuẩn phân biệt loại IPC<br />
<br />
<br />
Phạm vi giao tiếp: giữa các tiến trình có liên quan,<br />
không liên quan trên 1 máy tính, hay trên bất kỳ máy<br />
tính nối mạng nào.<br />
<br />
<br />
<br />
Quyền đọc, ghi dữ liệu: tiến trình giao tiếp chỉ được<br />
ghi dữ liệu hay đọc dữ liệu.<br />
<br />
<br />
<br />
Số lượng tiến trình được tham gia giao tiếp<br />
<br />
<br />
<br />
Tính đồng bộ: các tiến trình giao tiếp có được đồng<br />
bộ hóa bởi IPC không? vd: 1 tiến trình đọc tạm dừng<br />
đến khi có dữ liệu để đọc.<br />
<br />
4<br />
<br />
5.1. Shared Memory<br />
<br />
<br />
Là 1 trong những phương pháp giao tiếp liên tiến trình<br />
đơn giản nhất.<br />
<br />
<br />
<br />
Các tiến trình truy nhập vùng nhớ chung bằng cách<br />
gọi malloc, được trả về con trỏ tới vùng nhớ thực đó.<br />
<br />
<br />
<br />
Khi 1 tiến trình thay đổi vùng nhớ, các tiến trình khác<br />
nhận ra được sự thay đổi đó.<br />
<br />
5<br />
<br />