¿Que función desempeña el kernel?
El termino Linux, en sentido estricto, no se refiere a la brillante colección de componenes de software y aplicaciones que a menudo se conoce como una distribución de Linux. En el corazón de esta distribución está 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 periódica (muchas veces por segundo) controla los requerimientos de recursos de las aplicaciones, controla los dispositivos de hardware, y generalmente hace gran parte del trabajo sucio a bajo nivel.
EL kernel es el componente central de la mayoría de los sistemas operativos. Sus responsabilidades incluyen la gestión de los recursos del sistema (la comunicación 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 documentación. Cualquiera tiene acceso al código 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, fijémonos 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 gráficas y demas llegan en momentos impredecibles (la información 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 mayoría de los sistemas) se dispara regularmente para permitir a Linux ejecutar operaciones periódicas de administración interna varias veces por segundo.
Cuando encendemos la computadora, lo que primero entra en función 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 núcleo), luego el programa init (que establece el entorno del usuario, permite la interacción 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 inició correctamente, la BIOS carga y ejecuta el código de arranque de la partición del dispositivo de arranque designado.
• El gestor de arranque a menudo se presenta en como un menú de posibles opciones de arranque. A continuación carga el sistema operativo que descomprime en la memoria esencialmente reconocimiento al hardware y paginación de memoria antes de llamar start_kernel ().
• Start_kernel() realiza la mayor parte del arranque del sistema (interrupciones, el resto de gestión de memoria, inicialización de los dispositivos por medio de la carga de los módulos ) por separado antes de la inactivación 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 función principal es crear procesos de scripts almacenados en el archivo de configuración /etc./inittab. Para ello utiliza los RunLevels’s, y existen 6 posibles tipos que se identifican por un número:
• O Apagado del sistema.
• 1 Monousuario sin entorno gráfico, sin entorno de red.
• 2 Multiusuario sin entorno gráfico, sin entorno de red.
• 3 Multiusuario sin entorno gráfico, pero con entorno de red
• 4 No se usa
• 5 Por defecto, Multiusuario, con entorno gráfico, con red
• 6 Reinicio del sistema.
Bueno ahora init hace básicamente 2 cosas:
1. Ejecuta scripts de configuración global del sistema:
• Crea las variables de entorno del sistema.
• Activa la partición 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 ¿qué más hace el kernel?
No sería útil si no fuese capaz también de dar servicio al usuario en la provisión de soporte para los programas en ejecución. La mayoría de los programas no se comunica con el kernel directamente, En lugar de esto, usan funciones de la librería GNU de C, que a cambio llaman a las interfaces estándar del kernel para proporcionar los servicios requeridos.
En ocasiones, una aplicación no usa la librería C, sino que se comunica directamente con el kernel. En el caso de ciertas herramientas de bajo nivel, enlazadas estáticamente, como por ejemplo busybox (Generalmente utilizadas como herramienta de recuperación, así como en sistema empotrados). En el diagrama podemos ver una de estas herramientas especiales proporcionando los servicios de init. Por último, a veces el kernel ejecuta código 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 mágico. 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 ejecuta un gran número de funciones de monitorización del sistema, el kernel propiamente dicho debería considerarse mas bien como una colección de rutinas de software en una librería con privilegios. Estas rutinas con privilegios especiales siempre se ejecutan en respuesta a evento específicos, y en ese momento, cualquier cosa que se estuviese ejecutando se guarda temporalmente mientras que el sistema pasa a atender el código del kernel. La mayor parte del tiempo, el código del kernel se ejecuta bien como resultado de interrupciones de temporizador o hardware, o bien como resultado de una petición de una aplicación. Tambien lo hace al arrancar y en varias situaciones de error.
No hay comentarios:
Publicar un comentario