Files
2023-04-24 18:58:30 -05:00

50 lines
2.0 KiB
Plaintext

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