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 475544
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE[24]: Comment by Kaj-de-Vos
by xiaokj on Wed 1st Jun 2011 23:44 UTC in reply to "RE[23]: Comment by Kaj-de-Vos"
xiaokj
Member since:
2005-06-30

I'd argue that nothing prevents system API manufacturers from putting all compatibility kludges in a separate code module, separating them from the rest. After all, you put the same code in that module that you'd put in a translator applet, so that code has an independent life on its own and doesn't need to be mixed with the main server code and impair future developments.

Theoretically possible, but in the real world, it is hard to even envision, let alone actually do it.

On the other hand, translator applets have this advantage that they *enforce* such an isolation.

Well said. I cannot even put it better myself.

...so it's normal that he has less things to tell me this time ;)

You caught my idea wrong. I was finding it funny he didn't talk to me, not you. But of course.

Alfman has a quality which I'm really fond of, as far as OSdeving discussions are concerned : he likes precision. When he notices a blanket statement, he is going to press its author until he either puts some true arguments on the table or quits. That makes him a precious ally to have when designing things.

Certainly. If not for a lack of real exp myself, I would have joined in.

Reply Parent Score: 2

RE[25]: Comment by Kaj-de-Vos
by Alfman on Thu 2nd Jun 2011 00:23 in reply to "RE[24]: Comment by Kaj-de-Vos"
Alfman Member since:
2011-01-28

xiaokj,

Well, it's nice to get an honourable mention like this.

"You caught my idea wrong. I was finding it funny he didn't talk to me, not you. But of course."

Don't read into it too much. I didn't see anything objectionable and I don't have any points you guys aren't already covering.

Reply Parent Score: 2

RE[26]: Comment by Kaj-de-Vos
by xiaokj on Thu 2nd Jun 2011 00:38 in reply to "RE[25]: Comment by Kaj-de-Vos"
xiaokj Member since:
2005-06-30

Alfman,

Nah, I had realised a bit late about your injections -- the comment system did not notify me.

I suppose, given the recent increases in the comment count, there must have been more.

I think the reason why you did not see anything objectionable is that I have provided a very vague notion, although I do point out the relevant places I got those ideas from. You simply had nothing solid to poke at! I really should get my hand dirty in some form of computing practice...

Reply Parent Score: 2

Neolander Member since:
2010-03-08

Theoretically possible, but in the real world, it is hard to even envision, let alone actually do it.

Let me show you how I think it could be done in a C-like language.

The server process has decided to drop function A and introduce B and C as a replacement.

So the person implementing it creates the "compatibility.h" header and puts two functions in there : "compat_init()" and "compat_A()".

compat_A() is a function which takes the same parameters as A and emulates the behaviour of A through use of B and C.

compat_init() does the remote call initialization stuff, broadcasts compat_A() as A. It is to be put with the rest of the server initialization stuff.

So in the end, you have added exactly one line of code to your server initialization code, "compat_init();", and from that point everything happens in a separate code module.

I have already said I agree that having a translator system may enforce the isolation better, but the isolation is certainly not hard at all to do in code.

EDIT : Oh, by the way... I expect this discussion to be soon "obsoleted" by the OSnews comment system, which does not allow writing in threads that are more than 5 days old or so. When it happens, feel free to continue it on the blog post's comments if you still have something to say. Myself, if nothing new has emerged on Saturday, I'll examine what has been said here, and publish a new version of the design for further review when it's ready.

Edited 2011-06-02 07:14 UTC

Reply Parent Score: 1