By: Rob Thorpe (robert.thorpe.delete@this.antenova.com), May 15, 2006 1:41 am
Room: Moderated Discussions
David Kanter (dkanter@realworldtech.com) on 5/9/06 wrote:
---------------------------
>Kernel_Protector (kernelprotector@yahoo.com) on 5/9/06 wrote:
>---------------------------
>>According to my view, since its a kernel, its design should be planned good.
>>variable codes(codes which interact with hardware, daily new hardwares appears)
>>Vs fixed codes(or not frequently changing codes and 100% >reliable codes and does not deal with hardware)
>>only fixed codes should be running in kernel space with full priviledges and variable
>>codes should be running in user space.
>
>
>No amount of planning can substitute for seeing what is going on. If you try to
>freeze software in stone and never change it over the course of 10 years, you're going to be very very sorry.
Not completely, but you would be surprised. Those who have spent a lot of time in the world of windows are used to programs changing all the time. This is because many of those program and much of the OS is badly designed.
In Unix things have lasted much longer. The basic function call interface used today has few differences to that of the eighties, most of the differences additions not changes.
Some of the basic userland utilities have changed even less. (Though in my opinion some of them should have changed more than they have).
In general there is a principle that programs(and modules) can be split into two basic types:-
1. Code with a fixed requirement
2. Code with expanding requirements
Many programs, including OSes and most apps fall into class 2. Some though fall into class 1, drivers for example fulfill a fixed requirement, when the hardware changes a new driver is needed. This may reuse code from an old driver, but that isn't quite the same thing.
More modules than programs fall into #2. In large peices of software it's not hard to find files that have not changed in many years, or where the only changes have been bug fixes. These modules can generally be kept freer of bugs more easily than others, often the only "bugs" found in them are misunderstanding in the interfaces.
If the core part of an OS kernel could be brought into class #2 then that would be a great achievement, because it would make achieving high reliability for that part much easier. It may not be impossible, since the amount of functionality and code concerned may be only relatively small, say 20000 lines.
>>if IPC, Memory management those which has a complete programming which wont have
>>bugs(since the codes for these may be small and which wont have any frequent code
>>change) only runs in the kernel and everything else(remaining drivers) which might
>>have code change even daily runs in the user-level, will result in a good secured and reliable OS.
>
>Has it occurred to you that these functions might need to change over time?
This may actually be possible. All that is needed is for the base kernel to implement the absolute most general cases. Libs further down can translate this into interfaces for other programs.
It would be progress even if these things could change little.
>>regarding performance,
>>i like to say this...
>>i had a program which took 15 minutes to complete with a pentium II processor.the
>>same program took 7 mintues to complete with a pentium III processor. and it took
>>only 2 or 3 minutes in a pentium IV processor.
>
>Do you write code which can run efficiently (> 90% speed up) on N threads, for
>arbitrary N? If not, I wouldn't count on that any more.
>
>Besides, just because hardware gets faster isn't an excuse to write bad software.
>That's like saying that we don't need seat belts in cars since people tend to be
>healthier over time as nutrition and our understanding of the body improves.
As "blah" said, I personally would rather have safety and security than speed. Both would be preferable though.
I'm not sure this is such an issue anyway.
>>the performance will be increased by the hardware automatically as time goes on.BUT
>>will a kernel safety like microkernel be given by any >hardware automatically ???
>
>Is a ukernel really that much safer than existing operating systems? It seems
>to me that some systems like VMS, zOS and NSK all have up times as high as a couple
>of decades. Doesn't seem like safety's really a problem...
Many systems have been made safe and secure through extremely paranoid kernel programming. This is a legitimate engineering choice. But it causes many problems. Many of the operating systems you mention are primitive in many regards compared to more modern systems. That is their filesystems, syscall interfaces, threading etc leave much to be desired. They also support relatively little hardware.
This is because of the enormous care that must be taken in changing them.
The (possibly false) hope that microkernels give is that they may make it possible for more sophisticated systems -ones with the capabilities of say linux- to be similarly reliable.
---------------------------
>Kernel_Protector (kernelprotector@yahoo.com) on 5/9/06 wrote:
>---------------------------
>>According to my view, since its a kernel, its design should be planned good.
>>variable codes(codes which interact with hardware, daily new hardwares appears)
>>Vs fixed codes(or not frequently changing codes and 100% >reliable codes and does not deal with hardware)
>>only fixed codes should be running in kernel space with full priviledges and variable
>>codes should be running in user space.
>
>
>No amount of planning can substitute for seeing what is going on. If you try to
>freeze software in stone and never change it over the course of 10 years, you're going to be very very sorry.
Not completely, but you would be surprised. Those who have spent a lot of time in the world of windows are used to programs changing all the time. This is because many of those program and much of the OS is badly designed.
In Unix things have lasted much longer. The basic function call interface used today has few differences to that of the eighties, most of the differences additions not changes.
Some of the basic userland utilities have changed even less. (Though in my opinion some of them should have changed more than they have).
In general there is a principle that programs(and modules) can be split into two basic types:-
1. Code with a fixed requirement
2. Code with expanding requirements
Many programs, including OSes and most apps fall into class 2. Some though fall into class 1, drivers for example fulfill a fixed requirement, when the hardware changes a new driver is needed. This may reuse code from an old driver, but that isn't quite the same thing.
More modules than programs fall into #2. In large peices of software it's not hard to find files that have not changed in many years, or where the only changes have been bug fixes. These modules can generally be kept freer of bugs more easily than others, often the only "bugs" found in them are misunderstanding in the interfaces.
If the core part of an OS kernel could be brought into class #2 then that would be a great achievement, because it would make achieving high reliability for that part much easier. It may not be impossible, since the amount of functionality and code concerned may be only relatively small, say 20000 lines.
>>if IPC, Memory management those which has a complete programming which wont have
>>bugs(since the codes for these may be small and which wont have any frequent code
>>change) only runs in the kernel and everything else(remaining drivers) which might
>>have code change even daily runs in the user-level, will result in a good secured and reliable OS.
>
>Has it occurred to you that these functions might need to change over time?
This may actually be possible. All that is needed is for the base kernel to implement the absolute most general cases. Libs further down can translate this into interfaces for other programs.
It would be progress even if these things could change little.
>>regarding performance,
>>i like to say this...
>>i had a program which took 15 minutes to complete with a pentium II processor.the
>>same program took 7 mintues to complete with a pentium III processor. and it took
>>only 2 or 3 minutes in a pentium IV processor.
>
>Do you write code which can run efficiently (> 90% speed up) on N threads, for
>arbitrary N? If not, I wouldn't count on that any more.
>
>Besides, just because hardware gets faster isn't an excuse to write bad software.
>That's like saying that we don't need seat belts in cars since people tend to be
>healthier over time as nutrition and our understanding of the body improves.
As "blah" said, I personally would rather have safety and security than speed. Both would be preferable though.
I'm not sure this is such an issue anyway.
>>the performance will be increased by the hardware automatically as time goes on.BUT
>>will a kernel safety like microkernel be given by any >hardware automatically ???
>
>Is a ukernel really that much safer than existing operating systems? It seems
>to me that some systems like VMS, zOS and NSK all have up times as high as a couple
>of decades. Doesn't seem like safety's really a problem...
Many systems have been made safe and secure through extremely paranoid kernel programming. This is a legitimate engineering choice. But it causes many problems. Many of the operating systems you mention are primitive in many regards compared to more modern systems. That is their filesystems, syscall interfaces, threading etc leave much to be desired. They also support relatively little hardware.
This is because of the enormous care that must be taken in changing them.
The (possibly false) hope that microkernels give is that they may make it possible for more sophisticated systems -ones with the capabilities of say linux- to be similarly reliable.
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 |