By: Simon Farnsworth (simon.delete@this.farnz.org.uk), March 15, 2021 6:56 am
Room: Moderated Discussions
anon2 (anon.delete@this.anon.com) on March 15, 2021 4:53 am wrote:
> Simon Farnsworth (simon.delete@this.farnz.org.uk) on March 15, 2021 3:12 am wrote:
> > anon2 (anon.delete@this.anon.com) on March 15, 2021 1:58 am wrote:
> > > Anon (no.delete@this.spam.com) on March 14, 2021 11:49 pm wrote:
> > > > Linus Torvalds (torvalds.delete@this.linux-foundation.org) on March 14, 2021 4:58 pm wrote:
> > > > > That kind of thing could be useful for a microkernel (not that I believe in the
> > > > > concept - I continue to be of the opinion that microkernel proponents are overplaying the advantages,
> > > > > and underplaying the very real issues with communication and sharing).
> > > >
> > > > In several places I saw Linux being classified as "microkernel", I never touhgt
> > > > this classification have any relevance, but now I read you bashing the concept.
> > > >
> > > > So, is Linux a microkernel after all?
> > >
> > > No. It has taken some concepts and applied them where they are are a good fit
> > > (e.g., to implement userspace device drivers for certain classes of device).
> > >
> > > > What is the true concept of microkernel?
> > > >
> > >
> > > Traditionally it is a minimal kernel that supports only thread scheduling, low level interrupt handling,
> > > IPC, and perhaps low level virtual memory management. The
> > > rest of the kernel services are built with threads
> > > (which may or may not be in different address spaces and privilege modes) on top of that base.
> > >
> > > It sounds like such a nice clean idea that even experienced computer scientists
> > > and engineers throw away careers trying to make it work like a monolithic kernel.
> > > The reality is not all problems can be decomposed into "clean, simple".
> > >
> > It also promises a route to extreme stability; the core kernel does IRQ handling, a simple form of
> > IPC, address spaces and task switching (noting that it's up to the user of these facilities to pair
> > tasks with address spaces), and nothing else, and hence in theory can be made completely bug free.
>
> In theory so can the core of a monolithic kernel.
>
The difference is that stuff outside the core of a monolithic kernel can disrupt the functioning of the core. The attractive theory of a microkernel is that the trusted base that must be bug free is small, and the microkernel core can arrange so that failures of any other component of the system do not break the core (memory protection etc), thus ensuring that the system is "up" (for some value of "up") even if only the core works.
> >
> > Then, whenever another component of the system fails, you "merely" have to kill and restart
> > it to return to normal operation - if everything is built to handle crashes, then this Just
> > Works. In practice, life is not that simple, and designing your tasks to handle a crash and
> > restart cleanly is also a hard problem, especially in the face of real hardware behaviour.
>
> Killing and restarting things is haphazard and no vast improvement to stability.
Mmm, but it's oh-so-seductive an idea in theory; you've reduced the proof required to demonstrate that your system is reliable from "every line of code is bug-free" to "the minimal core is bug-free, and all non-core functions can be killed and restarted if they exhibit a bug without affecting functionality".
It sounds so nice[1]; you've simplified the problem of the perfectly stable kernel. The only catch is that practically "all non-core functions can be killed and restarted if they exhibit a bug without affecting functionality" is not much easier (if it's easier at all) than "every line of code is bug-free".
[1] And, in a dysfunctional engineering organisation, it is nice, because you can pass blame on whenever anything outside the core causes a system problem, as the only way for that to happen is if someone else has failed to write code that can be killed and restarted without affecting functionality, and that's clearly Not Your Fault.
> Simon Farnsworth (simon.delete@this.farnz.org.uk) on March 15, 2021 3:12 am wrote:
> > anon2 (anon.delete@this.anon.com) on March 15, 2021 1:58 am wrote:
> > > Anon (no.delete@this.spam.com) on March 14, 2021 11:49 pm wrote:
> > > > Linus Torvalds (torvalds.delete@this.linux-foundation.org) on March 14, 2021 4:58 pm wrote:
> > > > > That kind of thing could be useful for a microkernel (not that I believe in the
> > > > > concept - I continue to be of the opinion that microkernel proponents are overplaying the advantages,
> > > > > and underplaying the very real issues with communication and sharing).
> > > >
> > > > In several places I saw Linux being classified as "microkernel", I never touhgt
> > > > this classification have any relevance, but now I read you bashing the concept.
> > > >
> > > > So, is Linux a microkernel after all?
> > >
> > > No. It has taken some concepts and applied them where they are are a good fit
> > > (e.g., to implement userspace device drivers for certain classes of device).
> > >
> > > > What is the true concept of microkernel?
> > > >
> > >
> > > Traditionally it is a minimal kernel that supports only thread scheduling, low level interrupt handling,
> > > IPC, and perhaps low level virtual memory management. The
> > > rest of the kernel services are built with threads
> > > (which may or may not be in different address spaces and privilege modes) on top of that base.
> > >
> > > It sounds like such a nice clean idea that even experienced computer scientists
> > > and engineers throw away careers trying to make it work like a monolithic kernel.
> > > The reality is not all problems can be decomposed into "clean, simple".
> > >
> > It also promises a route to extreme stability; the core kernel does IRQ handling, a simple form of
> > IPC, address spaces and task switching (noting that it's up to the user of these facilities to pair
> > tasks with address spaces), and nothing else, and hence in theory can be made completely bug free.
>
> In theory so can the core of a monolithic kernel.
>
The difference is that stuff outside the core of a monolithic kernel can disrupt the functioning of the core. The attractive theory of a microkernel is that the trusted base that must be bug free is small, and the microkernel core can arrange so that failures of any other component of the system do not break the core (memory protection etc), thus ensuring that the system is "up" (for some value of "up") even if only the core works.
> >
> > Then, whenever another component of the system fails, you "merely" have to kill and restart
> > it to return to normal operation - if everything is built to handle crashes, then this Just
> > Works. In practice, life is not that simple, and designing your tasks to handle a crash and
> > restart cleanly is also a hard problem, especially in the face of real hardware behaviour.
>
> Killing and restarting things is haphazard and no vast improvement to stability.
Mmm, but it's oh-so-seductive an idea in theory; you've reduced the proof required to demonstrate that your system is reliable from "every line of code is bug-free" to "the minimal core is bug-free, and all non-core functions can be killed and restarted if they exhibit a bug without affecting functionality".
It sounds so nice[1]; you've simplified the problem of the perfectly stable kernel. The only catch is that practically "all non-core functions can be killed and restarted if they exhibit a bug without affecting functionality" is not much easier (if it's easier at all) than "every line of code is bug-free".
[1] And, in a dysfunctional engineering organisation, it is nice, because you can pass blame on whenever anything outside the core causes a system problem, as the only way for that to happen is if someone else has failed to write code that can be killed and restarted without affecting functionality, and that's clearly Not Your Fault.
Topic | Posted By | Date |
---|---|---|
x86 - why unite when you can fragment? | anonymou5 | 2021/03/12 06:16 PM |
x86 - why unite when you can fragment? | Linus Torvalds | 2021/03/13 01:18 PM |
x86 - why unite when you can fragment? | Jon Masters | 2021/03/13 07:25 PM |
x86 - why unite when you can fragment? | Jon Masters | 2021/03/13 07:44 PM |
x86 - why unite when you can fragment? | Yuhong Bao | 2021/03/13 08:49 PM |
x86 - why unite when you can fragment? | tt | 2021/03/20 09:30 AM |
x86 - why unite when you can fragment? | Andrey | 2021/03/14 04:15 PM |
x86 - why unite when you can fragment? | Linus Torvalds | 2021/03/14 04:58 PM |
x86 - why unite when you can fragment? | anonymou5 | 2021/03/14 05:31 PM |
x86 - why unite when you can fragment? | anon2 | 2021/03/14 08:07 PM |
Microkernel? | Anon | 2021/03/14 11:49 PM |
Microkernel? | none | 2021/03/15 12:37 AM |
Microkernel? | Anon | 2021/03/15 01:56 AM |
Microkernel? | anon2 | 2021/03/15 01:58 AM |
Microkernel? | Simon Farnsworth | 2021/03/15 03:12 AM |
Microkernel? | anon2 | 2021/03/15 04:53 AM |
Microkernel? | Simon Farnsworth | 2021/03/15 06:56 AM |
Microkernel? | iz | 2021/03/15 08:10 AM |
Microkernel? | Anon | 2021/03/15 09:05 AM |
Microkernel? | iz | 2021/03/16 01:25 AM |
Microkernel? | Andrey | 2021/03/16 02:54 AM |
Microkernel? | iz | 2021/03/16 08:36 AM |
Microkernel? | Andrey | 2021/03/16 10:06 AM |
Microkernel? | anonymou5 | 2021/03/16 11:44 AM |
Microkernel? | iz | 2021/03/21 02:58 AM |
Microkernel? | Andrey | 2021/03/21 09:34 AM |
Microkernel? | anon2 | 2021/03/15 08:31 AM |
Microkernel? | Simon Farnsworth | 2021/03/16 04:42 AM |
Microkernel? | Gabriele Svelto | 2021/03/15 03:21 AM |
Microkernel? | anon2 | 2021/03/15 04:56 AM |
Microkernel? | Gabriele Svelto | 2021/03/15 10:41 AM |
Microkernel? | anon2 | 2021/03/15 08:00 PM |
Microkernel? | Gabriele Svelto | 2021/03/16 07:23 AM |
Microkernel? | anon2 | 2021/03/16 05:13 PM |
Microkernel? | anon2 | 2021/03/16 05:16 PM |
Microkernel? | Gian-Carlo Pascutto | 2021/03/16 01:40 PM |
Microkernel? | anon2 | 2021/03/16 05:53 PM |
Microkernel? | Linus Torvalds | 2021/03/16 07:25 PM |
Microkernel? | Doug S | 2021/03/17 09:30 AM |
Microkernel? | Linus Torvalds | 2021/03/17 10:30 AM |
Microkernel? | Brendan | 2021/03/17 10:56 PM |
Microkernel? | Michael S | 2021/03/18 03:47 AM |
Microkernel? | Brendan | 2021/03/18 09:07 AM |
Microkernel? | Jose | 2021/03/18 09:35 AM |
Microkernel? | zArchJon | 2021/03/18 05:42 PM |
Transputer | RichardC | 2021/03/17 09:47 AM |
Microkernel? | dmcq | 2021/03/17 11:15 AM |
Microkernel? | Linus Torvalds | 2021/03/17 11:59 AM |
Microkernel? | dmcq | 2021/03/17 12:38 PM |
Microkernel? | Adrian | 2021/03/17 01:00 PM |
Microkernel? | Ana R. Riano | 2021/03/18 04:33 AM |
Microkernel? | ⚛ | 2021/04/30 04:52 PM |
Microkernel? | NvaxPlus | 2021/03/17 11:48 AM |
Microkernel? | Michael S | 2021/03/18 03:32 AM |
Microkernel? | Adrian | 2021/03/18 04:12 AM |
Microkernel? | dmcq | 2021/03/18 06:30 AM |
Microkernel? | dmcq | 2021/03/18 06:55 AM |
Microkernel? | Adrian | 2021/03/18 08:35 AM |
Microkernel? | --- | 2021/03/18 09:49 AM |
Microkernel? | dmcq | 2021/03/18 10:59 AM |
Microkernel? | dmcq | 2021/03/18 04:09 PM |
Microkernel? | --- | 2021/03/18 09:27 AM |
Microkernel? | Kalle A. Sandström | 2021/03/20 06:34 AM |
Microkernel? | --- | 2021/03/20 08:35 AM |
Microkernel? | anon2 | 2021/03/21 05:29 PM |
Microkernel? | dmcq | 2021/03/15 04:06 AM |
Microkernel? | anon2 | 2021/03/15 04:59 AM |
Microkernel? | dmcq | 2021/03/15 11:51 AM |
Microkernel? | anon2 | 2021/03/15 08:31 PM |
Microkernel? | dmcq | 2021/03/16 09:17 AM |
Microkernel? | Jukka Larja | 2021/03/16 11:22 AM |
Microkernel? | dmcq | 2021/03/16 04:06 PM |
Microkernel? | Jukka Larja | 2021/03/17 03:42 AM |
Microkernel? | dmcq | 2021/03/17 07:00 AM |
Microkernel? | anon2 | 2021/03/16 05:26 PM |
Microkernel? | --- | 2021/03/16 10:07 AM |
Microkernel? | -.- | 2021/03/15 08:15 PM |
Microkernel? | anon2 | 2021/03/15 09:18 PM |
Microkernel? | Foo_ | 2021/03/16 03:37 AM |
Read the thread (NT) | anon2 | 2021/03/16 05:27 PM |
Already did (NT) | Foo_ | 2021/03/17 02:55 AM |
Already did | anon2 | 2021/03/17 03:46 AM |
Already did | Etienne Lorrain | 2021/03/18 02:31 AM |
Microkernel? | -.- | 2021/03/17 05:04 AM |
Microkernel? | Gabriele Svelto | 2021/03/17 08:53 AM |
Microkernel? | -.- | 2021/03/17 02:43 PM |
Microkernel? | dmcq | 2021/03/16 08:40 AM |
x86 - why unite when you can fragment? | Konrad Schwarz | 2021/03/17 10:19 AM |
x86 - why unite when you can fragment? | anonon | 2021/03/15 07:37 AM |