Fundamentos de Sistemas Operativos: Arquitectura del Kernel y Gestión de Procesos
Clasificado en Informática
Escrito el en
español con un tamaño de 4,52 KB
Definición y Tipos de Kernel
El Kernel (o núcleo) es el software responsable de facilitar a los distintos programas el acceso seguro al hardware de la computadora; es el encargado principal de gestionar los recursos del sistema.
Kernel Monolítico
El Kernel Monolítico concentra todas las funcionalidades posibles, tales como la planificación y la gestión de memoria, dentro de un solo programa. En este modelo, todos los componentes tienen acceso a sus estructuras de datos. Una de sus principales desventajas es que un error de rutina puede propagarse a todo el núcleo, comprometiendo la estabilidad del sistema.
Microkernels
El Microkernel es un tipo de kernel del sistema operativo que provee un conjunto de primitivas o llamadas al sistema mínimas. Su objetivo es implementar servicios básicos esenciales como el espacio de direcciones, la comunicación entre procesos (IPC) y una planificación básica.
Estados y Transiciones de los Procesos
En la gestión de procesos, existen diversas transiciones de estado que determinan el flujo de ejecución:
- En ejecución -> Listo: ✔ (Permitido)
- Bloqueado -> Listo: ✔ (Permitido)
- En ejecución -> Bloqueado: ✔ (Permitido)
- Bloqueado -> En ejecución: ✘ (No permitido directamente)
- Listo -> En ejecución: ✔ (Permitido)
- Listo -> Bloqueado: ✘ (No permitido directamente)
Funciones de Ejecución: EXECVP y EXECLP
Ambas funciones realizan la misma tarea de reemplazar la imagen del proceso actual, pero la diferencia radica en sus argumentos:
- execvp: Acepta una lista de argumentos en un arreglo de punteros de cadena de caracteres, el cual debe terminar con un valor NULL.
- execlp: Acepta una lista de argumentos independientes pasados como punteros individuales.
Concurrencia y Paralelismo
La concurrencia es la capacidad de ejecutar varios procesos de forma simultánea en un tiempo determinado. Mediante el reparto eficiente de recursos, se genera un paralelismo virtual que permite al sistema manejar múltiples tareas a la vez.
Clasificación de Procesos
Procesos Pesados
Los procesos pesados no comparten su espacio de dirección de memoria y son creados típicamente mediante la función fork. Cada proceso se ejecuta en su propio espacio asignado en memoria y CPU.
- Ventajas: Ofrecen protección de memoria, no se interfiere en los recursos de otro proceso y aportan estabilidad al sistema (si un proceso falla, los otros continúan).
- Desventajas: Su creación y mantenimiento resultan muy caros en términos de recursos.
Procesos Livianos (Hilos)
Un proceso liviano o hilo es un contexto de ejecución dentro de otro proceso. Estos comparten el espacio de dirección de memoria, el PCB (Process Control Block) y la pila en el heap, permitiendo ejecutar el mismo código dentro de un programa.
- Ventajas: Tienen costos de CPU bajos, los cambios de contexto son baratos y la comunicación entre hilos es sencilla mediante variables compartidas en memoria (punteros).
- Desventajas: Poseen una pila limitada; si falla un hilo, fallan todos, provocando la caída del proceso completo.
Procesos Semilivianos
Los procesos semilivianos comparten parte del espacio de memoria, pero sus pilas se encuentran en segmentos separados. Estos son soportados directamente por el kernel.
- Ventajas: Si se desborda la pila, el kernel puede aumentarla; además, facilitan la comunicación mediante segmentos de datos.
- Desventaja: Su gestión es tan cara como la de un proceso pesado.