Curso de Sistemas Operativos - Unidad Procesos e Hilos
1. PROCESOS E HILOS
Juan Rafael Álvarez Correa
jalvarez@debian.org
1
2. CAPITULOS
■ 0 – Arquitectura del computador
■ 1 – Introducción a los sistemas operativos
■ 2 – Procesos e hilos
■ 3 – Comunicación, concurrencia y bloqueos
■ 4 – Gestión de memoria
■ 5 – Entrada y salida
■ 6 – Gestión de archivos y directorios
■ 7 – Seguridad y protección
■ 8 – Sistemas distribuidos
2
3. PROCESO
■ Programa en ejecución
Espacio de direcciones (Direcciones contiguas)
➔ Acceso uniforme a recurso y control de acceso
Instrucciones (programa)
➔ Define el comportamiento del programa
Datos
➔ Variables estaticas y automaticas
Recursos
➔ Se le asignan recursos CPU y memoria y se pueden
solicitar explicitamente (archivos)
Hilos
➔ Flujos de ejecución del programa 3
4. HILO
■ Si el proceso solo tiene un hilo
Es llamado un proceso clasico y su hilo es
llamado hilo base
■ Si el proceso puede tener multiples hilos
Es llamado un proceso moderno
A cada hilo de un proceso moderno se le llama
un proceso liviano
Por cada hilo existe una pila diferente, pues
cada hilo puede ejecutarse a su propio ritmo
La unidad de planificación es el hilo o el proceso
liviano y no el proceso moderno que lo contiene
4
5. MAQUINA ABSTRACTA
■ Simulación de una maquina real, mediante
la multiplexación de memoria y CPU
Procesos clasicos
➔ Una motor de ejecución para cada proceso clasico
Procesos modernos
➔ Una motor de ejecución para cada proceso liviano
■ Interfaz de maquina abstracta
Instrucciones de la CPU de usuario
Llamadas al sistema
5
6. GESTION DE PROCESOS
■ Creación y terminación de hilos y procesos
■ Sincronización entre procesos/hilos
■ Reserva de recursos (solo CPU)
■ Cooperación con:
Gestor de memoria
➔ Implementar espacio de direcciones
Gestor de I/O
➔ Dispositivos con correlación a memoria
➔ Gestion de interrupciones
- Reloj para expropiar
- Dispositivos para cambios de estado en los procesos
6
7. PROCESO HARDWARE Y TRAZA
■ Es el flujo simple de ejecución que realiza
directamente la CPU
BIOS
Cargador (Etapa1 y Etapa2)
Nucleo
➔ Gestor de procesos
➔ Gestor de memoria
➔ Gestor de dispositivos
➔ Gestor de archivos
Proceso inicial (init -generalmente PID=0-)
➔ SYSV y BSD
7
8. CAMBIO DE CONTEXTO
■ Para multiplexar la CPU (proporcionar
varias maquinas abstractas)
Se debe conmutar entre procesos
periodicamente
La conmutación implica almacenar el estado del
procesador, correspondiente al proceso ...
actual (contexto) y ubicar el estado de otro
proceso ... en el procesador
¿Como se logra esto?
➔ El reloj emite una interrupción a intervalos regulares
para propiciar la invocación en el gestor de procesos
del planificador: Componente responsable de
seleccionar un nuevo proceso para ejecutar
8
9. DESCRIPTOR DE PROCESO
■ Cuando el sistema operativo crea un
proceso:
Se crea un espacio de direcciones para el
proceso
Estructuras de datos del sistema operativo para
representar el proceso ...
➔ Descriptor de proceso ...
■ Cuando se termina un proceso estas
estructuras se eliminan
■ Anti-Ing de Software: El gestor de
dispositivos accede directamente la
estructura 9
10. DESCRIPTOR DE PROCESO
■ Identificador del proceso
■ Relaciones (padre, hijos)
■ Propietario
Usuario dueño del proceso
■ Espacio de direcciones
Comun a todos los hilos
■ Recursos
Archivos abiertos
■ Referencias a los hilo(s)
10
11. DESCRIPTOR DE HILO
■ Identificador del hilo
■ Relaciones
■ Estado
El estado es diferente para cada hilo
■ Estadisticas de ejecución
■ Punteros de pila
Cada hilo tiene una pila separada
■ Recursos especificos
■ Contexto
11
12. CONTEXTO
■ Contexto
Estado de la CPU
■ Cambio de contexto
Almacenar y restaurar el contexto
■ Tipos
Cambio de contexto en interrupciones
➔ Por hardware y llamadas al sistema
➔ Cambio entre modo usuario y modo nucleo
Cambio de contexto entre procesos
➔ Cuando un nuevo proceso es planificado
12
13. MULTIHILO
■ ¿Cuando una aplicación debe estar
programada con multiples hilos?
¿Existen en una misma aplicación operaciones
que no dependan de otras operaciones?
➔ Imprimir un documento, procesar click de mouse
¿Existen pocos recursos que deban ser
compartidos por los hilos?
¿Esta preparado para los problemas de
concurrencia?
¿La aplicación puede ser dividida en varias
responsabilidades?
13
14. HILOS A NIVEL DE USUARIO
■ Caracteristicas
La abstracción de hilo la realiza la aplicación
El nucleo desconoce la existencia de hilos
El cambio de contexto se hace en la aplicación
La planificación la realiza la aplicación
■ Desventajas
Un hilo puede monopolizar el procesador
La aplicación no usa la potencia de SMP
El bloqueo de un hilo, bloquea todos los hilos
14
15. GESTORES DE RECURSOS
■ Recurso
Componentes de la maquina abstracta que son
necesarios para un proceso
Cualquier cosa que potencialmente detiene un
proceso de ejecución
■ Comportamiento comun de los diferentes
componentes del sistema operativo
Gestor de dispositivos (recurso = dispositivo)
Gestor de memoria (recurso = memoria)
Gestor de procesos (recurso = procesador)
Gestor de archivos (recurso = archivo)
15
16. GESTORES DE RECURSO
■ Mecanismo
Forma en la que se accede al gestor de recursos
para la reserva o liberación de los mismos
➔ Funciones envolventes
➔ ABI para la invocación de trap
➔ Interrupción de reloj + ISR
■ Politica
Comportamiento especifico del gestor de
recurso
➔ Implementación especifica en la reserva o liberación
➔ A quien se asigna? Cuando se asigna?
16
17. GESTORES DE RECURSOS
■ Reserva de recursos
El proceso liviano/proceso clasico (parte activa
del proceso) es responsible de reservar
explicitamente los recursos
➔ Recurso = no disponible, el proceso ... = “espera”
➔ Recurso = disponible, el proceso ... = continua
■ Tipos
Recursos reutilizables
➔ Se pueden reservar y devolver (CPU, memoria)
Recursos consumibles
➔ Una vez reservados no se devuelven (datos de
entrada) 17
18. ESTADOS
■ Diagrama de estados
Representa los diferentes estados en los que un
hilo puede estar
Las transiciones posibles de un estado a otro en
el sistema operativo
18
19. MODELO DE 3 ESTADOS
Solicitud
Hecho En ejecución
Solicitud Ceder
Planifica
Bloqueado Listo Inicio
19
20. MODELO DE 5 ESTADOS
■ Modelo que permite el control de un hilo
por parte de otro hilo (controlador)
■ Se introducen los estados *suspendidos
para reflejar la no autorización por parte del
controlador
20
21. PLANIFICADOR
■ Parte del gestor de procesos que se
encarga de multiplexar la CPU en el tiempo
■ Cuando puede ser invocado
Un hilo completa su función
➔ exit
Solicitud de un recurso no disponible
➔ read (de un socket al cual no llegan datos aun)
Abandono voluntario de la CPU
➔ pthread_yield o sched_yield
Desalojo involuntario de la CPU
➔ ISR de la interrupción de reloj (PIT)
21
22. PARTES DEL PLANIFICADOR
■ Encolador
Ubica en la lista de listos un hilo que ha sido
desalojado del procesador.
■ Conmutador de contexto
Almacena el contexto del hilo a ser desalojado
en el descriptor del hilo
■ Despachador o distribuidor
Selecciona un hilo de la lista de listos para ser
ejecutado
Restaura en el procesador el contexto
almacenado en el descriptor del hilo
seleccionado 22
23. CAMBIO DE CONTEXTO
■ Si el procesador no soporta conjuntos de
registros, hay cambios de contexto ...
Cuando ocurre una interrupción
Cuando el procesador conmuta de un proceso a
otro
■ Si el procesador soporta conjuntos de
registros, se asignan conjuntos diferentes a
modo 0 y 1, y hay cambios de contexto ...
Cuando el procesador conmuta de un proceso a
otro
23
24. CAMBIO DE CONTEXTO
■ Costo de cambio de contexto (sin cache)
rg registros generales
re registros de estado
i operaciones de almacenamiento por registro
t ciclos de reloj para almacenar en memoria
(rg + re) i * c
■ Ejemplo
(32 + 8) 1 * 100c = 4000c * 2 = 8000c
24
25. CONCEPTOS DE PLANIFICACIÓN
■ Prioridad
Orden segun el cual un hilo puede ser puesto en
ejecución estando en estado de listo
■ Franja de tiempo (cuanto de tiempo)
Cantidad de tiempo entre interrupciones del
temporizador
■ Inaniciación
Situación en la que un hilo puede no planificarse
debido a caracteristicas de la politica
25
26. MODELO DE PLANIFICACIÓN
■ S(Hi)={ejecución, listo, bloqueado}
■ Tiempo de servicio: Ts(Hi)
Tiempo transcurrido total de un hilo en estado
de ejecución
Cantidad de tiempo que el hilo ha consumido de
la CPU para completar su tarea
■ Tiempo de espera: Te(Hi)
Tiempo transcurrido entre la primera entrada al
estado listo hasta antes de estar por primera
vez en ejecución
Tiempo que se demora un proceso en recibir su
primera unidad de servicio del procesador
26
27. MODELO DE PLANIFICACIÓN
■ Tiempo de vuelta: Tv(Hi)
Tiempo transcurrido entre la primera entrada al
estado listo hasta la salida definitiva del estado
ejecución
Tiempo total en completar la ejecución del hilo
una vez esta listo para ejecutarse
■ Variables a optimizar
En sistemas de procesamiento por lotes se debe
optimizar el tiempo medio de vuelta
En sistemas de tiempo compartido se debe
optimizar el “tiempo de espera” medio,
interperpretado como el tiempo en estado listo.
27
28. MECANISMOS Y POLITICAS
■ Politica de planificación
Cuando es el momento de desalojar el hilo del
procesador
Cual es el hilo elegible para ocupar el
procesador
■ Mecanismo de planificación
Como se determina el momento de multiplexar
el procesador
➔ Entrega voluntaria (ceder) e involuntaria
(interrupción periodica) del procesador
Como se desalojara y asignara un hilo del
procesador
➔ Detalles de la conmutación de contexto (SAVE_ALL) 28
29. MECANISMOS Y POLITICAS
■ Politicas
No expropiativa
➔ Basado en la entrega voluntaria
Expropiativa
➔ Basado en la entrega involuntaria
■ Mecanismos
Entrega voluntaria de la CPU
➔ Instrucción ceder (sched_yield, pthread_yield)
Entrega involuntaria de la CPU
➔ Interrupción periodica (Interrupción periodica)
29
30. POLITICAS DE PLANIFICACIÓN
■ Criterios utilizados para identificar los hilos
a ser ejecutados
■ No expropiativas
FCFS: First Come First Served (aka FIFO)
SJB: Shortest Job Next
Planificación por prioridades
Planificación por tiempo limite
■ Expropiativas
RR: Round Robin
MFQ: Multilevel Freedback Queue
SRT: Shortest Remaining Time 30
31. FCFS: FIRST COME FIRST SERVED
■ + prioridad = + viejo en la lista de listos
■ Implementación 1
➔ Encolador: Estampa tiempo de llegada
➔ Distribuidor: Selecciona hilo mas viejo
■ Implementación 2 (con estructura FIFO)
➔ Encolador: Ubica hilo en final de cola
➔ Distribuidor: Retira hilo de cabeza de la cola
■ Ventaja
Facil de implementar
■ Desventaja
No considera el Ts de un Hi 31
32. SJN: SHORTEST JOB NEXT
■ + prioridad = – tiempo de servicio
■ Ventajas
Minimiza Te
■ Desventajas
Hi con Ts grande y muchos Hj con Ts pequeños,
hay alta probabilidad de inanición de Hi
¿Como determinar el tiempo de servicio de
forma anticipada?
32
33. PLANIFICACIÓN POR PRIORIDADES
■ + prioridad = asignada externamente
Criterios arbitrarios
➔ Usuarios con mas privilegios
➔ Tareas mas criticas desde la perspectiva del usuario
■ Tipos de prioridad
Estatica
➔ Solo se puede asignar al inicio del hilo
Dinamica
➔ Puede cambiar durante la ejecución del hilo
➔ Combinada con SJN soluciona el problema de la
inanicion, si mas prioridad si mas tiempo sin servicio.
33
34. PLANIFICACIÓN X TIEMPO LIMITE
■ Debe garantizarse Tv < Tl (tiempo limite)
■ El hilo no se acepta en el estado de listo si
el planificador no puede garantizar este
tiempo limite
■ Sistemas de hard real time
34
35. EXPROPIATIVAS
■ Mas generales que las no expropiativas
Politica no apropiativa = Politica apropiativa con
franja de tiempo igual al tiempo de servicio del
hilo actual
■ REVISAR ESTA TRANSPARENCIA
35
36. ROUND ROBIN
■ Distribución equitativa de tiempo entre
todos los hilos que solicitan el procesador
■ Implementada generalmente con un cola
Cuando un hilo es expropiado del procesador
este va al final de la cola
Cuando un hilo es creado este va al final de la
cola
Cuando un hilo debe ser seleccionado, se
selecciona el que se encuentra al inicio de la
cola
36
37. PRIORIDAD EXT + ROUND ROBIN
■ La prioridad externa se evalua primero
como primer criterio de selección
■ Si la prioridad es la misma el criterio de
selección es la posición en la cola
37