Hybrid (micro)kernels

By: Rob Thorpe (robert.thorpe.delete@this.antenova.com), May 17, 2006 12:43 am
Room: Moderated Discussions
rwessel (robertwessel@yahoo.com) on 5/16/06 wrote:
---------------------------
>Rob Thorpe (robert.thorpe@antenova.com) on 5/16/06 wrote:
>---------------------------
>>You could do something like this:
>>
>>* Have a kernel containing the most essential things, scheduler, start-up etc.
>>* Have a small compiler hooked to the kernel capable of compiling from some simple
>>intermediate language into machine code. (Maybe it need not be in the kernel)
>>* Have less core things, like device drivers, and file systems held in intermediate code.
>>
>>When a sub-system is needed it is compiled. To compile it there is a function something like
>>
>>compiler (code_block, allowable_mem_accesses, allowable_io, etc);
>>
>>I.e. the compiler takes as argument what memory and IO the code is permitted to
>>access. It then compiles the code with those limits. Anything it statically verifies
>>are inside the limits is compiled directly, for anything it can't it inserts checks.
>>
>>The compilation could be done for device drivers etc when their memory spaces are
>>known. Which may be boot time or build time or some other time later.
>>
>>
>>This seems a complex way to go about the problem, the compiler would have to be
>>good. But there again most kernels are fairly complex anyway.
>
>
>I can see it now... Device drivers written in Java... ;-)
>
>But seriously, that seems like overkill. Any trustworthy compiler for a type-safe
>language will do the trick. They just have to accept (well typed) pointers to the
>objects they reference. And I/O ports are mostly ignorable - since essentially
>nothing that's performance critical uses them, you can provide access though an
>(checked) API (at least on platforms that actually support I/O port instructions
>- implementations that fake PCI ports with memory mappings are obviously in the original scenario).

I don't think that could quite work.
Lets say a device has a region of memory it uses to communicate with the it's driver. The data in the region is to the language using it untyped, it must be cast into the correct types. e.g. The driver knows that at memory address 56a3fb21 is a struct something_t. This is why I was proposing some method for loosening checking, for a restricted range of memory.

There are two different thing to think about here though:-
* The correctness of types
* Whether the driver can steamroller other code

Even with perfectly checked and verified types it's still possible to address completely the wrong things, write to the wrong places etc.

< Previous Post in ThreadNext Post in Thread >
TopicPosted ByDate
Hybrid (micro)kernelsTzvetan Mikov05/08/06 04:41 PM
  Hybrid (micro)kernelsS. Rao05/08/06 06:14 PM
  Hybrid (micro)kernelsBill Todd05/08/06 06:16 PM
    Hybrid (micro)kernelsTzvetan Mikov05/08/06 07:21 PM
      Hybrid (micro)kernelsnick05/08/06 07:50 PM
      Hybrid (micro)kernelsBill Todd05/09/06 01:26 AM
        There aren't enough words...Rob Thorpe05/09/06 02:39 AM
          There aren't enough words...Tzvetan Mikov05/09/06 03:10 PM
            There aren't enough words...Rob Thorpe05/15/06 12:25 AM
        Hybrid (micro)kernelsTzvetan Mikov05/09/06 11:17 AM
          Hybrid (micro)kernelsBill Todd05/09/06 04:05 PM
  Hybrid (micro)kernelsrwessel05/08/06 11:23 PM
    Hybrid kernel, not NTRichard Urich05/09/06 06:03 AM
      Hybrid kernel, not NT_Arthur05/09/06 07:06 AM
        Hybrid kernel, not NTRob Thorpe05/09/06 07:40 AM
          Hybrid kernel, not NT_Arthur05/09/06 08:30 AM
            Hybrid kernel, not NTRob Thorpe05/09/06 09:07 AM
              Hybrid kernel, not NT_Arthur05/09/06 09:36 AM
                Linux vs MacOSX peformance, debunked_Arthur05/18/06 07:30 AM
                  Linux vs MacOSX peformance, debunkedRob Thorpe05/18/06 08:19 AM
                    Linux vs MacOSX peformance, debunkedAnonymous05/18/06 12:31 PM
        Hybrid kernel, not NTLinus Torvalds05/09/06 08:16 AM
          Hybrid kernel, not NTAndi Kleen05/09/06 02:32 PM
            Hybrid kernel, not NTmyself05/09/06 03:24 PM
              Hybrid kernel, not NTmyself05/09/06 03:41 PM
              Hybrid kernel, not NTBrendan05/09/06 05:26 PM
                Hybrid kernel, not NTLinus Torvalds05/09/06 08:06 PM
                  Hybrid kernel, not NTBrendan05/13/06 01:35 AM
                    Hybrid kernel, not NTnick05/13/06 04:40 AM
                      Hybrid kernel, not NTBrendan05/13/06 09:48 AM
                        Hybrid kernel, not NTnick05/13/06 07:41 PM
                          Hybrid kernel, not NTBrendan05/13/06 09:51 PM
                            Hybrid kernel, not NTnick05/14/06 05:57 PM
                              Hybrid kernel, not NTBrendan05/14/06 10:40 PM
                                Hybrid kernel, not NTnick05/14/06 11:46 PM
                                  Hybrid kernel, not NTBrendan05/15/06 04:00 AM
                                    Hybrid kernel, not NTrwessel05/15/06 07:21 AM
                                      Hybrid kernel, not NTBrendan05/15/06 08:55 AM
                                        Hybrid kernel, not NTLinus Torvalds05/15/06 09:49 AM
                                          Hybrid kernel, not NTnick05/15/06 04:41 PM
                                          Hybrid kernel, not NTtony roth01/31/08 02:20 PM
                                    Hybrid kernel, not NTnick05/15/06 06:33 PM
                                      Hybrid kernel, not NTBrendan05/16/06 01:39 AM
                                        Hybrid kernel, not NTnick05/16/06 02:53 AM
                                          Hybrid kernel, not NTBrendan05/16/06 05:37 AM
                  Hybrid kernel, not NTAnonymous05/01/08 10:31 PM
                    Following the structure of the treeMichael S05/02/08 04:19 AM
                      Following the structure of the treeDean Kent05/02/08 05:31 AM
                        Following the structure of the treeMichael S05/02/08 06:02 AM
                        Following the structure of the treeDavid W. Hess05/02/08 06:48 AM
                          Following the structure of the treeDean Kent05/02/08 09:14 AM
                            Following the structure of the treeDavid W. Hess05/02/08 10:05 AM
                              LOL!Dean Kent05/02/08 10:33 AM
                              Following the structure of the treeanonymous05/02/08 03:04 PM
                                Following the structure of the treeDean Kent05/02/08 07:52 PM
                                Following the structure of the treeFoo_05/03/08 02:01 AM
                                  Following the structure of the treeDavid W. Hess05/03/08 06:54 AM
                                    Following the structure of the treeDean Kent05/03/08 10:06 AM
                                      Following the structure of the treeFoo_05/04/08 01:06 AM
                                        Following the structure of the treeMichael S05/04/08 01:22 AM
            Hybrid kernel, not NTLinus Torvalds05/09/06 05:19 PM
              Microkernel Vs Monolithic KernelKernel_Protector05/09/06 09:41 PM
                Microkernel Vs Monolithic KernelDavid Kanter05/09/06 10:30 PM
                  Sigh, Stand back, its slashdotting time. (NT)Anonymous05/09/06 10:44 PM
                  Microkernel Vs Monolithic Kernelblah05/12/06 08:58 PM
                  Microkernel Vs Monolithic KernelRob Thorpe05/15/06 01:41 AM
          Hybrid kernel, not NTAnalGuy05/16/06 03:10 AM
            Theory versus practiceDavid Kanter05/16/06 12:55 PM
              Distributed algorithmsRob Thorpe05/17/06 12:53 AM
              Theory versus practiceHoward Chu05/17/06 02:54 AM
                Theory versus practiceJS05/17/06 04:29 AM
          Play online poker, blackjack !!! Gamezonex08/16/07 01:49 PM
  Hybrid (micro)kernelsphilt05/14/06 09:15 PM
    Hybrid (micro)kernelsLinus Torvalds05/15/06 08:20 AM
      Hybrid (micro)kernelsLinus Torvalds05/15/06 11:56 AM
        Hybrid (micro)kernelsRob Thorpe05/16/06 01:22 AM
          Hybrid (micro)kernelsrwessel05/16/06 11:23 AM
            Hybrid (micro)kernelsRob Thorpe05/17/06 12:43 AM
              Hybrid (micro)kernelsrwessel05/17/06 01:33 AM
                Hybrid (micro)kernelsRob Thorpe05/19/06 07:51 AM
                  Hybrid (micro)kernelsrwessel05/19/06 12:27 PM
      Hybrid (micro)kernelstechIperson05/15/06 01:25 PM
      Hybrid (micro)kernelsmas05/15/06 05:17 PM
        Hybrid (micro)kernelsLinus Torvalds05/15/06 05:39 PM
          Hybrid (micro)kernelsColonel Kernel05/15/06 09:17 PM
            Hybrid (micro)kernelsWink Saville05/15/06 10:31 PM
              Hybrid (micro)kernelsLinus Torvalds05/16/06 10:08 AM
                Hybrid (micro)kernelsWink Saville05/16/06 09:55 PM
          Hybrid (micro)kernelsrwessel05/16/06 11:31 AM
            Hybrid (micro)kernelsLinus Torvalds05/16/06 12:00 PM
        Hybrid (micro)kernelsBrendan05/16/06 01:36 AM
        Hybrid (micro)kernelsPaul Elliott09/03/06 08:44 AM
          Hybrid (micro)kernelsRob Thorpe09/04/06 09:25 AM
      Hybrid (micro)kernelsphilt05/16/06 12:55 AM
        Hybrid (micro)kernelspgerassi08/16/07 07:41 PM
  Another questionable entry on Wikipedia?Chung Leong05/18/06 10:33 AM
  Hybrid (micro)kernelsisrael05/20/06 04:25 AM
    Hybrid (micro)kernelsRob Thorpe05/22/06 08:35 AM
Reply to this Topic
Name:
Email:
Topic:
Body: No Text
How do you spell blue?