omarrx024 wrote:
I'd say that this loader should be built-in to the kernel binary itself, regardless of the kernel's design. For a monolithic kernel, it would be common sense to have as much as possible inside the kernel. For a microkernel, this should also be inside the kernel's binary, as the system will move as many things as possible to user mode and thus requires a way to execute modules; this would be the executable loader.
So all in all, the kernel's executable loader should be built-in to the kernel binary for any kernel design choice. Without it, probably no other modules can be loaded.
If a micro-kernel aims to move as much as possible to user processes, instead of having stuff in the kernel, then why would the process loader be an exception? In practice everyone decides how much to move back to micro-kernel for performance considerations, but I can't see a reason why the loader must or even
should be in the micro-kernel. For monolithic it probably is natural to have it in the kernel.
As for the OP, this (free) Linkers and Loaders book may be of some interest:
http://www.iecc.com/linker/