Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!wuarchive!udel!sbcs!eeserv1.ic.sunysb.edu!jallen From: jallen@eeserv1.ic.sunysb.edu (Joseph Allen) Newsgroups: comp.unix.xenix.sco Subject: Re: Bugs Message-ID: <1991May11.222523.12589@sbcs.sunysb.edu> Date: 11 May 91 22:25:23 GMT References: <1991Apr30.103044.10663@robobar.co.uk> <1991May3.233227.22573@sbcs.sunysb.edu> <1991May7.080724.3904@robobar.co.uk> Sender: usenet@sbcs.sunysb.edu (Usenet poster) Organization: State University of New York at Stony Brook Lines: 58 In article <1991May7.080724.3904@robobar.co.uk> ronald@robobar.co.uk (Ronald S H Khoo) writes: >jallen@eeserv1.ic.sunysb.edu (Joseph Allen) writes: >> >Why not use pipes instead? >> Because how do you make a pipe between unrelated processes? >With the mknod command or system call, and the open system call. >Named pipes have been in UNIX since System III at least. >SCO Xenix documentation has a section on in in the "writing and using pipes" >section of the Programmer's Guide. The pipe appears in the filesystem >so anyone can open it. ! Oops, you're right. This leads to two questions: Why did they add message passing (which is very very ugly) when they already had an elegent IPC system? Why didn't I notice them? (the answer to the second question is that I'm used to BSD's sockets (which can be filesystem named) and since xenix didn't have sockets...) >> Also I've found that the message passing system calls are very fast (I don't >> have experience with streams but BSD sockets were always a bit slow). >There is *zero* difference in speed between using pipes and using >message queues. The reason is that the IPC overhead is completely >swamped by the cost of the context switch. If you write a program > Process 1 Process 2 > Send message > Receive message > Send message > Receive message >in a loop, you will find that the number of transactions that you can do in >any given time frame is about the same no matter which IPC mechanism you >use. Context switching in 386 Unixes is *AWFUL*. BAD BAD BAD. Terrible. >You could do the IPC by carrier pigeon and and the transaction rate would >*still* be the same. Ugh. Anyway, it's good that pipes at least arn't any _slower_ than message passing Mostly I solve this problem by: Process 1 --------- Send message 1 Send message 2 or Send big message 1 Send message 3 (task switch and) Receive message >This is probably a good reason to switch to Mach. Anyone want to >volunteer some figures for this on Mach 386? Here's the most important figure: Mach for 386 costs about $3000 And second most important figure: AMR's Unterminal doesn't work on it And third most important figure: it doesn't run Lotus 123 (er.. um.. SCO Professional) or Wordperfect -- /* jallen@ic.sunysb.edu */ /* Amazing */ /* Joe Allen 129.49.12.74 */ int a[1817];main(z,p,q,r){for(p=80;q+p-80;p-=2*a[p])for(z=9;z--;)q=3&(r=time(0) +r*57)/7,q=q?q-1?q-2?1-p%79?-1:0:p%79-77?1:0:p<1659?79:0:p>158?-79:0,q?!a[p+q*2 ]?a[p+=a[p+=q]=q]=q:0:0;for(;q++-1817;)printf(q%79?"%c":"%c\n"," #"[!a[q-1]]);}