| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- initrd vs initramfs
- Monolithic vs Modular kernel vs MicroKernel
- Monolithic:
- All drivers, operations and code to perform kernel related tasks are compilied into the kernel. Interactions with kernel are done through system calls.
- advantages:
- 1) Less code = less complexity
- 2) Less code = smaller size
- 3) Less code = fewer bugs and security issues
- disadvantages
- 1) difficult to patch and test
- 2) bugs can affect large parts of system
-
- Microkernel
- Only the fundamental tasks and drives are handled by the kernel - memory management, passing messages between processes.
- All other tasks are handled in user space by "servers" or "user-mode servers."
- advantages
- 1) easier to maintain
- 2) testing is easier - can swap patches in and out
- disadvantages
- 1) Larger running footprint
- 2) More complex to interact with - port calls from user-mode servers
- 3) Process management can be more complex
-
- Modular Kernel
- A monolithic kernel with binary modules/drivers that can me dynamically loaded or unloaded.
- advantages:
- 1) Faster and easier development for drivers that can operate as modules
- 2) Easier to added drivers/services via modules
- disadvantages
- 1) More interfaces to pass through increases possibility of bugs
- 2) Maintaining modules can be more difficult
-
- To be clear, loading a module dynamically into the kernel can incure some overhead compared to having the module compiled into the kernel. But,
- this can be offset by having an overall smaller footprint in the monolithic kernel due to not having unnecessary code compiled into the kernel. This
- is chiefly beneficial to embedded systems.
-
-
-
-
-
- Resources
- http://www.systhread.net/texts/200510kdiff.php
- http://en.wikipedia.org/wiki/Microkernel
- http://en.wikipedia.org/wiki/Monolithic_kernel
- http://en.wikipedia.org/wiki/Initramfs
|