Linked by Hadrien Grasland on Sun 29th May 2011 09:42 UTC
OSNews, Generic OSes It's funny how trying to have a consistent system design makes you constantly jump from one area of the designed OS to another. I initially just tried to implement interrupt handling, and now I'm cleaning up the design of an RPC-based daemon model, which will be used to implement interrupt handlers, along with most other system services. Anyway, now that I get to something I'm personally satisfied with, I wanted to ask everyone who's interested to check that design and tell me if anything in it sounds like a bad idea to them in the short or long run. That's because this is a core part of this OS' design, and I'm really not interested in core design mistakes emerging in a few years if I can fix them now. Many thanks in advance.
Thread beginning with comment 475158
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE[9]: Comment by Kaj-de-Vos
by Alfman on Mon 30th May 2011 22:17 UTC in reply to "RE[8]: Comment by Kaj-de-Vos"
Alfman
Member since:
2011-01-28

Kaj-de-Vos,

"I have been talking about the problem that RPC implies an inflexible semantic data exchange (the payload)."

I've found it frustrating that your posts are so vague. I'm really out of ideas as to what problems you have with "RPC". Your claims may be valid against the least common denominator forms of function prototypes, but there are plenty of counter examples which you've been ignoring.

"Let's make this concrete. How would you implement a service that draws a line?"

Well, your example evolves from just drawing a line to doing more stuff. But the implication that RPC cannot handle "more stuff" is not accurate.

You're assuming a least common denominator approach again, but many modern languages support functions which are extensible. It's not fair to put them all beside C and label all RPC as inadequate.


"You could draw up a plan including all sorts of functions, parameters, transfer methods, interface description languages and parsers for it, but that is all irrelevant. To draw a line, assuming the pen is set at a starting point, it suffices to specify this:"

You're essentially coming up with the foundations of a vector graphics format. You could make it arbitrarily complex. You could support windows 3.0 metafiles or VML or SVG (all vector graphics formats).

Javascript can easily accommodate your example by using JSON arrays and hashes. Web services can be used to connect separate components via HTTP/JSON directly to native types on many platforms including Perl/PHP/.Net/Python.


I think you're assuming that all RPC is limited to transferring only simple types as parameters, but this isn't the case. Today many languages make it possible to call remote procedures with deep objects hierarchies.

I can understand why you'd dislike simple function prototypes as in C (which may be what neolander has in mind), but I don't think your claims hold up against "RPC" in general.

Reply Parent Score: 2