To view parent comment, click here.
To read all comments associated with this story, please click here.
Neolander,
"Like, you know, if a keypress is defined by a 32-bit scancodes, a 32-bit scancode pipe ?
You could avoid the overhead of a messaging protocols for fixed-size structures this way."
Unless there's a compelling reason, I wouldn't limit devs to fixed size messages.
"What if a program could monitor several streams at the same time by having a different callback being triggered when a message comes in each of the pipes ?"
Hmm, all this talk of pipes is making me think why aren't pipes and RPC unified into one fundamental concept?
The typical use cases for pipes is that they are explicitly "read", where as for RPC a function is explicitly called with parameters "passed in".
But wouldn't it be possible for them to share the same paths in the OS and just let the userspace determine which access method is more appropriate?
Would there be a shortcoming in doing so?
...Just a thought.




Member since:
2010-03-08
In my opinion, there's no such thing as too fast. It's mostly a question of whether any extra overheads are worth any extra benefits.
For me, "too fast" would be when gaining extra speed implies having another desirable characteristic of the OS become exceedingly low. Speed has its trade-offs, and to solve the problem of trade-offs it's good to have goals. Well, I think we agree there anyway.
That's the way it's done today, but it has not been always done like that. Classic Windows and Mac OS, as an example, were designed for desktop use, and would have been terrible as server OSs for a number of reasons.
With TOSP, I design solely for "desktop" (more precisely, personal) computers, because I believe that reducing the amount of target use cases will in turn simplify the design in some areas and reduce the amount of trade-offs, resulting in a design that's lighter and better suited for the job. It's the classical "generic vs specialized" debate, really.
For me, the difference is about what is the atomic transmitted unit that is processed by the recipient.
In a pipe, that atomic unit is a fixed-size heap of binary data, typically a byte in the UNIX world. In a message, the atomic unit is a variable-sized message, which is not actually processed by the recipient until the message's terminator has been received.
Am I right ?
But what about a kind of pipe which would take something larger than a byte as its basic transmission unit ?
Like, you know, if a keypress is defined by a 32-bit scancodes, a 32-bit scancode pipe ?
You could avoid the overhead of a messaging protocols for fixed-size structures this way.
What if a program could monitor several streams at the same time by having a different callback being triggered when a message comes in each of the pipes ?
(Again, if the OSnews comment system has decided to archive this discussion by the time you answer, feel free to continue replying on my blog.)
Edited 2011-06-02 10:50 UTC