By: philt (ptay1685.delete@this.bigpond.net.au), May 16, 2006 12:55 am
Room: Moderated Discussions
Linus Torvalds (torvalds@osdl.org) on 5/15/06 wrote:
---------------------------
>philt (ptay1685@bigpond.net.au) on 5/14/06 wrote:
>>
>
>Linus
From working over 30 years in IT as a software developer, one thing I have learnt is that, all things being equal, techniques that make it easy and quick to write code usually rebound on you later on. Such code is much harder to maintain, and with every succesive modification the system gets more and more difficult to handle - eventually you have to do a complete rewrite.
Modularising code becomes essential with anything other than small systems, and modularisation incurs overheads and is always harder to write - often much harder - but the rewards over the long term more than justify this more "proper" approach.
Object oriented techniques of programming involve many of the same tradeoffs as the microkernel approach, which in essence is simlar to what happens in a microkernel. The object interfaces become a kind of bottleneck which can be difficult to handle and incur performance penalties. But once code becomes sufficiently complex, these kinds of techniques are neccesary in order to bring order to what is potentially a chaotic system. This explains why object oriented programming has come into being. The compexity of modern software demands this kind of structuring in order to make software that has high reliability and maintainability.
Your arguments seem to be mainly pragmatic and your viewpoint is perhaps primarily that of the coder. A coder seeks ways to reduce complexity in order to make writing the code more manageable. However what favours the individual coder may not favour the system they are writing. Many other people may pay the price in terms of testing and bug fixing.
I have to say that the existence of Minix-3 and other micokernel systems tends to suggest that such techniques can actually work. In particular Minix-3 seems to have been arrived at with comparitively little effort (notwithstanding its lack of certain features).
I personally much prefer reliability to raw performance, and the perfromance penalties of microkernel systems seem rather insiginificant in the face of 4Ghz multi-cored cpu's with 4 megs of level2 cache on board.
I guess also as a person who is an end user of an operating system and not a developer of one, I dont much care if the developers have had to put in more effort to achieve the results (selfish I know). Of course if developing a microkernel is so difficult that no developers will go near one then I will care about that, but fortunately that does not seem to be the case (Hurd, Mini-3, Coyotos etc).
I agree that the microkernel idea is very appealing and elegant, and I know that there is a large gulf between theory and practice, but I strongly feel so far that the microkernel approach has something to offer in the area of reliability and I do not see any insurmountable negatives that negate that advantage. A bit of performance loss, so what. Just get a faster cpu and more memory. Not a problem.
Also it is interesting to note that virtually all modern operating systems run applications in separate memory spaces. I do not see any reason why the reason for doing this is any different from that which suggests it would also be best to run different op sys services also in separate memory spaces.
If the only reason not to do so is that it adds complexity to the code, then this does not sound like a very good reason for not doing it. If the designers of CPU's shunned complexity we would still be running 100 Mhz 8086's rather than the current CPU behemoths.
---------------------------
>philt (ptay1685@bigpond.net.au) on 5/14/06 wrote:
>>
>
>Linus
From working over 30 years in IT as a software developer, one thing I have learnt is that, all things being equal, techniques that make it easy and quick to write code usually rebound on you later on. Such code is much harder to maintain, and with every succesive modification the system gets more and more difficult to handle - eventually you have to do a complete rewrite.
Modularising code becomes essential with anything other than small systems, and modularisation incurs overheads and is always harder to write - often much harder - but the rewards over the long term more than justify this more "proper" approach.
Object oriented techniques of programming involve many of the same tradeoffs as the microkernel approach, which in essence is simlar to what happens in a microkernel. The object interfaces become a kind of bottleneck which can be difficult to handle and incur performance penalties. But once code becomes sufficiently complex, these kinds of techniques are neccesary in order to bring order to what is potentially a chaotic system. This explains why object oriented programming has come into being. The compexity of modern software demands this kind of structuring in order to make software that has high reliability and maintainability.
Your arguments seem to be mainly pragmatic and your viewpoint is perhaps primarily that of the coder. A coder seeks ways to reduce complexity in order to make writing the code more manageable. However what favours the individual coder may not favour the system they are writing. Many other people may pay the price in terms of testing and bug fixing.
I have to say that the existence of Minix-3 and other micokernel systems tends to suggest that such techniques can actually work. In particular Minix-3 seems to have been arrived at with comparitively little effort (notwithstanding its lack of certain features).
I personally much prefer reliability to raw performance, and the perfromance penalties of microkernel systems seem rather insiginificant in the face of 4Ghz multi-cored cpu's with 4 megs of level2 cache on board.
I guess also as a person who is an end user of an operating system and not a developer of one, I dont much care if the developers have had to put in more effort to achieve the results (selfish I know). Of course if developing a microkernel is so difficult that no developers will go near one then I will care about that, but fortunately that does not seem to be the case (Hurd, Mini-3, Coyotos etc).
I agree that the microkernel idea is very appealing and elegant, and I know that there is a large gulf between theory and practice, but I strongly feel so far that the microkernel approach has something to offer in the area of reliability and I do not see any insurmountable negatives that negate that advantage. A bit of performance loss, so what. Just get a faster cpu and more memory. Not a problem.
Also it is interesting to note that virtually all modern operating systems run applications in separate memory spaces. I do not see any reason why the reason for doing this is any different from that which suggests it would also be best to run different op sys services also in separate memory spaces.
If the only reason not to do so is that it adds complexity to the code, then this does not sound like a very good reason for not doing it. If the designers of CPU's shunned complexity we would still be running 100 Mhz 8086's rather than the current CPU behemoths.
Topic | Posted By | Date |
---|---|---|
Hybrid (micro)kernels | Tzvetan Mikov | 2006/05/08 04:41 PM |
Hybrid (micro)kernels | S. Rao | 2006/05/08 06:14 PM |
Hybrid (micro)kernels | Bill Todd | 2006/05/08 06:16 PM |
Hybrid (micro)kernels | Tzvetan Mikov | 2006/05/08 07:21 PM |
Hybrid (micro)kernels | nick | 2006/05/08 07:50 PM |
Hybrid (micro)kernels | Bill Todd | 2006/05/09 01:26 AM |
There aren't enough words... | Rob Thorpe | 2006/05/09 02:39 AM |
There aren't enough words... | Tzvetan Mikov | 2006/05/09 03:10 PM |
There aren't enough words... | Rob Thorpe | 2006/05/15 12:25 AM |
Hybrid (micro)kernels | Tzvetan Mikov | 2006/05/09 11:17 AM |
Hybrid (micro)kernels | Bill Todd | 2006/05/09 04:05 PM |
Hybrid (micro)kernels | rwessel | 2006/05/08 11:23 PM |
Hybrid kernel, not NT | Richard Urich | 2006/05/09 06:03 AM |
Hybrid kernel, not NT | _Arthur | 2006/05/09 07:06 AM |
Hybrid kernel, not NT | Rob Thorpe | 2006/05/09 07:40 AM |
Hybrid kernel, not NT | _Arthur | 2006/05/09 08:30 AM |
Hybrid kernel, not NT | Rob Thorpe | 2006/05/09 09:07 AM |
Hybrid kernel, not NT | _Arthur | 2006/05/09 09:36 AM |
Linux vs MacOSX peformance, debunked | _Arthur | 2006/05/18 07:30 AM |
Linux vs MacOSX peformance, debunked | Rob Thorpe | 2006/05/18 08:19 AM |
Linux vs MacOSX peformance, debunked | Anonymous | 2006/05/18 12:31 PM |
Hybrid kernel, not NT | Linus Torvalds | 2006/05/09 08:16 AM |
Hybrid kernel, not NT | Andi Kleen | 2006/05/09 02:32 PM |
Hybrid kernel, not NT | myself | 2006/05/09 03:24 PM |
Hybrid kernel, not NT | myself | 2006/05/09 03:41 PM |
Hybrid kernel, not NT | Brendan | 2006/05/09 05:26 PM |
Hybrid kernel, not NT | Linus Torvalds | 2006/05/09 08:06 PM |
Hybrid kernel, not NT | Brendan | 2006/05/13 01:35 AM |
Hybrid kernel, not NT | nick | 2006/05/13 04:40 AM |
Hybrid kernel, not NT | Brendan | 2006/05/13 09:48 AM |
Hybrid kernel, not NT | nick | 2006/05/13 07:41 PM |
Hybrid kernel, not NT | Brendan | 2006/05/13 09:51 PM |
Hybrid kernel, not NT | nick | 2006/05/14 05:57 PM |
Hybrid kernel, not NT | Brendan | 2006/05/14 10:40 PM |
Hybrid kernel, not NT | nick | 2006/05/14 11:46 PM |
Hybrid kernel, not NT | Brendan | 2006/05/15 04:00 AM |
Hybrid kernel, not NT | rwessel | 2006/05/15 07:21 AM |
Hybrid kernel, not NT | Brendan | 2006/05/15 08:55 AM |
Hybrid kernel, not NT | Linus Torvalds | 2006/05/15 09:49 AM |
Hybrid kernel, not NT | nick | 2006/05/15 04:41 PM |
Hybrid kernel, not NT | tony roth | 2008/01/31 02:20 PM |
Hybrid kernel, not NT | nick | 2006/05/15 06:33 PM |
Hybrid kernel, not NT | Brendan | 2006/05/16 01:39 AM |
Hybrid kernel, not NT | nick | 2006/05/16 02:53 AM |
Hybrid kernel, not NT | Brendan | 2006/05/16 05:37 AM |
Hybrid kernel, not NT | Anonymous | 2008/05/01 10:31 PM |
Following the structure of the tree | Michael S | 2008/05/02 04:19 AM |
Following the structure of the tree | Dean Kent | 2008/05/02 05:31 AM |
Following the structure of the tree | Michael S | 2008/05/02 06:02 AM |
Following the structure of the tree | David W. Hess | 2008/05/02 06:48 AM |
Following the structure of the tree | Dean Kent | 2008/05/02 09:14 AM |
Following the structure of the tree | David W. Hess | 2008/05/02 10:05 AM |
LOL! | Dean Kent | 2008/05/02 10:33 AM |
Following the structure of the tree | anonymous | 2008/05/02 03:04 PM |
Following the structure of the tree | Dean Kent | 2008/05/02 07:52 PM |
Following the structure of the tree | Foo_ | 2008/05/03 02:01 AM |
Following the structure of the tree | David W. Hess | 2008/05/03 06:54 AM |
Following the structure of the tree | Dean Kent | 2008/05/03 10:06 AM |
Following the structure of the tree | Foo_ | 2008/05/04 01:06 AM |
Following the structure of the tree | Michael S | 2008/05/04 01:22 AM |
Hybrid kernel, not NT | Linus Torvalds | 2006/05/09 05:19 PM |
Microkernel Vs Monolithic Kernel | Kernel_Protector | 2006/05/09 09:41 PM |
Microkernel Vs Monolithic Kernel | David Kanter | 2006/05/09 10:30 PM |
Sigh, Stand back, its slashdotting time. (NT) | Anonymous | 2006/05/09 10:44 PM |
Microkernel Vs Monolithic Kernel | blah | 2006/05/12 08:58 PM |
Microkernel Vs Monolithic Kernel | Rob Thorpe | 2006/05/15 01:41 AM |
Hybrid kernel, not NT | AnalGuy | 2006/05/16 03:10 AM |
Theory versus practice | David Kanter | 2006/05/16 12:55 PM |
Distributed algorithms | Rob Thorpe | 2006/05/17 12:53 AM |
Theory versus practice | Howard Chu | 2006/05/17 02:54 AM |
Theory versus practice | JS | 2006/05/17 04:29 AM |
Play online poker, blackjack !!! | Gamezonex | 2007/08/16 01:49 PM |
Hybrid kernel, not NT (NT) | atle rene mossik | 2020/12/12 09:31 AM |
Hybrid (micro)kernels | philt | 2006/05/14 09:15 PM |
Hybrid (micro)kernels | Linus Torvalds | 2006/05/15 08:20 AM |
Hybrid (micro)kernels | Linus Torvalds | 2006/05/15 11:56 AM |
Hybrid (micro)kernels | Rob Thorpe | 2006/05/16 01:22 AM |
Hybrid (micro)kernels | rwessel | 2006/05/16 11:23 AM |
Hybrid (micro)kernels | Rob Thorpe | 2006/05/17 12:43 AM |
Hybrid (micro)kernels | rwessel | 2006/05/17 01:33 AM |
Hybrid (micro)kernels | Rob Thorpe | 2006/05/19 07:51 AM |
Hybrid (micro)kernels | rwessel | 2006/05/19 12:27 PM |
Hybrid (micro)kernels | techIperson | 2006/05/15 01:25 PM |
Hybrid (micro)kernels | mas | 2006/05/15 05:17 PM |
Hybrid (micro)kernels | Linus Torvalds | 2006/05/15 05:39 PM |
Hybrid (micro)kernels | Colonel Kernel | 2006/05/15 09:17 PM |
Hybrid (micro)kernels | Wink Saville | 2006/05/15 10:31 PM |
Hybrid (micro)kernels | Linus Torvalds | 2006/05/16 10:08 AM |
Hybrid (micro)kernels | Wink Saville | 2006/05/16 09:55 PM |
Hybrid (micro)kernels | rwessel | 2006/05/16 11:31 AM |
Hybrid (micro)kernels | Linus Torvalds | 2006/05/16 12:00 PM |
Hybrid (micro)kernels | Brendan | 2006/05/16 01:36 AM |
Hybrid (micro)kernels | Paul Elliott | 2006/09/03 08:44 AM |
Hybrid (micro)kernels | Rob Thorpe | 2006/09/04 09:25 AM |
Hybrid (micro)kernels | philt | 2006/05/16 12:55 AM |
Hybrid (micro)kernels | pgerassi | 2007/08/16 07:41 PM |
Another questionable entry on Wikipedia? | Chung Leong | 2006/05/18 10:33 AM |
Hybrid (micro)kernels | israel | 2006/05/20 04:25 AM |
Hybrid (micro)kernels | Rob Thorpe | 2006/05/22 08:35 AM |