Giao tiếp liên tiến trình (IPC) trong hệ điều hành
Truyền thông giữa các quá trình là gì?
Giao tiếp giữa các quá trình (IPC) được sử dụng để trao đổi dữ liệu giữa nhiều luồng trong một hoặc nhiều quy trình hoặc chương trình. Quy trình có thể đang chạy trên một hoặc nhiều máy tính được kết nối qua mạng. Hình thức đầy đủ của IPC là Giao tiếp giữa các quá trình.
Nó là một bộ giao diện lập trình cho phép người lập trình điều phối các hoạt động giữa các tiến trình chương trình khác nhau có thể chạy đồng thời trong một hệ điều hành. Điều này cho phép một chương trình cụ thể xử lý nhiều yêu cầu của người dùng cùng một lúc.
Vì mỗi yêu cầu của người dùng có thể dẫn đến nhiều tiến trình chạy trong hệ điều hành, nên tiến trình này có thể yêu cầu giao tiếp với nhau. Mỗi cách tiếp cận giao thức IPC đều có ưu điểm và hạn chế riêng, do đó, không có gì lạ khi một chương trình sử dụng tất cả các phương pháp IPC.
Các phương pháp tiếp cận giao tiếp giữa các quá trình
Dưới đây là một số phương pháp quan trọng để giao tiếp giữa các quy trình:
Ống
Ống được sử dụng rộng rãi để giao tiếp giữa hai quy trình liên quan. Đây là phương pháp bán song công, do đó quy trình đầu tiên giao tiếp với quy trình thứ hai. Tuy nhiên, để đạt được toàn song công, cần có một ống khác.
Thông qua
Đây là cơ chế để một tiến trình giao tiếp và đồng bộ hóa. Sử dụng việc truyền thông điệp, các tiến trình giao tiếp với nhau mà không cần dùng đến các biến được chia sẻ.
Cơ chế IPC cung cấp hai hoạt động:
- Gửi (tin nhắn) - kích thước tin nhắn cố định hoặc thay đổi
- Nhận được tin nhắn)
Hàng đợi tin nhắn
Hàng đợi tin nhắn là một danh sách liên kết các tin nhắn được lưu trữ trong hạt nhân. Nó được xác định bằng một mã định danh hàng đợi tin nhắn. Phương pháp này cung cấp khả năng giao tiếp giữa một hoặc nhiều quy trình với khả năng song công toàn phần.
Truyền thông trực tiếp
Trong loại quá trình giao tiếp giữa các quá trình này, nên đặt tên cho nhau một cách rõ ràng. Trong phương pháp này, một liên kết được thiết lập giữa một cặp quy trình giao tiếp và giữa mỗi cặp chỉ tồn tại một liên kết.
Truyền thông gián tiếp
Giao tiếp gián tiếp thiết lập giống như chỉ khi các tiến trình chia sẻ một hộp thư chung, mỗi cặp tiến trình chia sẻ một số liên kết giao tiếp. Một liên kết có thể giao tiếp với nhiều tiến trình. Liên kết có thể là song hướng hoặc đơn hướng.
Bộ nhớ dùng chung
Bộ nhớ chia sẻ là bộ nhớ được chia sẻ giữa hai hoặc nhiều tiến trình được thiết lập bằng bộ nhớ chia sẻ giữa tất cả các tiến trình. Loại bộ nhớ này cần được bảo vệ khỏi nhau bằng cách đồng bộ hóa quyền truy cập trên tất cả các tiến trình.
FIFO
Giao tiếp giữa hai tiến trình không liên quan. Đây là phương pháp song công toàn phần, nghĩa là tiến trình đầu tiên có thể giao tiếp với tiến trình thứ hai và ngược lại cũng có thể xảy ra.
Tại sao lại là IPC?
Dưới đây là những lý do nên sử dụng giao thức truyền thông liên tiến trình để chia sẻ thông tin:
- Nó giúp tăng tốc độ mô đun hóa
- Computational
- Đặc quyền tách biệt
- Tiện
- Giúp hệ điều hành giao tiếp với nhau và đồng bộ hóa các hoạt động của chúng.
Điều khoản được sử dụng trong IPC
Sau đây là một số thuật ngữ quan trọng được sử dụng trong IPC:
Semaphores: Semaphore là một kỹ thuật cơ chế báo hiệu. Phương thức hệ điều hành này cho phép hoặc không cho phép truy cập vào tài nguyên, điều này phụ thuộc vào cách thiết lập nó.
Signals: Đó là một phương pháp để giao tiếp giữa nhiều tiến trình bằng cách truyền tín hiệu. Quá trình nguồn sẽ gửi tín hiệu được nhận dạng theo số và quá trình đích sẽ xử lý tín hiệu đó.
Gợi ý đọc: - Là gì Semaphore? Các loại nhị phân, đếm có ví dụ
Điều gì giống FIFOS và điều gì không giống FIFOS
Giống như FIFOS | Không giống FIFOS |
---|---|
Nó tuân theo phương pháp FIFO | Phương pháp kéo các tin nhắn khẩn cấp cụ thể trước khi chúng đến được mặt trận |
FIFO tồn tại độc lập với cả quá trình gửi và nhận. | Luôn sẵn sàng nên không cần phải mở đóng. |
Cho phép truyền dữ liệu giữa các tiến trình không liên quan. | Không có vấn đề đồng bộ hóa nào giữa mở và đóng. |
Tổng kết
- Định nghĩa: Giao tiếp giữa các tiến trình được sử dụng để trao đổi dữ liệu giữa nhiều luồng trong một hoặc nhiều tiến trình hoặc chương trình.
- Ống được sử dụng rộng rãi để liên lạc giữa hai quá trình liên quan.
- Truyền tin nhắn là cơ chế để một quy trình giao tiếp và đồng bộ hóa.
- Hàng đợi tin nhắn là một danh sách liên kết các tin nhắn được lưu trữ trong kernel
- Quá trình trực tiếp là một loại quá trình giao tiếp giữa các quá trình, nên đặt tên cho nhau một cách rõ ràng.
- Giao tiếp gián tiếp chỉ được thiết lập khi các tiến trình chia sẻ một hộp thư chung, mỗi cặp tiến trình chia sẻ một số liên kết giao tiếp.
- Bộ nhớ dùng chung là bộ nhớ được chia sẻ giữa hai hoặc nhiều quy trình được thiết lập bằng bộ nhớ dùng chung giữa tất cả các quy trình.
- Phương pháp giao tiếp giữa các quá trình giúp tăng tốc tính mô đun hóa.
- Semaphore là một kỹ thuật cơ chế báo hiệu.
- SignalGiao tiếp là phương pháp giao tiếp giữa nhiều quy trình thông qua tín hiệu.
- Giống như FIFO tuân theo phương pháp FIFO trong khi không giống như phương pháp FIFO sử dụng để lấy các thông báo khẩn cấp cụ thể trước khi chúng đến được phía trước.