mirror of
https://github.com/starovoid/rxing.git
synced 2026-07-26 04:12:34 +00:00
50 lines
2.0 KiB
Plaintext
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
|