Procesos en Sistemas Operativos
En un entorno de multiprogramación, multitud de actividades compiten por acceder a recursos como la CPU, memoria y recursos de red. Estas actividades se denominan procesos, y cada una de ellas es una instancia en memoria del programa que se ejecuta.
¿Qué es un Proceso?
- Un programa en ejecución. El mismo programa puede dar lugar a varios procesos.
- Cada proceso tiene asignado un número determinado de espacio en memoria.
- Para el Sistema Operativo (SO), un proceso es:
- Un conjunto de estructuras de datos a gestionar.
- La ejecución de estos datos marcará la funcionalidad del sistema.
Composición Interna de un Proceso
- Un programa ejecutable.
- Datos asociados que necesita el programa.
- Contexto de ejecución o estado del proceso (BCP – Bloque de Control de Proceso)
- Registro del procesador.
- Prioridad del proceso y estado en el que se encuentra.
Tipos de Procesos
- Proceso de usuario: Aquel creado por el sistema operativo para cumplir con el requisito de un usuario.
- Proceso del sistema: Aquel que es propio del sistema operativo, cuya función es la de cumplimentar tareas básicas del mismo.
Hilos (Threads)
- Entidad mínima de trabajo a planificar.
- Memoria de trabajo común.
- Cada hilo posee información independiente.
- Ejemplo: interfaz gráfica.
Interpretación de Hilos
- Nivel Usuario: Administración por la aplicación.
- Nivel Kernel: Administración por el kernel.
El SO y los Hilos
- Encargado de manejar la creación de procesos.
- Asignación de hilos.
- Contribuyen a la eficiencia de un proceso.
Ciclo de Vida de un Proceso
- Instancia: Arranque del sistema, por petición del usuario, lanzado por otro proceso.
- Ejecución: Una vez iniciado, realiza las instrucciones asociadas.
- Terminación:
- Normal: Termina las ejecuciones relacionadas.
- Por error: Cuando intenta acceder a un dato que ya no existe en memoria.
- Error fatal: Memoria inaccesible, excepción (acceso nulo, divisiones por cero).
- Por otro proceso: Un proceso acapara recursos y no deja terminar.
Niveles de Planificación de Procesos
- Nivel 0: Planificador
- Nivel donde se ejecutan los algoritmos de planificación de procesos. Este nivel no es modificable en la administración de procesos.
- Nivel 1: Sistemas Operativos
- Nivel donde el Sistema Operativo en el cual corren los procesos es capaz de modificar algunas de sus propiedades. Un claro ejemplo es el tránsito de procesos entre memoria RAM y la partición SWAP.
- Nivel 2: Ejecución
- Nivel donde el usuario/administrador es capaz de modificar algunas de las propiedades del proceso. Por ejemplo, la propiedad de los procesos.
Gestión de Procesos
- Controlar el acceso a recursos.
- Controlar y mejorar la eficiencia del sistema.
- Mejorar la interoperabilidad de diversos programas, etc.
Objetivos de la Gestión de Procesos
- Cumplimiento de todas las peticiones de procesos.
- Evitar el bloqueo de la CPU, etc.
Requisitos para la Gestión de Procesos
- Intercalado: Aprovechamiento de la CPU y de la memoria.
- Asignación de recursos: Mediante algoritmos establecidos.
- Solicitudes de servicio: Atender a las peticiones de ejecución sin desbordarse.
- Mecanismos de gestión de procesos: Creación/eliminación/sincronización de procesos por parte de los usuarios.
Interrupciones
- No siempre la ejecución de un proceso se lleva a cabo de manera perfecta.
- Esto se debe a la existencia de interrupciones:
- Peticiones de ejecución de otros procesos, dispositivos.
- Necesidad de abortar una ejecución, etc.
- En el momento en el que esto ocurre, el procesador tiene dos opciones:
- Continuar con la ejecución en curso.
- Parar la ejecución y empezar una nueva, aceptando la solicitud nueva.
- Señales que llegan al núcleo del sistema y son procesadas, pudiendo:
- Cambiar de contexto.
- Continuar con el contexto actual.
- El núcleo del sistema solo contempla el cambio cuando llega una interrupción.
- Las interrupciones pueden venir de:
- Un proceso.
- Un dispositivo.
Daemons (Disk And Execution Monitor)
- Situados en
/etc/init.d
(shell script).- Start
- Stop
- Restart
- Reload
- Dependiendo del runlevel se ejecutarán determinados daemons.
- Primer Daemon:
init
->/etc/rcS.d
- Niveles de ejecución: 0 – 6 (
/etc/rcX.d
). - K: Kill, S: Start, Num: XX (Prioridad de ejecución).
- Para saber en qué nivel de ejecución se encuentra la máquina:
runlevel
- Para pasar a un nivel de ejecución:
init X
(X: nivel de ejecución)/etc/init/rc-sysinit.conf
Planificación y Gestión de Recursos
- La gestión de recursos disponibles y la planificación de ejecución es clave. Debe cumplir:
- Equitatividad: Procesos de igual categoría (prioridad) tienen acceso equitativo a los recursos.
- Respuesta diferencial: La asignación de recursos debe ser homogénea; se deben cumplir la totalidad de requisitos.
- Eficiencia: Maximizar la productividad, mejorando los tiempos de respuesta y minimizando los tiempos de espera.
- Antes de entrar en ejecución, los procesos deben ser gestionados:
- Mejorando la eficacia y eficiencia.
- Mejorando la disponibilidad de recursos.
- Esta planificación empieza con la creación de estructuras de control:
- Relacionadas entre sí.
- Manejan información del sistema y los procesos.
Estructuras de Control del Sistema Operativo
- Tablas de memoria, tablas de E/S, tablas de archivos y tablas de procesos.
- Información de cada uno de los recursos con los que cuenta la CPU.
- Una tabla por cada recurso que administra.
Tabla de Memoria
- Asignación de memoria principal y secundaria a cada proceso.
- Mecanismos de protección de la memoria.
Tabla de E/S
- Administración de los dispositivos de entrada y salida de los que dispone el sistema.
- Relación entre dispositivo y proceso.
Tabla de Archivos
- Información sobre los archivos y sus propiedades.
- Localización de los archivos en memoria.
Tabla de Procesos
- Información sobre los procesos y sus propiedades.
- Pila del sistema, Datos de usuario, BCP.
Bloque de Control de Procesos (BCP)
- Toda la información disponible del proceso.
- Cada vez que entra un proceso en ejecución, se crea un BCP con la información del proceso.
- Información que contiene:
- Identificación del proceso.
- Información del estado del procesador.
- Información de control del proceso.