Changes between Version 44 and Version 45 of FAQ


Ignore:
Timestamp:
2017-01-18T11:25:00Z (7 years ago)
Author:
Jakub Jermář
Comment:

More accurate descriptions of MINIX 3 and Genode

Legend:

Unmodified
Added
Removed
Modified
  • FAQ

    v44 v45  
    9191=== How is HelenOS different from MINIX 3? ===
    9292
    93 [http://www.minix3.org MINIX 3] is a multiserver system which comes with its own microkernel and NetBSD userland. The microkernel does not support threads. As of version 3.3.0, MINIX runs on single-processor ia32 and arm32 systems. Some multiprocessor code is present, but has been unmaintained since version 3.1.x. MINIX 3 comes with two alternative networking stacks. Its own `inet` server and `lwip` server based on the lwIP networking stack. Even though lwIP contains some experimental support for IPv6, both servers are IPv4 only. IPv6 support for the `lwip` server is work in progress. Both `inet` and `lwip` have monolithic architecture that combines IP, UDP and TCP in one process. Some research has been done on making the networking stack modular. The file systems and most of the device drivers have been developed specifically for MINIX. As of version 3.3.0, MINIX supports USB hubs, USB mass storage and the MUSB OTG controller (as found on some !SoCs). The standard USB host controllers or the USB human interface devices are not supported. There are development versions of MINIX 3 that use Linux 2.6.29 USB drivers running inside the DDE compatibility layer. The selling point of MINIX 3 has been its reliability features. MINIX 3 contains a resurrection service that can, in some situations, restart a crashing or misbehaving service. The development version of MINIX 3 supports live update of the running system services. Thanks to its NetBSD userland, MINIX 3 boasts thousands of packages.
     93[http://www.minix3.org MINIX 3] is a multiserver system which comes with its own microkernel and core services, and portions of NetBSD userland. The microkernel does not support threads. As of version 3.3.0, MINIX runs on single-processor ia32 and arm32 systems. Some multiprocessor code is present, but has been unmaintained since version 3.1.x. MINIX 3 comes with two alternative networking stacks. Its own `inet` server and the `lwip` server based on the lwIP networking stack. Even though lwIP contains some experimental support for IPv6, both servers are IPv4 only. IPv6 support for the `lwip` server is work in progress. Both `inet` and `lwip` have monolithic architecture that combines IP, UDP and TCP in one process. Some research has been done on making the networking stack modular. The file systems and most of the device drivers have been developed specifically for MINIX. As of version 3.3.0, MINIX supports USB hubs, USB mass storage and the MUSB OTG controller (as found on some !SoCs). The standard USB host controllers or the USB human interface devices are not supported. There are development versions of MINIX 3 that use Linux 2.6.29 USB drivers running inside the DDE compatibility layer. The selling point of MINIX 3 has been its reliability features. MINIX 3 contains a resurrection service that can, in some situations, restart a crashing or misbehaving service. The development version of MINIX 3 supports live update of the running system services. Thanks to its NetBSD userland, MINIX 3 boasts thousands of packages.
    9494
    9595To avoid much repetition, see also the answer to the previous question. On top of that, the HelenOS kernel implements kernel threads. HelenOS modular networking stack supports both IPv4 and IPv6. The HelenOS USB stack supports UHCI and OHCI. EHCI is supported in a development branch. Drivers for USB hubs, human interface devices (a.k.a. mice and keyboards) and mass storage are available. HelenOS does not come with a resurrection service nor live update.
     
    9797=== How is HelenOS different from Genode? ===
    9898
    99 [http://www.genode.org/ Genode] is an operating system component framework which makes it easy to reuse diverse third-party components in a multiserver environment. It supports the combination of several different microkernels (and even monolithic kernels such as Linux) with various original and wrapped user space components (e.g. foreign device drivers wrapped by a DDE layer or a rump kernel). The granularity of the user space components is varying, from fine-grained to large and monolithic. Of course, not all theoretical combinations of components works in Genode and also the feature set can differ. Genode strongly focuses on fair resource accountability of the components.
     99[http://www.genode.org/ Genode] is an operating system component framework which makes it easy to reuse diverse third-party components (alongside original Genode components) in a multiserver environment. It supports the combination of several different microkernels (and even monolithic kernels such as Linux) with various original and wrapped user space components (e.g. foreign device drivers wrapped by a DDE layer or a rump kernel). The granularity of the user space components is varying, from fine-grained to large and monolithic. Of course, not all theoretical combinations of components works in Genode and also the feature set can differ. Genode strongly focuses on fair resource accountability of the components.
    100100
    101101Compared to this, HelenOS is a coherent combination of a single portable microkernel and a multiplatform userland designed and built natively for it from fine-grained components. We strongly prefer designing and implementing our own components to importing foreign components from other systems and wrapping them into bloated compatibility layers, especially when dealing with the critical core components of the operating system. HelenOS supports basic resource accounting, but currently not so elaborate as in the case of Genode. There is an ongoing effort to make some of the HelenOS components (especially the SPARTAN kernel of HelenOS) usable as a Genode component.