01.txt 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. initrd vs initramfs
  2. Monolithic vs Modular kernel vs MicroKernel
  3. Monolithic:
  4. All drivers, operations and code to perform kernel related tasks are compilied into the kernel. Interactions with kernel are done through system calls.
  5. advantages:
  6. 1) Less code = less complexity
  7. 2) Less code = smaller size
  8. 3) Less code = fewer bugs and security issues
  9. disadvantages
  10. 1) difficult to patch and test
  11. 2) bugs can affect large parts of system
  12. Microkernel
  13. Only the fundamental tasks and drives are handled by the kernel - memory management, passing messages between processes.
  14. All other tasks are handled in user space by "servers" or "user-mode servers."
  15. advantages
  16. 1) easier to maintain
  17. 2) testing is easier - can swap patches in and out
  18. disadvantages
  19. 1) Larger running footprint
  20. 2) More complex to interact with - port calls from user-mode servers
  21. 3) Process management can be more complex
  22. Modular Kernel
  23. A monolithic kernel with binary modules/drivers that can me dynamically loaded or unloaded.
  24. advantages:
  25. 1) Faster and easier development for drivers that can operate as modules
  26. 2) Easier to added drivers/services via modules
  27. disadvantages
  28. 1) More interfaces to pass through increases possibility of bugs
  29. 2) Maintaining modules can be more difficult
  30. To be clear, loading a module dynamically into the kernel can incure some overhead compared to having the module compiled into the kernel. But,
  31. 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
  32. is chiefly beneficial to embedded systems.
  33. Resources
  34. http://www.systhread.net/texts/200510kdiff.php
  35. http://en.wikipedia.org/wiki/Microkernel
  36. http://en.wikipedia.org/wiki/Monolithic_kernel
  37. http://en.wikipedia.org/wiki/Initramfs