On Mon, 11 Oct 2010 08:09:01 +0200, Roger Oberholtzer
I do confess to be confused about why you considered it to be good for serial lines and not TCP/IP. Granted TCP/IP offers more variations than a serial line, and that could make implementation of stream modules more complicated. But that does not mean the streams concept was wrong.
First of all documentation: 1) http://cm.bell-labs.com/cm/cs/who/dmr/st.html is the original paper from Dennis Ritchie describing streams. 2) The document describing the Linux implementation: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.55.1500&rep=rep1&type=pdf SVR4 streams suck extremely performance wise. Those performance penalties were accetable for the rather slow serial lines but weren't for networks.
As to why it is not in Linux, well, I guess it never really caught on like wild fire on SVR4 (including Solaris at the time, which I think also had streams - does Solaris have streams today?). I think the reason was primarily that it was not a portable concept more than it being a bad one.
No, the reason was performance. Here's a quote from a post from Dave Miller (taken from http://cryptnet.net/mirrors/texts/kissedagirl.html):
1) Solaris's networking stack, in all of it's incantations (one breed of it was the Lochman code in 2.0, 2.1 and early 2.2 releases, then it was rewritten by another company for 2.3 onward) is SVR4 streams based. The performance penalty, even with lots of tricks, for using a SVR4 streams networking architecture is well known. Someone who happens to have a 2.2 Solaris CD around, or even a 2.3 Solaris CD, should install that thing and run lmbench on it to see what "pure Streams based networking" without the tricks can really do.
Linux on the other hand has a "no bullshit" networking architecture that is not streams based. Yet we also take advantage of the many known networking performance enhancements that exist in the research realm (ie. copy/checksum, the van jacobson hacks, etc.)
portable, I venture a guess that it may have been more popular. It moves lots of file handling from the kernel into user space via a well-defined interface.
And it sucks rocks through straws performance wise. The idea was rather neat, the implementation in svr4 streams was not. That's also why even commercial unix vendors moved to sockets based implementation. Philipp -- To unsubscribe, e-mail: opensuse-programming+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming+help@opensuse.org