- Administra la memoria para los procesos en ejecución
- Administra el tiempo de procesador que utilizan los procesos en ejecución
- Abstrae los periféricos de nuestro ordenador de cara al usuario.
Cuando arranca una máquina UNIX, una de las primeras cosas que se hace es cargar el kernel en memoria. El kernel no deja de ser un programa ejecutable escrito en C.
En Solaris, por ejemplo, el kernel no es un fichero sino varios, por una parte el genérico /kernel/genunix y algunos dependientes de plataforma y arquitectura de máquina como /platform/(plataforma)/unix, además de una serie de módulos o piezas que proporcionan una extensibilidad del kernel que hace que los fabricantes de dispositivos proporcionen estos módulos y no haya que recompilar el kernel.
Sin embargo, un desarrollador normal que quiera elaborar un programa, como por ejemplo, uno de los comandos del sistema operativo, no va a utilizar llamadas al sistema, sino funciones de usuario, que se proporcionan en la biblioteca de C implementa las funciones estándares de C (includes como o mas objetos binarios) .
Ejemplo: Un usuario que quiera elaborar un programa que escriba "Hello World" utiliza la función printf(), pero el sistema por debajo utiliza la llamada al sistema write()
#include |
Se habla de "espacio de kernel o de sistema" y "espacio de usuario" para establecer una separación lógica de las tareas a cada uno de los niveles. Típicamente, un programa utiliza una función de usuario en "el espacio de usuario", la librería de C llama a una o más llamadas al sistema, y estas llamadas al sistema se ejecutan en "el espacio del kernel" (donde el kernel tiene en cuenta que debe asignarle memoria, CPU, en general, recursos). Una vez que la llamada al sistema realiza su función, retorna, y vuelve al "espacio de usuario".
En Solaris por ejemplo, si queremos ver todas las llamadas al sistema que realiza un ejecutable, tenemos el comando truss (sólo puede ejecutarse como superusuario). En Linux, el equivalente es el comando strace.
Un proceso en UNIX es un programa en ejecución, pero también es el "objeto abstracto" que crea el sistema operativo para manejar el acceso de ese programa a los recursos del sistema (memoria, CPU, I/O). Si un programa se ejecuta varias veces produce varios procesos. UNIX es un sistema multiproceso porque el sistema operativo va asignando cuantos de tiempo (del orden de decenas de milisegundo) del procesador a los procesos.
En resumen, que en un sistema operativo existen dos cosas en ejecución: El kernel y los procesos de usuario. Nosotros no podemos gestionar lo que hace el kernel pero sí podemos solicitarle cosas a través de dichos procesos. Más adelante se entrará en detalle en la gestión de procesos.
Compilar el kernel
Una de las primeras cosas que me sorprendió cuando la gente empezó a utilizar Linux fue que siempre estaban "compilando el kernel". Esto no ocurre en sistemas operativos "cerrados", puesto que no se dispone del código fuente. Sin embargo en sistemas operativos de código abierto, puede ser necesario recompilar el kernel, tanto para incorporar nuevas características (por ejemplo una nueva versión) como, muy importante, para agregar el soporte a nuevo hardware. Por último, compilar el kernel es un proceso muy educativo para comprender nuestro sistema.
Bibliografía relacionada
Una de las primeras cosas que me sorprendió cuando la gente empezó a utilizar Linux fue que siempre estaban "compilando el kernel". Esto no ocurre en sistemas operativos "cerrados", puesto que no se dispone del código fuente. Sin embargo en sistemas operativos de código abierto, puede ser necesario recompilar el kernel, tanto para incorporar nuevas características (por ejemplo una nueva versión) como, muy importante, para agregar el soporte a nuevo hardware. Por último, compilar el kernel es un proceso muy educativo para comprender nuestro sistema.
Bibliografía relacionada
http://www.monografias.com/trabajos26/estados-proceso-hilos/estados-proceso-hilos.shtml
http://foro.elhacker.net/tutoriales_documentacion/compilacion_del_kernel_paso_a_paso-t15029.0.html
http://foro.elhacker.net/tutoriales_documentacion/compilacion_del_kernel_paso_a_paso-t15029.0.html
No hay comentarios:
Publicar un comentario