By: Colonel Kernel (c_kernel.delete@this.hotmail.com), May 15, 2006 9:17 pm
Room: Moderated Discussions
Linus Torvalds (torvalds@osdl.org) on 5/15/06 wrote:
>Shapiro (and to some degree Tanenbaum) also makes the
>mistake of equating different address spaces with the
>notion of modularity. They have nothing to do with each
>other.
This is the most sensible thing about this "micro-vs-mono" debate that anyone has said so far. However, it's important not to ignore the protection aspect of having separate address spaces, so I'd say something more like (modularity + isolation != address spaces).
> You can be modular without using hardware to enforce
>it
Yes! And you can have isolation without the hardware assist too -- for example, Singularity.
> and you can generate a horribly messy system where
>two processes are intimately aware of how each other works
>even if they are separated by MMU boundaries.
Yes again -- for example, MINIX prior to version 3 (I haven't looked at MINIX 3 yet, so I can't comment on it).
>As I already alluded to (and expanded on in my reply to
>myself), I actually think using "designer languages" may
>be a much better solution to the modularity problem than
>the microkernel approach.
By "designer languages", are you making a veiled reference to Spec#? ;-)
I agree that the language level seems to be the most sensible place to solve the problem of performance versus modularity and isolation. The time for this approach has obviously not come yet, since there is a huge amount of existing code out there that would take decades to rewrite in a "designer language", but I can see such an idea taking off eventually.
However, I disagree that hardware-enforced protection boundaries are a necessary part of the definition of "microkernel". As you said before, modularity and separate address spaces are orthogonal concepts. Also, separate address spaces are not a precondition for process isolation, as systems like Singularity demonstrate.
I think it should be obvious that modularity is the key to good software engineering, and isolation is necessary for reliability, so perhaps the "hardware-isolated ukernel" is just an ugly intermediate step on the way to a much better idea.
[Disclaimer: I am not an OS researcher. I work on commercial database software for a living, not OSes. I'm not sure how this affects the dimensions of the grain of salt with which you take my opinions. :-)]
>Shapiro (and to some degree Tanenbaum) also makes the
>mistake of equating different address spaces with the
>notion of modularity. They have nothing to do with each
>other.
This is the most sensible thing about this "micro-vs-mono" debate that anyone has said so far. However, it's important not to ignore the protection aspect of having separate address spaces, so I'd say something more like (modularity + isolation != address spaces).
> You can be modular without using hardware to enforce
>it
Yes! And you can have isolation without the hardware assist too -- for example, Singularity.
> and you can generate a horribly messy system where
>two processes are intimately aware of how each other works
>even if they are separated by MMU boundaries.
Yes again -- for example, MINIX prior to version 3 (I haven't looked at MINIX 3 yet, so I can't comment on it).
>As I already alluded to (and expanded on in my reply to
>myself), I actually think using "designer languages" may
>be a much better solution to the modularity problem than
>the microkernel approach.
By "designer languages", are you making a veiled reference to Spec#? ;-)
I agree that the language level seems to be the most sensible place to solve the problem of performance versus modularity and isolation. The time for this approach has obviously not come yet, since there is a huge amount of existing code out there that would take decades to rewrite in a "designer language", but I can see such an idea taking off eventually.
However, I disagree that hardware-enforced protection boundaries are a necessary part of the definition of "microkernel". As you said before, modularity and separate address spaces are orthogonal concepts. Also, separate address spaces are not a precondition for process isolation, as systems like Singularity demonstrate.
I think it should be obvious that modularity is the key to good software engineering, and isolation is necessary for reliability, so perhaps the "hardware-isolated ukernel" is just an ugly intermediate step on the way to a much better idea.
[Disclaimer: I am not an OS researcher. I work on commercial database software for a living, not OSes. I'm not sure how this affects the dimensions of the grain of salt with which you take my opinions. :-)]
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 |