Vous êtes sur la page 1sur 3

QUE ES EL KERNEL?

El kernel es el núcleo del sistema operativo. Veremos a continuación diferentes


enfoques sobre este concepto.

En algunas bibliografías de UNIX, el kernel es el sistema operativo aclarando su


diferenciación con los programas de usuario. En el diagrama del kernel que nos
muestra Maurice Bach en su libro “The design of the UNIX operating system”, el
nivel de kernel incluye la interfase con las aplicaciones de usuario a través de
system calls y las librerías, el subsistema de archivos y el de control de
procesos. En este ultimo están los módulos para la comunicación entre procesos,
la planificación y los que se utilizan para controlar la asignación de memoria.

El kernel no es un conjunto separado de procesos que corren en paralelo a los


procesos de usuario: es parte de cada proceso de usuario.
Cuando se dice que el kernel asigna recursos o que hace determinada operación
en realidad es el proceso ejecutándose en modo kernel. EL kernel reside en
memoria principal como parte del proceso que se esté ejecutando.

Aclaremos la diferencia entre los modos de ejecución.

En modo usuario, los procesos pueden acceder a sus propias instrucciones y


datos pero no a instrucciones y datos del kernel o de otros procesos.

En modo kernel los procesos pueden acceder a direcciones de otros usuarios y


de kernel.

Consideremos que el espacio de direcciones virtuales de un proceso puede


dividirse en direcciones que solo son accesibles en modo kernel y otras
accesibles en cualquier modo.

El so interactua directamente con el HW. Existe la posibilidad de “montar” un


sistema operativo sobre otro. En ese caso el que interactua con el HW es el SO
original o nativo, y este provee los servicios al SO “visitante”.

El kernel en Windows NT

Incluye las funciones usadas mas frecuentemente del so. Ocasionalmente


incorpora otras partes de uso ocasional.
Consta de las componentes del SO mas usadas y fundamentales. Administra la
planificación y cambio de contexto de procesos, gestión de excepciones e
interrupciones y la sincronización de multiprocesadores.
Separa núcleo de subsistemas (módulos de fines específicos que usan los
servicios del núcleo, de los servicios que ofrecen una interfaz de software en
modo usuario.
Al soft del modo núcleo le llama ejecutor.
HAL: establece la correspondencia entre el HW especifico de la computadora y
el kernel.
El kernel no ve lo especifico de cada componente de hard: el HAL hace la
transformación correspondiente.
El administrador de E/S no interactua con el HAL, sino directamente con los
dispositivos para mejorar performance.

En NT, se llama subsistema protegido a las partes que interactuan con el usuario
final. Hay subsistemas de “ambiente” (manejan la apariencia) y de protección
(proveen este servicio).

Podemos ver NT como un sistema en capas: HAL, Kernel, Ejecutor,


subsistemas.

La relación en NT entre ejecutor, subsistemas y aplicaciones, se establece a


través de un modelo Cliente-servidor.

LINUX

El kernel (o core) es el que maneja todos los recursos del sistema e interactua
directamente con el HW.
Cuando se explica cuáles son las componentes del LINUX, se nombran kernel,
librerías del sistema y utilitarios del sistema.

Todo el código del Kernel se ejecuta en modo privilegiado con acceso permitido
a todos los recursos físicos de la computadora. ES el modo kernel.

NO hay cambio de contexto al llamar a una system call o al atender una


interrupción por HW.

La parte visible para las aplicaciones no es mantenida directamente por el kernel:


las aplicaciones llaman a las librerías del sistema que llamaran a los servicios
del SO que sean necesarios.
El concepto de librería es muy importante y fuerte en Linux, pues a través de sus
módulos se hacen los requerimientos de servicio.
Cuando se invoca un system call (que provoca el pasaje del control de modo
usuario a modo supervisor) la transferencia varia entre las distintas arquitecturas.
Las librerías organizan el pasaje de argumentos.

En las librerías están desde los system calls básicos a versiones mas complejas
que permiten optimizar funciones. Hay rutinas que implementan funciones
matemáticas, manejos de estring. En fin: todo lo necesario para poder correr
aplicaciones UNIX o POSIX.

El Kernel de LINUX puede cargar o descargar secciones de código según se


necesiten. Estos módulos cargables del Kernel corren en modo privilegiado. AL
ser el código fuente de Linux libre, cualquiera puede escribir código y compilar
un kernel modificado y rebootear y usar las nuevas funciones (si lo hacemos
bien...).

Vous aimerez peut-être aussi