Modular Kernel: Difference between revisions
m
Made it slightly nicer to read.
[unchecked revision] | [unchecked revision] |
No edit summary |
m (Made it slightly nicer to read.) |
||
(14 intermediate revisions by 13 users not shown) | |||
Line 1:
{{Template:Kernel designs}}
A modular kernel is an attempt to merge the good points of kernel-level drivers and third-party drivers. In a modular kernel, some
▲A modular kernel is an attempt to merge the good points of kernel-level drivers and third-party drivers. In a modular kernel, some part of the system core will be located in independant files called _modules_ that can be added to the system at run time. Depending on the content of those modules, the goal can vary such as:
* only loading drivers if a device is actually found
* only load a filesystem if it gets actually requested
Line 9 ⟶ 7:
* etc.
The basic goal remains however the same: keep what is loaded at boot-time minimal while still allowing the kernel to perform more complex functions. The basics of modular kernel are very close to what we find in implementation of
==What are some advantages and disadvantages for a Modular Kernel?==
===Advantages===
* The kernel doesn't have to load everything at boot time; it can be expanded as needed. This can decrease boot time, as some drivers won't be loaded unless the hardware they run is used (NOTE: This boot time decrease can be negligible depending on what drivers are modules, how they're loaded, etc.)
* The core kernel isn't as big
* If you need a new module, you don't have to recompile.
===Disadvantages===
* It may lose stability. If there is a module that does something bad, the kernel can crash, as modules should have full permissions.
* ...and therefore security is compromised. A module can do anything, so one could easily write an evil module to crash things. (Some OSs, like [https://en.wikipedia.org/wiki/Linux Linux], only allow modules to be loaded by the root user.)
* Coding can be more difficult, as the module cannot reference kernel procedures without kernel symbols.
==What does a Modular Kernel look like ?==
There are several components that can be identified in virtually every modular kernel:
;
:
;
:
;
: This contains
;
: As soon as you want to
;Modules
: Every part of the system you might want (or don't want) to have.
== How can such a system boot in first place ?==
Modularization must be done within certain limits if you still want your system
* The kernel is provided with an extremely simple [[File Systems|filesystem]] (e.g. SCO's [[BFS]]) driver and that filesystem contains modules to access the rest of system storage (e.g. module for
* The kernel comes with a built-in native file system driver
* The bootloader knows it should not only load the
==See Also==
===Forum Threads===
*[[Topic:10031|Design of a basic module loader
*[[Topic:9921|Calling a function knowing its name
*[[Topic:9827|Ideas for IPC
*[[Topic:9742|Coff i386 relocations
*[[Topic:9713|Device Drivers Interface
*[[Topic:9437|Loading Drivers into Kernel
*[[Topic:9408|Design & Implementation of Extensible OS
[[Category:Kernel]]
|