Mòdul del nucli
En informàtica, un mòdul carregable del nucli és un fitxer que conté codi objecte que pot estendre el nucli en execució (també anomenat nucli base) d'un sistema operatiu. La majoria dels sistemes estil Unix, i Microsoft Windows, suporten mòduls al nucli, encara que solen utilitzar diferents noms per a ells, com "extensió del nucli" a Mac OS X.
Els mòduls en el nucli generalment utilitzats per brindar suport a nous dispositius de Maquinari i Sistema de fitxers, així com per afegir crides al sistema. Quan la funcionalitat proveïda per un mòdul del nucli deixa de ser requerida, normalment aquest pot baixar i alliberar la seva memòria.
Un exemple típic de mòdul carregable són els controladors de dispositius.
Diferències entre Mòduls i Aplicacions
[modifica]Un mòdul carregable és diferent d'una aplicació en diverses formes. Si bé les aplicacions de mida petita a mitjà solen realitzar una única tasca de començament a fi, un mòdul carregable únicament es registra en el nucli amb la finalitat de servir futurs requeriments.[1] L'estil de programació d'un mòdul és similar a la programació dirigida per esdeveniments.[1]
Una altra diferència important consisteix en la tolerància a fallades. Si bé el fet que una aplicació avorti per errors sol ser inofensiu a nivell del sistema operatiu, la fallada d'un mòdul carregat al nucli podria deixar a tot el sistema en un estat inconsistent o inutilitzable.[1]
Finalment, els mòduls s'executen en espai de nucli, mentre que les aplicacions s'executen en espai d'usuari.
Mòduls i Controladors de Dispositius
[modifica]Un típic ocupació per als mòduls en el cas de Linux és crear controladors de Maquinari.
Els controladors de dispositius tenen un rol especial en el nucli Linux. Aquests són els encarregats d'amagar completament els detalls de com un dispositiu funciona internament a nivell del Hardware, permetent que les activitats dels usuaris siguin realitzades mitjançant un conjunt de trucades estàndard, independents del controlador específic que s'està utilitzant en realitat.[1]
L'avantatge de desenvolupar controladors de dispositius per Linux és que aquests poden desenvolupar per separat de la resta del nucli i després ser carregats en temps d'execució, quan es necessiti d'ells. Aquesta modularitat fa que escriure controladors de dispositius per Linux sigui una tasca senzilla.[1]
Avantatges dels Sistemes Modulars
[modifica]Un sistema operatiu que no disposa de mòduls carregables al nucli ha de tenir tota aquella funcionalitat que pugui arribar a ser necessitada precompilada dins el nucli base. El problema d'aquest enfocament és que en general la imatge del nucli seria molt més gran, ocupant un gran espai memòria. Així mateix, resultaria necessari que els usuaris recompilaran i reiniciessin el nucli base cada vegada que es necessiti afegir nova funcionalitat a aquest.
Qüestions de Llicència
[modifica]Linux
[modifica]El nucli Linux és un projecte de codi obert Llicenciat sota la versió 2 de la llicència GNU GPL. A causa de les característiques d'aquesta llicència, els fabricants de maquinari solen dubtar si és possible distribuir controladors de dispositius privatius.
En l'opinió dels qui realitzen el manteniment de Linux, els mòduls són una obra derivada del nucli, però, la legalitat de la distribució en forma únicament binària de mòduls s'ha mantingut deliberadament ambigua.[1] Es considera que el cas de la interacció entre mòduls privatius i el nucli en si mateix es troba en una zona indefinida de la llicència GPL.
Sol dir-se que la càrrega de mòduls privatius "taca" el nucli, referint-se al fet que serà poc probable que qualsevol problema o error experimentat sigui investigat pels que realitzen el seu manteniment. Això és a causa que en carregar un mòdul, aquest es torna part del nucli en execució, per la qual cosa podria corrompre les estructures de dades d'aquest i / o introduir errors que no podrien ser investigats a causa de la naturalesa privativa del mòdul.
Seguretat
[modifica]Si bé els mòduls consisteixen en un mètode convenient per modificar el nucli en execució, això podria arribar a ser abusat per un atacant en un sistema compromès, amb la finalitat de prevenir la detecció de processos o fitxers maliciosos, permetent mantenir control sobre el sistema o robar informació privada.
En el cas de Linux, la majoria dels controls de seguretat del sistema es reforcen a través del nucli. Si aquest té problemes de seguretat, el sistema complet serà vulnerable. En la distribució oficial del nucli, només un usuari autoritzat, conegut com el superusuari, pot carregar mòduls.[1]
Al seu torn, els desenvolupadors de mòduls carregables haurien de ser curosos de no introduir errors de seguretat en els mòduls que desenvolupen. El llenguatge de programació C, utilitzat en la majoria de Linux, fa que introduir errors sigui fàcil i molts problemes de seguretat solen ser perquè els desenvolupadors obliden controlar quanta informació és emmagatzemada en una porció assignada de memòria (buffer), derivant en errors de sobreescriptura de memòria[1] que podrien ser utilitzats per un usuari maliciós per alterar la memòria del nucli i els mòduls.
Vegeu també
[modifica]Referències
[modifica]Enllaços externs
[modifica]- Linux Device Drivers, tercera edició
- Linux Suport de nucli Module HOWTO
- Tutorial Administració de mòduls del nucli Linux