2013-02-20 35 views
6

Tôi có hai quy trình A và B. A và B cần giao tiếp (Bi-directional) đôi khi để truyền tín hiệu, tin nhắn, v.v.
Tôi đã thực hiện một số nghiên cứu cơ bản về IPC có sẵn trong Linux như semaphore, hàng đợi tin nhắn, dbus vv
Bây giờ tôi đang trong sự nhầm lẫn trong việc quyết định cái nào để sử dụng, Bất cứ ai có thể cho tôi biết IPC nào là tốt hơn để sử dụng cho ứng dụng của tôi?Lựa chọn IPC Linux?

Cảm ơn trước

được sửa đổi: Xây dựng ứng dụng. (Đây là ứng dụng nhúng)
Quy trình A sẽ theo dõi Nhiệt độ, tính toán tốc độ, vv Quy trình B sẽ điều khiển động cơ, đọc các giá trị cảm biến (Số) vv Đôi khi tôi cần gửi tín hiệu đến xử lý B nói Max nhiệt độ đạt được, vì vậy dừng động cơ lái xe. Đôi khi cần phải gửi dữ liệu đọc từ cảm biến trong Quy trình A đến Quy trình B. Giống như dữ liệu số này cần phải được truyền qua quy trình. Và tôi đang làm điều này trong kiến ​​trúc ARM.

+0

Nó phụ thuộc vào ứng dụng của bạn ... –

+0

Có lẽ bạn nên xây dựng trên những gì loại (s) của dữ liệu bộ vi xử lý của bạn sẽ được chuyển qua lại và có thể là loại bộ vi xử lý bạn đang sử dụng (ARM ?, x86 ?, MIPS?). –

+0

@ n.m. và LastCoder tôi đã chỉnh sửa câu hỏi và thông tin chi tiết về ứng dụng được thêm vào. –

Trả lời

12

Lựa chọn kỹ thuật IPC tùy thuộc vào ứng dụng mà bạn đang cố triển khai. Dưới đây là một so sánh cơ sở tốt về hiệu suất:

IPC name  Latency  Throughput Description 
----------------------------------------------------------------------------------------- 
Signal  Low   n/a   Can be used only for notification, traditionally- 
             to push process to change its state 

Socket  Moderate  Moderate Only one mechanism which works for remote nodes, 
             not very fast but universal 

D-Bus   High   High  A high-level protocol that increases latency and 
             reduces throughput compared to when using base 
             sockets, gains in increased ease of use 

Shared  n/a   High  Data saved in-between process runs(due to swapping 
memory         access time) can have non-constant access latency 

Mapped files n/a   High  Data can be saved in-between device boots 

Message  Low   Moderate Data saved in-between process runs. The message 
queue         size is limited but there is less overhead 
             to handle messages 

Dưới đây là thêm một so sánh thoải mái

Comparing Unix/Linux IPC

+2

Cảm ơn bạn đã so sánh tốt đẹp, lập kế hoạch sử dụng D-Bus cho ứng dụng của tôi, tôi lo lắng vì độ trễ cao. Mỏ là ứng dụng thời gian thực. –