Modules allow us to extend the functionalities provided by the kernel at run time. Considering the extensive number of drivers available in the kernel, this is an important mechanism because only the really required code needs to be active. However, not only device drivers, but all except the most fundamental parts of the kernel can be configured as modules.
I have discussed how dependencies between modules are detected and can be resolved, how modules are represented in binary files, and how they are loaded into and unloaded from the kernel. Additionally, I have described how the kernel can automatically request modules when a particular feature is accessed from userland, but the corresponding code is not present in the kernel. This requires some interaction with userland to resolve which module is required.
Finally, I have shown how the kernel can protect itself against modules that are compiled against a different kernel version and that might employ an incompatible set of functions with the help of module version control.
Continue reading here: The Virtual Filesystem
Was this article helpful?