2 ms·
This is what I understand a Microkernel: it handles the bare minimum of system duties: process creation/management, memory management, IPC mechanism, I/O access
by MisterTea 7y ago
This is what I understand a Microkernel: it handles the bare minimum of system duties: process creation/management, memory management, IPC mechanism, I/O access. This is where you implement your security layer in order to isolate and protect hardware, processes, and memory. You can even implement namespacing and isolation to make each process look like it's running in a container or VM so to speak.
All of your drivers and user programs live in user space and secured via the kernel. E.g. a USB host controller is a process which talks to the hardware and provides some sort of interface which USB device drivers can talk to to implement their respective device interfaces. A file system on a disk is handled by a file system process speaking e.g. ext4 to a disk and then a socket is provided to mount and access the files.
It's a very nice setup because if your IPC mechanism is how everything talks then you can think of the kernel as a microservice host and IPC router which your processes talk through. They can provide or consume resources. Now if you can push that IPC mechanism over the network transparently then you have a distributed system. Then you eliminate a lot of code and protocol nonsense talking over networks.
- shawnz 7y agoOP's definition is the same as yours, except instead of "user space" it's "a virtualized sandbox, but still running in ring 0". What's the difference besides technicalities of the implementation? Everything else you are saying about using IPC interfaces and isolating the kernel code still applies in both cases.