Fully asynchronous IPC howto

Discussions on more advanced topics such as monolithic vs micro-kernels, transactional memory models, and paging vs segmentation should go here. Use this forum to expand and improve the wiki!
tom9876543
Member
Member
Posts: 170
Joined: Wed Jul 18, 2007 5:51 am

Re: Fully asynchronous IPC howto

Post by tom9876543 »

Hi Brendan,

Pure message passing is an excellent idea. I did a quick search on the internet, there doesn't seem to be a huge amount of info. If the OS is "pure message passing", does that mean the only kernel functions are sendMessage() and receiveMessage()?
Could you please provide a sample API for a pure message passing OS? Thanks heaps.
User avatar
NickJohnson
Member
Member
Posts: 1249
Joined: Tue Mar 24, 2009 8:11 pm
Location: Sunnyvale, California

Re: Fully asynchronous IPC howto

Post by NickJohnson »

(IIRC) Pure message passing means that concurrency is not done with threads and shared memory (and implicitly, locks), and is instead done with messages that are guaranteed to be passed atomically. The kernel can still have separate system calls for other functions, just not shared memory. There are a few microkernels (I believe MINIX is one) that only have sending and receiving system calls, but that often makes things more complicated than they need to be, like moving the scheduler out of the kernel.

A good example of the advantages of message passing is the language Erlang - it is used for highly parallel computation, achieves amazing reliability and speed, and uses only message passing between software/language isolated threads.
Post Reply