Modular Kernel: Difference between revisions
Jump to navigation
Jump to search
m
Made it slightly nicer to read.
[unchecked revision] | [unchecked revision] |
(→Disadvantages: Ohai, iz in ur page fixin ur grammar again) |
m (Made it slightly nicer to read.) |
||
(5 intermediate revisions by 5 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 independent 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 13 ⟶ 11:
==What are some advantages and disadvantages for a Modular Kernel?==
===Advantages===
* The
* The core kernel isn't as big
* If you need a new module, you don't have to recompile.
Line 19 ⟶ 17:
===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.
Line 25 ⟶ 23:
There are several components that can be identified in virtually every modular kernel:
;
:
;
:
;
: This contains additional information about the core and loaded modules that the module loader needs in order to ''link'' a new module to the existing kernel.
;
: As soon as you want to ''unload'' some module, you'll have to know whether you can do it or not. Especially, if a module ''X'' has requested symbols from module ''Z'', trying to unload ''Z'' while ''X'' is present in the system is likely to cause havoc.
;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 ATA, SCSI, EXT2FS, [[ReiserFS]], FAT, NTFS ...).
* The kernel comes with a built-in native file system driver
* The bootloader knows it should not only load the ''kernel'' but also a collection of pre-configured modules so
==See Also==
===Forum Threads===
*[[Topic:10031|Design of a basic module loader]]
*[[Topic:9921|Calling a function knowing its name]]
|