Módulo de núcleo

Módulo de núcleo

En computación, un módulo cargable del núcleo es un archivo que contiene código objeto que puede extender el núcleo en ejecución (también llamado núcleo base) de un Sistema Operativo. La mayoría de los sistemas estilo Unix, y Microsoft Windows, soportan módulos cargables en el núcleo, aunque suelen utilizar distintos nombres para ellos, como "extensión del núcleo" en Mac OS X.

Los módulos cargables en el núcleo son generalmente utilizados para brindar soporte a nuevos dispositivos de Hardware y Sistema de archivos, así como para agregar llamadas al sistema. Cuando la funcionalidad provista por un módulo del núcleo deja de ser requerida, normalmente éste puede ser descargado, liberando su memoria.

Un ejemplo típico de módulo cargable son los Controladores de Dispositivo.

Contenido

Diferencias entre Módulos y Aplicaciones

Un módulo cargable es diferente de una aplicación en varias formas. Si bien las aplicaciones de tamaño pequeño a mediano suelen realizar una única tarea de comienzo a fin, un módulo cargable únicamente se registra en el núcleo con el fin de servir futuros requerimientos.[1] El estilo de programación de un módulo es similar a la programación dirigida por eventos.[1]

Otra diferencia importante consiste en la tolerancia a fallos. Si bien el hecho de que una aplicación aborte por errores suele ser inofensivo a nivel del sistema operativo, el fallo de un módulo cargado en el núcleo podría dejar a todo el sistema en un estado inconsistente o inutilizable.[1]

Finalmente, los módulos ejecutan en espacio de núcleo, mientras que las aplicaciones ejecutan en espacio de usuario.

Módulos y Controladores de Dispositivos

Un típico empleo para los módulos cargables en el caso de Linux es crear controladores de dispositivos de Hardware.

Los controladores de dispositivos tienen un rol especial en el núcleo Linux. Estos son los encargados de esconder completamente los detalles de cómo un dispositivo funciona internamente a nivel del Hardware, permitiendo que las actividades de los usuarios sean realizadas mediante un conjunto de llamadas estándar, independientes del controlador específico que se está utilizando en realidad.[1]

La ventaja de desarrollar controladores de dispositivos para Linux consiste en que estos pueden desarrollarse por separado del resto del núcleo y luego ser cargados en tiempo de ejecución, cuando se necesite de ellos. Esta modularidad hace que escribir controladores de dispositivos para Linux sea una tarea sencilla.[1]

Ventajas de los Sistemas Modulares

Un sistema operativo que no dispone de módulos cargables en el núcleo debe tener toda aquella funcionalidad que pueda llegar a ser necesitada precompilada dentro del núcleo base. El problema de este enfoque consiste en que en general la imagen del núcleo sería mucho mayor, ocupando un gran espacio memoria. Así mismo, resultaría necesario que los usuarios recompilaran y reiniciaran el núcleo base cada vez que se necesite agregar nueva funcionalidad al mismo.

Cuestiones de Licenciamiento

Linux

El núcleo Linux es un proyecto de código abierto licenciado bajo la versión 2 de la licencia GNU GPL. Debido a las características de esta licencia, los fabricantes de Hardware suelen dudar si es posible distribuir controladores de dispositivos privativos.

En la opinión de quienes realizan el mantenimiento de Linux, los módulos cargables son un trabajo derivado del núcleo, no obstante, la legalidad de la distribución en forma únicamente binaria de módulos se ha mantenido deliberadamente ambigua.[1] Se considera que el caso de la interacción entre módulos privativos y el núcleo en sí mismo se encuentra en una zona indefinida de la licencia GPL.

Suele decirse que la carga de módulos privativos "mancha" el núcleo, refiriéndose a que será poco probable que cualquier problema o error experimentado sea investigado por quienes realizan su mantenimiento. Esto es debido a que al cargar un módulo, éste se vuelve parte del núcleo en ejecución, por lo cual podría corromper las estructuras de datos del mismo y/o introducir errores que no podrían ser investigados debido a la naturaleza privativa del módulo.

Seguridad

Si bien los módulos cargables consisten en un método conveniente para modificar el núcleo en ejecución, esto podría llegar a ser abusado por un atacante en un sistema comprometido, con el fin de prevenir la detección de procesos o archivos maliciosos, permitiéndole mantener control sobre el sistema o robar información privada.

En el caso de Linux, la mayoría de los controles de seguridad del sistema se refuerzan a través del núcleo. Si éste tiene problemas de seguridad, el sistema completo será vulnerable. En la distribución oficial del núcleo, solo un usuario autorizado, conocido como el superusuario, puede cargar módulos.[1]

A su vez, los desarrolladores de módulos cargables deberían ser cuidadosos de no introducir errores de seguridad en los módulos que desarrollan. El lenguaje de programación C, utilizado en la mayoría de Linux, hace que el introducir errores sea fácil y muchos problemas de seguridad suelen deberse a que los desarrolladores olvidan controlar cuánta información es almacenada en una porción asignada de memoria (buffer), derivando en errores de sobreescritura de memoria[1] que podrían ser utilizados por un usuario malicioso para alterar la memoria del núcleo y sus módulos.

Véase también

Referencias

Enlaces externos


Wikimedia foundation. 2010.

Игры ⚽ Нужна курсовая?

Mira otros diccionarios:

  • Módulo de núcleo — La mayoría de los sistemas operativos modernos son modulares y la mayoría de las tareas útiles del sistema (generalmente denominadas servicios) se delegan a pequeños fragmentos de software conocidos como módulos. En general, estos módulos se… …   Enciclopedia Universal

  • Módulo — El término módulo (del latín modŭlus) puede referirse a: una dimensión que convencionalmente se toma como unidad de medida: en arquitectura, el módulo es la medida que se toma como base para dimensionar todo el edificio Módulo vitruviano Modulor… …   Wikipedia Español

  • Módulo plano — En álgebra conmutativa, y geometría algebraica, un módulo plano sobre un anillo R es un R módulo M tal que se preserva sucesiones exactas al tomar el producto tensorial sobre R con M. Un módulo es fielmente plano si al tomar el producto tensorial …   Wikipedia Español

  • Núcleo monolítico — Este artículo o sección necesita referencias que aparezcan en una publicación acreditada, como revistas especializadas, monografías, prensa diaria o páginas de Internet fidedignas. Puedes añadirlas así o avisar …   Wikipedia Español

  • Módulo (matemática) — Contenido 1 Definición 2 Ejemplos 3 Submódulos y homomorfismos 4 Tipos de módulos …   Wikipedia Español

  • Módulo — (Del lat. modulus.) ► sustantivo masculino 1 Proporción que se considera perfecta entre las dimensiones de los elementos de un cuerpo. SINÓNIMO canon 2 Modelo que se repite en una serie de cosas iguales: ■ todas las viviendas de la calle repiten… …   Enciclopedia Universal

  • Núcleo (informática) — Para otros usos de este término, véase Núcleo. En informática, un núcleo o kernel (de la raíz germánica Kern) es un software que constituye la parte más importante del sistema operativo.[1] Es el principal responsable de facilitar a los distintos …   Wikipedia Español

  • Zvezda (módulo) — Saltar a navegación, búsqueda ISS Zvezda El módulo de servicio Zvezda de la EEI con el módulo Zarya a la izquierda y una nave Progress acoplada a la derec …   Wikipedia Español

  • Zvezdá (módulo) — ISS Zvezda El módulo de servicio Zvezda de la EEI con el módulo Zaryá a la izquierda y una nave Progress acoplada a la derecha …   Wikipedia Español

  • RTAI — Saltar a navegación, búsqueda RTAI (Real Time Application Interface) Interface para Aplicaciones en Tiempo Real, es una implementación de Linux para tiempo real basada en un principio en RTLinux, y actualmente en ADEOS, no es un sistema operativo …   Wikipedia Español

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”