A minute ago I had this (probabaly stupid) idea: What if to split the kernel of an OS into two parts?
Traditional operating systems (such as Linux or FreeBSD) have a big kernel which contains not only strictly kernel specific code but also code which could be alternatively run in user space (e.g. cryptography, TCP/IP networking, etc.)
The reason for this (among of historic reasons) is that running a code inside the kernel allows it to run faster. (It is faster because it is run without protection and so does not need to switch mode to the kernel mode when interoperating with other parts of the kernel; while when user space processes interoperate with the kernel there is needed protected mode switch from the user mode to kernel mode. My explanation is crude but it is essentially so.) The main deficiency of this approach is that kernel becomes big and consequently may become unreliable (buggy). Big kernel is also harder to maintain and control.
The so called microkernel approach for reliability and flexibility denies the above concept and puts in kernel only the most necessary parts (that code which is necessarily needs to be in kernel, not in user space, such as the most low level system device drivers).
Several minutes ago I have thought that there may probably be some intermediary, kernel split into two parts, the core microkernel and some kind of second level kernel which is more protected than user level processer but is less protected than the core kernel.
I suppose that it may probably somehow be almost as reliable as microkernel but almost as fast as a monolitic kernel.
Just an idea, maybe a stupid. I am not (yet) an expert in operating system kernels.
No Comments/Trackbacks/Pingbacks for this post yet...
Recently ||