SIMPL
   HOME

TheInfoList



OR:

Synchronous Interprocess Messaging Project for LINUX (SIMPL) is a free and open-source project that allows
QNX QNX ( or ) is a commercial Unix-like real-time operating system, aimed primarily at the embedded systems market. QNX was one of the first commercially successful microkernel operating systems. The product was originally developed in the early ...
-style synchronous message passing by adding a
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, w ...
library using
user space A modern computer operating system usually segregates virtual memory into user space and kernel space. Primarily, this separation serves to provide memory protection and hardware protection from malicious or errant software behaviour. Kernel ...
techniques like
shared memory In computer science, shared memory is memory that may be simultaneously accessed by multiple programs with an intent to provide communication among them or avoid redundant copies. Shared memory is an efficient means of passing data between progr ...
and Unix pipes to implement SendMssg/ReceiveMssg/ReplyMssg inter-process messaging mechanisms.


Mechanism

A client thread sending a message is BLOCKED (the process thread execution is temporarily suspended) until the server thread sends a received message acknowledgement, processes the message, and executes a reply. When the server thread replies the client thread becomes READY (unblocked). The server thread typically loops, waiting to receive a message from a client thread. Blocking synchronizes the client thread execution, blocking it and implicitly schedules the server thread to be scheduled for execution without requiring explicit process control work by the kernel to determine which thread to run next as with other forms of IPC. The send and receive operations are blocking and synchronous, reply doesn't block, the client thread is already blocked waiting for the reply and no additional synchronization is required. The server thread replies to the client and continues running while the kernel and/or networking code asynchronously passes the reply data to the client thread and marks it READY for execution.


Advantages of synchronized message passing

Synchronized Message Passing has the following advantages: * Simple coding model simplifies the task of partitioning a complex system and aids in testing * Inherent thread synchronization coordinates the execution of communicating programs * No data buffering is required * Simplification of network interactions - threads can be in different programs on different machines


Limitations

SIMPL does not appear to be thread safe.


Similar projects

There is one other QNX-inspired synchronous message passing projects available for Linux. SRR IPC (for Send/Receive/Reply) by Sam Roberts and Andrew Thomas of
Cogent Real-Time Systems, Inc.
which is related to the SIMPL project and adds a QNX-compatible API layer. SRR is a loadable kernel module designed to be QNX API compatible to facilitate porting of code.


See also

*
Distributed computing A distributed system is a system whose components are located on different networked computers, which communicate and coordinate their actions by passing messages to one another from any system. Distributed computing is a field of computer sci ...
* Inter-process communication


References


External links


SIMPL

SourceForge, SIMPL-Synchronous Interprocess Messaging

Amazon- Programming the SIMPL Way


* ttp://www.icanprogram.com/simpl/srr_sam.html SRR -- QNX API compatible message passing for Linux
Cogent DataHub software download page (including SRR Kernel Module)
{{Linux Distributed computing architecture Inter-process communication Linux kernel features