Posteado por: wozgeass | agosto 4, 2010

¿Que funcion desempeña el kernel?


Para iniciar  creo que lo mas adecuado antes de entrar mas a fondo en este temas seria explicar, ¿Que es el kernel?

El termino linux, en sentido estricto, no se refiere a la brillante coleccion de componenes de software y aplicaciones que a menudo se conoce como una distribucion de linux. En el corazon  de esta distribucion  esta el kernel de linux propiamente dicho: un complejo conjunto de rutinas de software que toma el control en cuanto iniciamos el equipo y de manera periodica(muchas veces por segundo) controla los requerimienos de recursos de las aplicaciones, controla los dispositivos de hardware, y generalmene hace gran parte del trabajo sucio a bajo nivel.

EL kernel es el componente central de la mayoria de los sistemas operativos. Sus responsabilidades incluyen la gestion de los recursos del sistema( la comunicacion entre el hardware y los componentes de software)

Es conocido por ser un modelo en software libre en cuanto a su complejidad, funcionalidad y buena documentacion. Cualquiera tiene acceso al codigo fuente, que se actualiza a diario. Y cualquiera puede unirse con discusiones a las listas de correo o enviando parches. Para comprender lo que hace realmente el kernel, fijemonos en la siguiente figura:

El kernel aparece en el centro del diagrama, rodeado por ejemplos de operaciones a las que asiste. A la izquierda, las interrupciones hardware de dispositivos como discos o tarjetas de red, dispositivos de sonido, tarjetas graficas y demas llegan en momentos impredecibles( la informacion al vez se haya perdido, pero no hay manera de saber exactamente  cuando la entrega el dispositivo).  De manera similar, el temporizador del sistema(en la mayoria de los sistemas) se dispara regularmente para permitir a linux ejecutar operaciones periodicas de administracion interna varias veces por segundo.

Cuando encendemos la computadora, lo que primero entra en funcion es algo llamado bios(basic input output system) pero ya no explicare el proceso de arranque del BIOS, dudas chequen esto (BIOS).

En linux, el proceso de control durante el arranque es de la BIOS,  al gestor de arranque (GRUB) y luego el kernel toma el control.

El kernel inicia un proceso planificador (para permitir multitarea) y se ejecuta primero el modo usuario (es decir, fuera del espacio del nucleo), luego el programa init (que establece el entorno del usuario, permite la interaccion del usuario y acceso ), momento en el que el kernel se inactiva.

Detalladamente tenemos lo siguiente:

  • La BIOS realiza un chequeo del hardware de nuestro ordenador.
  • Una vez que el hardware es reconocido y se inicio correctamente, la BIOS carga y ejecuta el codigo de arranque de la particion del dispositivo de arranque designado .
  • El gestor de arranque a menudo se presenta en como un menu de posibles opciones de arranque. A continuacion carga el sistema operativo que descomprime en la memoria escencialmente reconocimiento al hardware y paginacion de memoria antes de llamar start_kernel().
  • Start_kernel() realiza la mayor parte del arranque del sistema (interrupciones, el resto de gestion de memoria, inicializacion de los dispositivos por medio de la carga de los modulos ) por separado antes de la inactivacion del kernel , el proceso planificador  y el proceso de init  (son ejecutados en el espacio del usuario).
  • El proceso planificador toma el control del sistema, ya que el kernel esta inactivo.
  • El proceso init ejecuta los scripts de inicio para configurar el entorno del usuario.

Pero ¿que rayos es el proceso ‘init?’, resulta ser el proceso padre de todos los procesos. Su funcion principal es  crear procesos de scripts alamacenados en el archivo de configuracion /etc/inittab. Para ello utiliza los RunLevels’s, y existen 6 posibles tipos que se identifican por un numero:

  • O    Apagado del sistema.
  • 1    Monousuario sin entorno grafico, sin entorno de red.
  • 2    Multiusuario sin entorno grafico,  sin entorno de red.
  • 3    Multiusuario sin entorno grafico, pero con entorno de red
  • 4    No se usa
  • 5    Por defecto, Multiusuario, con entorno grafico, con red
  • 6    Reinicio del sistema.

Bueno ahora init hace basicamente 2 cosas:

  1. Ejecuta scripts de configuracion global del sistema:
  • Crea las variables de entorno del sistema.
  • Activa la particion swap.
  • inicializa el reloj.
  • Controla/chequea las particiones en busca de que haya errores en las mismas.

Bien, una vez ha cargado el sistema, se preguntaran y ¿que mas hace el kernel?

No seria util si no fuese capaz tambien de dar servicio al usuario en la provision de  soporte para los programas en ejecucion. La mayoria de los programas no se comunican  con el kernel directamente, En lugar de esto, usan funciones de la libreria GNU de C, que a cambio llaman a las interfaces estandar del kernel para proporcionar los servicios requeridos.

En ocasiones, una aplicacion no usa la libreria C, sino que se comunica directamente con el kernel. En el caso de ciertas herramientas de bajo nivel, enlazadas estaticamente, como por ejemplo busybox (Generalmene utilizadas como herramienta de recuperacion, asi como en sistema empotrados). En el diagrama podemos ver una de estas herramientas especiales proporcionando los servicios de init. Por ultimo, a veces el kernel ejecuta codigo especial del kernel casi como si  fuera un programa normal y corriente(pero con privilegios).

En el punto clave de la imagen es que el kernel esta lejos de ser magico. Su comportamiento y sus procesos pueden ser explicados. Mucha gente cree que de alguna manera “se ejecuta” todo el tiempo y de manera constante vigilando las operaciones del sistema.  Aunque es cierto que linux ejecua un gran numero de funciones de monitorizacion  del sistema, el kernel propiamente dicho deberia considerarse mas bien como una coleccion de rutinas de software en una libreria con privilegios. Estas rutinas con privilegios especiales siempre se ejecutan  en respuesta a evento especificos, y en ese momento, cualquier cosa que se estuviese ejecutando se guarda temporalmente mientras que el sistema pasa a atender el codigo del kernel. La mayor parte del tiempo, el codigo del kernel se ejecuta bien como resultado de interrupciones de temporizador o hardware, o bien como resultado de una peticion de una aplicacion. Tambien lo hace al arrancar y en varias situaciones de error.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Categorías

A %d blogueros les gusta esto: