Saturday, November 1, 2008

Big microkernel survey

I have just started a new survey on this blog so that I can have a better idea of what features people value the most in microkernels. I hope to receive more feedback than for my previous survey which asked if people would consider contributing to HelenOS.

This time, I provide eleven different options. Because these are mere one, two or three-word labels, I'd like to give some explanation on what I meant by each. Hopefully, people will feel encouraged to comment their choices in the survey by attaching comments to this entry.

  1. performance - some microkernels (e.g. L4 variants) seem to be focused on maximizing the IPC performance and reducing the number of different kinds of switches, sometimes the assembly is used as the implementation language;
  2. robustness - some microkernels (e.g. Minix) have the ability to detect failures of system services. In case of a failure the service is restarted.
  3. small memory footprint - microkernels tend to be smaller than other operating systems' kernels. As such, they take up smaller size of the computer's memory and can be cache-hot most of the time;
  4. real-time features - RTOS are often implemented as microkernels;
  5. observability - ability to find out what is/was the system doing; e.g. Solaris is very good in this;
  6. component design - separation and isolation of individual functional components such as the file system services in HelenOS. The components can only communicate via a well-defined protocol;
  7. desktop features - some microkernels (e.g. QNX or XNU) could have been used as a desktop operating system;
  8. high-end features - things like SMP support, but also hot-swap, hardware fault management etc.
  9. portability - the ability to run on multiple processor architectures and the ease of porting to a new architecture;
  10. security - smaller trusted code base should be more secure by virtue of having fewer LOC and thus fewer security bugs;
  11. standard compliance - compliance with POSIX or any other operating system API standard


Tim said...

I think for many, reliability is the most important feature. Being able to re-start vfs, fat, ext3, etc is (beyond design paradigms) one of the biggest benefits of a well written microkernel.

Observability, however is also crucial. Its one thing to be able to deal with bugs and anomalies, its another to be able to predict them.

Minix tried this with their reincarnation server, but I'd favor something that was much more proactive.

Jakub Jermar said...

Here are the results:

performance 2 (33%)
robustness 2 (33%)
small memory footprint 1 (16%)
real-time features 1 (16%)
observability 1 (16%)
component design 1 (16%)
desktop features 1 (16%)
high-end features 1 (16%)
portability 2 (33%)
security 1 (16%)
standard compliance 0 (0%)

It would be nice if I can have more responses in the future surveys :-)