Procesos e Hilos
Procesos e Hilos
Procesos e Hilos
Lección 3
Procesos, hilos y planificación
Base Recomendada
2 ARCOS @ UC3M
Alejandro Calderón Mateos
A recordar…
3 ARCOS @ UC3M
Alejandro Calderón Mateos
Contenidos
Introducción
Concepto de proceso
Modelo ofrecido
Implicaciones en el sistema operativo
4 ARCOS @ UC3M
Alejandro Calderón Mateos
Contenidos
Introducción
Concepto de proceso
Modelo ofrecido
Implicaciones en el sistema operativo
5 ARCOS @ UC3M
Alejandro Calderón Mateos
Introducción
Concepto de proceso
Proceso Modelo ofrecido
Implicaciones en S.O.
kernel
6 ARCOS @ UC3M
Alejandro Calderón Mateos
Introducción
Concepto de proceso
Proceso
7 ARCOS @ UC3M
Alejandro Calderón Mateos
Concepto de proceso 2
1
App 1
CPU
Memoria Disco
Proceso
Programa en ejecución
Unidad de procesamiento gestionada por el S.O.
8 ARCOS @ UC3M
Alejandro Calderón Mateos
Hilo (thread): Concepto
Un proceso puede tener múltiples flujos de ejecución
thread: cada flujo de ejecución de un proceso
thread = hilo = proceso ligero
single-threaded multithreaded
9 ARCOS @ UC3M
Alejandro Calderón Mateos
Hilo (thread): Estrategias de implementación
Thread de biblioteca
Implementado en una biblioteca de espacio de usuario
para ofrecer la semántica a las aplicaciones
Usado cuando el sistema operativo no ofrece la abstracción de hilo
[I] Llamada bloqueante de un hilo bloquea todo el proceso
[V] Gestión de hilo no implica al S.O.: más ligeros, más hilos, etc.
Thread de sistema
Disponible como abstracción en el núcleo (espacio de kernel) y
ofrecida la gestión a través de un conjunto de llamadas al sistema
[I] Sobrecarga al sistema operativo la elevada creación de hilos
[V] Mayor paralelismo, si un hilo se bloquea otro puede continuar
sin necesidad de un pesado cambio de contexto de proceso
(cambio de contexto de un hilo es más ligero)
10 ARCOS @ UC3M
Alejandro Calderón Mateos
Hilo (thread): Estrategias de implementación (2)
P P P
(a) Nivel de usuario puro (N-1) (b) Nivel de núcleo puro (1-1) (c) Combinado (N-M)
11 ARCOS @ UC3M
Alejandro Calderón Mateos
Introducción
Concepto de proceso
Proceso Modelo ofrecido
12 ARCOS @ UC3M
Alejandro Calderón Mateos
Modelo ofrecido
CPU
Memoria Disco
Recursos asociados
Zonas de memoria
Al menos: código, datos y pila
Archivos abiertos
Señales
13 ARCOS @ UC3M
Alejandro Calderón Mateos
App2
App1
App 1
CPU
App 2
App 3
Memoria
Multiprogramación
Tener varias aplicaciones en memoria
Si una aplicación se bloquea por E/S, entonces
se ejecuta mientras otra hasta que quede bloqueada
Cambio de contexto voluntario (C.C.V.)
Eficiencia en el uso del procesador
Grado de multiprogramación = número de aplicaciones en RAM
14 ARCOS @ UC3M
Alejandro Calderón Mateos
Modelo ofrecido
App 1
CPU
App 2
App 3
Memoria
Protección / Compartición
El espacio de direcciones privado por aplicación, pero
Posibilidad de comunicar datos entre dos aplicaciones
Paso de mensajes
Compartición de memoria
15 ARCOS @ UC3M
Alejandro Calderón Mateos
App0
Modelo ofrecido
App 1
CPU
App 2
App1 App2
App 3
App3
Memoria
Jerarquía de procesos
Creación de proceso
Como copia de otro proceso existente
A partir del programa en disco
Como proceso en el arranque
Grupo de procesos que comparten mismo tratamiento
16 ARCOS @ UC3M
Alejandro Calderón Mateos
App1
Modelo ofrecido
App2 App3
App 1
CPU
App 2
App 3
Memoria
Multitarea
Cada proceso se ejecuta un quantum de tiempo (Ej.: 5 ms) y
se rota el turno para ejecutar procesos no bloqueados
Cambio de contexto involuntario (C.C.I.)
Reparto del uso del procesador
Parece que todo se ejecuta a la vez
17 ARCOS @ UC3M
Alejandro Calderón Mateos
App1
Modelo ofrecido
App2 App3
App 1
CPU
App 2
App 3
Memoria
Multiproceso
Se dispone de varios procesadores (multicore/multiprocesador)
Además del reparto de cada CPU (multitarea)
hay paralelismo real entre varias tareas (tantas como
procesadores)
Se suele usar planificador y estructuras de datos separadas por
procesador con algún mecanismo de equilibrio de carga
18 ARCOS @ UC3M
Alejandro Calderón Mateos
Introducción
Concepto de proceso
Proceso Modelo ofrecido
Implicaciones en S.O.
kernel
19 ARCOS @ UC3M
Alejandro Calderón Mateos
Implicaciones en el sistema operativo
1. Estructuras de datos
Prioridad
Afinidad
Evitar saltar de un core a otro core
(continuar en el mismo) Relación de parentesco
Más
Conjuntos de procesos
Procesos de una sesión
...
20 ARCOS @ UC3M
Alejandro Calderón Mateos
Implicaciones en el sistema operativo
1. Estructuras de datos
kernel
21 ARCOS @ UC3M
Alejandro Calderón Mateos
Implicaciones en el sistema operativo
2. Funciones: de gestión internas
Estados y
cambios de contexto
Colas de procesos
Planificación
Etc.
kernel
22 ARCOS @ UC3M
Alejandro Calderón Mateos
Implicaciones en el sistema operativo
2. Funciones: de servicio
Creación de proceso
Destrucción de proceso
Cambio de imagen
Espera por el fin de otro proceso
Etc.
Estados y
cambios de contexto
Colas de procesos
Planificación
Etc.
kernel
23 ARCOS @ UC3M
Alejandro Calderón Mateos
Implicaciones en el sistema operativo
2. Funciones: API de servicio
fork, exit, exec, wait, …
pthread_create, pthread…
Creación de proceso
Destrucción de proceso
Cambio de imagen
Espera por el fin de otro proceso
Etc.
Estados y
cambios de contexto
Colas de procesos
Planificación
Etc.
kernel
24 ARCOS @ UC3M
Alejandro Calderón Mateos
Introducción
resumen
Concepto de proceso
Proceso Modelo ofrecido
Implicaciones en S.O.
…
…
…
…
…
…
kernel
25 ARCOS @ UC3M
Alejandro Calderón Mateos
Introducción
aspectos de diseño e implementación
Concepto de proceso
Modelo ofrecido
Proceso Análisis de requisitos
Implicaciones en S.O.
Diseño, implementación,
…
implantación y pruebas
…
…
…
…
…
kernel
26 ARCOS @ UC3M
Alejandro Calderón Mateos
Introducción
aspectos de diseño e implementación
Concepto de proceso
Modelo ofrecido
Análisis de requisitos
Implicaciones en S.O.
Diseño, implementación,
implantación y pruebas
Información Funciones
Requisitos
(estructuras de datos) (internas, servicio y API)
Recursos
Multiprogramación
Comunicación
Multiproceso
27 ARCOS @ UC3M
Alejandro Calderón Mateos
Contenidos
Introducción
Concepto de proceso
Modelo ofrecido
Implicaciones en el sistema operativo
28 ARCOS @ UC3M
Alejandro Calderón Mateos
Información para cumplir con los requisitos…
29 ARCOS @ UC3M
Alejandro Calderón Mateos
Información en el sistema operativo
App 1
App 2
Tabla de procesos
App 3 Tabla de memoria
Tabla de E/S
Tabla de ficheros
Tablas del S.O.
Memoria física
30 ARCOS @ UC3M
Alejandro Calderón Mateos
Información para un proceso
App 2
BCP BCP BCP …
(1) (2) (3)
Tabla de procesos
App 3 Tabla de memoria
Tabla de E/S
Tabla de ficheros
Tablas del S.O.
Memoria física
31 ARCOS @ UC3M
Alejandro Calderón Mateos
BCP: entrada de la tabla de procesos
Gestión de proceso
Registros generales
Tabla de procesos
estado
Contador de programa
Registro de estado
Puntero de pila
BCP BCP BCP …
Identificador del proceso (1) (2) (3)
Proceso padre
Id.
Grupo de proceso
Prioridad Process Control Block (PCB / BCP)
Parámetros del planificador Estructura de datos con la información necesaria para
gestionar un proceso en particular
gestión
Señales
Manifestación de un proceso en el kernel
Instante inicio de ejecución
Tiempo de uso de CPU
Thread Control Block (TCB / BCT)
Tiempo hasta siguiente alarma
Similar al BCP para cada hilo de un proceso
32 ARCOS @ UC3M
Alejandro Calderón Mateos
BCP: entrada de la tabla de procesos
Gestión de proceso
Registros generales
Tabla de procesos
estado
Contador de programa
Registro de estado
Puntero de pila
BCP BCP BCP …
Identificador del proceso (1) (2) (3)
Proceso padre
Id.
Grupo de proceso
Prioridad Process Identification (PID)
Parámetros del planificador Identificador de cara a los usuarios
gestión
33 ARCOS @ UC3M
Alejandro Calderón Mateos
Dónde: información del proceso
Tabla de E/S
Tabla de ficheros
Ejemplos:
Tabla de segmentos y páginas de memoria
Tabla de punteros de posición de ficheros
Lista de peticiones a dispositivos
34 ARCOS @ UC3M
Alejandro Calderón Mateos
Dónde: información del proceso
Tabla de punteros de
posición de ficheros:
BCP 4
Tabla de
BCP 7
Tabla de
BCP 23
Tabla de
Describe la posición de
ficheros
0 23
ficheros
0 23
ficheros
0 54
lectura/escritura de los ficheros
fd 1 4563
2 56
fd 1 4563
2 56
fd 1 633
2 5368
abiertos
3 4 3 4 3 33
4 678 4 0 4 2 La compartición de estado del
fichero entre procesos obliga a
IDFF PP que sea externa al BCP
1 24456 0
2
3
34512
28
2345
5566
El BCP contiene el índice del
4 34512 10000 elemento de la tabla que
contiene la información del
fichero abierto: el i-nodo y la
posición de lectura/escritura.
Grupo de proceso
Prioridad
Parámetros del planificador
gestión
Señales
Instante inicio de ejecución BCP
36 ARCOS @ UC3M
Alejandro Calderón Mateos
Información del proceso
Linux
state (runability)
stack
stack + thread_info (low_level scheduling)
scheduling info
debugging support
state (exit status) mm_struct (memory)
pid and tgid
mm fs_struct (directory name space)
process hierarchy info
pid hash table
credentials files_struct (Open Files)
fs
files
tty_struct (communications)
signal
sighand signal_struct (signals)
…
sighand_struct (signal handers)
task_struct (Process Descriptor)
Introducción
Concepto de proceso
Modelo ofrecido
Implicaciones en el sistema operativo
38 ARCOS @ UC3M
Alejandro Calderón Mateos
Multiprogramación (datos y funciones)
Requisitos Información (en estructuras de datos) Funciones (internas, servicio y API)
39 ARCOS @ UC3M
Alejandro Calderón Mateos
Multiprogramación
Memoria App2
App1
App3
App 1
Tener varias aplicaciones en memoria
App 2
Si una aplicación se bloquea por E/S, entonces
se ejecuta otra (hasta que quede bloqueada)
App 3
Cambio de contexto voluntario (C.C.V.)
40 ARCOS @ UC3M
Alejandro Calderón Mateos
Multiprogramación (datos)
Estados de un proceso (c.c.v.)
BCP5
finalización
Running
Memoria App2
App1
App3
App 1
Tener varias aplicaciones en memoria
App 2
Si una aplicación se bloquea por E/S, entonces
se ejecuta otra (hasta que quede bloqueada)
App 3
Cambio de contexto voluntario (C.C.V.)
41 ARCOS @ UC3M
Alejandro Calderón Mateos
Multiprogramación (datos)
Estados de un proceso (c.c.v.)
BCP5
finalización
Running
42 ARCOS @ UC3M
Alejandro Calderón Mateos
Multiprogramación (datos)
Lista/Colas de procesos (c.c.v.)
BCP5
finalización
Running
Memoria App2
App1
App3
App 1
Tener varias aplicaciones en memoria
App 2
Si una aplicación se bloquea por E/S, entonces
se ejecuta otra (hasta que quede bloqueada)
App 3
Cambio de contexto voluntario (C.C.V.)
43 ARCOS @ UC3M
Alejandro Calderón Mateos
Multiprogramación (datos)
Lista/Colas de procesos (c.c.v.)
BCP5
finalización
Running
44 ARCOS @ UC3M
Alejandro Calderón Mateos
Implementación de las colas de procesos
Proceso 0 Proceso 1 Proceso n
…
Límites de memoria Límites de memoria Límites de memoria
Tabla de procesos
Lista de ficheros abiertos Lista de ficheros abiertos Lista de ficheros abiertos
... ... ...
cabeza
Cola de listos cola
cabeza
Cola de … cola
45 ARCOS @ UC3M
Alejandro Calderón Mateos
Multiprogramación (datos)
Contexto de un proceso
finalización
Running
Memoria App2
App1
App3
App 1
Tener varias aplicaciones en memoria
App 2
Si una aplicación se bloquea por E/S, entonces
se ejecuta otra (hasta que quede bloqueada)
App 3
Cambio de contexto voluntario (C.C.V.)
46 ARCOS @ UC3M
Alejandro Calderón Mateos
Multiprogramación (datos)
Contexto de un proceso
finalización
Running
47 ARCOS @ UC3M
Alejandro Calderón Mateos
Multiprogramación: ejemplo de ejecución
ejecutando
listo
48 ARCOS @ UC3M
Alejandro Calderón Mateos
Multiprogramación: ejemplo de ejecución
ejecutando
49 ARCOS @ UC3M
Alejandro Calderón Mateos
Multiprogramación: ejemplo de ejecución
ejecutando
50 ARCOS @ UC3M
Alejandro Calderón Mateos
Multiprogramación: ejemplo de ejecución
ejecutando
bloqueado
51 ARCOS @ UC3M
Alejandro Calderón Mateos
Multiprogramación: ejemplo de ejecución
ejecutando
bloqueado
cargar estado en el BCP1
ejecutando
52 ARCOS @ UC3M
Alejandro Calderón Mateos
Multiprogramación: ejemplo de ejecución
ejecutando
bloqueado
cargar estado en el BCP1
ejecutando
2 interrupción
listo
53 ARCOS @ UC3M
Alejandro Calderón Mateos
Multiprogramación: ejemplo de ejecución
ejecutando
bloqueado
cargar estado en el BCP1
ejecutando
54 ARCOS @ UC3M
Alejandro Calderón Mateos
Multiprogramación: ejemplo de ejecución
ejecutando
bloqueado
cargar estado en el BCP1
ejecutando
55 ARCOS @ UC3M
Alejandro Calderón Mateos
Multiprogramación: ejemplo de ejecución
ejecutando
bloqueado
cargar estado en el BCP1
ejecutando
ejecutando
56 ARCOS @ UC3M
Alejandro Calderón Mateos
Multiprogramación: ejemplo de ejecución
ejecutando
1 llamada bloqueante
salvar estado en el BCP0 listo
bloqueado
cargar estado en el BCP1
ejecutando
2 interrupción
ejecutando
57 ARCOS @ UC3M
Alejandro Calderón Mateos
1
Pseudocódigo de ejemplo (P0)
planificador()
• return extraer(CPU_Listo);
Teclado_LeerTecla() Running
• proceso = procesoActual;
• procesoActual = planificador();
salvar estado en BCP0 • procesoActual->estado = EJECUCION;
• cambio_contexto( &(proceso->contexto),
&(procesoActual->contexto));
cargar estado en BCP1
• return extraer(Teclado_Teclas) ;
BCP7 BCP2
58 ARCOS @ UC3M
Alejandro Calderón Mateos
2
Pseudocódigo de ejemplo (P1)
Teclado_Interrupción_Hardware ()
• T = in (TECLADO_HW_ID);
• proceso = insertar (T, Teclado_Teclas);
• Insertar (Teclado_interrupción_software);
• Activar_Interrupción_Software();
Teclado_Interrupción_Software ()
• proceso = primero (Teclado_Procesos);
• SI (proceso != NULL)
• eliminar (Teclado_Procesos);
• proceso->estado = LISTO; fin E/S
• insertar (CPU_Listos, proceso); Ready Blocked
59 ARCOS @ UC3M
Alejandro Calderón Mateos
2
Pseudocódigo de ejemplo (P1)
Teclado_Interrupción_Hardware ()
• T = in (TECLADO_HW_ID);
• proceso = insertar (T, Teclado_Teclas);
• Insertar (Teclado_interrupción_software);
• Activar_Interrupción_Software();
Teclado_Interrupción_Software ()
• proceso = primero (Teclado_Procesos);
• SI (proceso != NULL)
• eliminar (Teclado_Procesos);
• proceso->estado = LISTO; fin E/S
• insertar (CPU_Listos, proceso); Ready Blocked
60 ARCOS @ UC3M
Alejandro Calderón Mateos
3
Pseudocódigo de ejemplo (P1)
planificador()
• return extraer(CPU_Listo);
Teclado_LeerBloqueDisco() Running
• procesoActual = planificador();
salvar estado en BCP1 • procesoActual->estado = EJECUCION;
• cambio_contexto( &(proceso->contexto),
&(procesoActual->contexto));
cargar estado en BCP0
• return extraer(Disco_caché, bloque) ; BCP7 BCP2
61 ARCOS @ UC3M
Alejandro Calderón Mateos
3
Pseudocódigo de ejemplo (P0)
Teclado_LeerTecla()
• Si (no hay tecla)
• procesoActual->estado = BLOQUEADO;
• Insertar(Teclado_Procesos, procesoActual);
• proceso = procesoActual;
• procesoActual = planificador();
• procesoActual->estado = EJECUCION;
• cambio_contexto( &(proceso->contexto),
&(procesoActual->contexto));
• return extraer(Teclado_Teclas) ;
62 ARCOS @ UC3M
Alejandro Calderón Mateos
El reloj: tratamiento con solo c.c.v.
ejecutando
Reloj_Interrupción_Hardware ()
interrupción o llamada al sistema
• Ticks++
Reloj_Interrupción_Hardware ()
interrupción o llamada al sistema
• Ticks++
Reloj_Interrupción_Hardware ()
interrupción o llamada al sistema
• Ticks++
63 ARCOS @ UC3M
Alejandro Calderón Mateos
Colas/Listas de procesos
Linux
"sched.h"
…
task_struct init_task
"current.h"
task_struct *current
"sched.c"
struct rq runqueues
…
"wait.h"
DEFINE_WAIT(wq1)
…
64 ARCOS @ UC3M
Alejandro Calderón Mateos
Colas/Listas de procesos
Linux
a. atomic_t is_blocking_mode = ATOMIC_INIT(0);
DECLARE_WAIT_QUEUE_HEAD(dso_wq1);
sched.h sched.h
init_task …
b. atomic_set(&is_blocking_mode,
task_struct 0);
task_struct
wait_event_interruptible(dso_wq1,
(atomic_read(&is_blocking_mode) == 1));
current
c. atomic_set(&is_blocking_mode, 1);
wake_up_interruptible(&dso_wq1);
kernel/sched.c
runqueues
struct rq
"wait.h"
DEFINE_WAIT(wq1)
…
65 ARCOS @ UC3M
Alejandro Calderón Mateos
Colas/Listas de• procesos
DEFINE_WAIT, DECLARE_WAIT_QUEUE_HEAD(wq)
• wq->flags &= ~WQ_FLAG_EXCLUSIVE
Linux
wq->flags |= WQ_FLAG_EXCLUSIVE
a. atomic_t is_blocking_mode = ATOMIC_INIT(0);
DECLARE_WAIT_QUEUE_HEAD(dso_wq1);
sched.h sched.h
init_task …
b. atomic_set(&is_blocking_mode,
task_struct 0);
task_struct
wait_event_interruptible(dso_wq1,
(atomic_read(&is_blocking_mode) == 1));
current
c. atomic_set(&is_blocking_mode, 1);
wake_up_interruptible(&dso_wq1);
kernel/sched.c
runqueues
struct rq
wait_event, wait_event_interruptible (wq, condition)
…
wait_event_timeout,
wait_event_interruptible_timeout (wq, condition, timeout)
"wait.h"
wake_up, wake_up_nr,
DEFINE_WAIT(wq1)wake_up_all, wake_up_interruptible,
wake_up_interruptible_nr, wake_up_interruptible_all,
…
wake_up_interruptible_sync, wake_up_locked(queue)
66 ARCOS @ UC3M
Alejandro Calderón Mateos
Contenidos
Introducción
Concepto de proceso
Modelo ofrecido
Implicaciones en el sistema operativo
67 ARCOS @ UC3M
Alejandro Calderón Mateos
Multitarea (datos y funciones)
68 ARCOS @ UC3M
Alejandro Calderón Mateos
Estados de un proceso
finalización
Running
C.C.V.
creación fin E/S
Ready Blocked
finalización
Running
C.C.V. + C.C.I.
creación fin E/S
Ready Blocked
69 ARCOS @ UC3M
Alejandro Calderón Mateos
El reloj: tratamiento con c.c.v. + c.c.i.
ejecutando
interrupción o llamada al sistema
ejecutando
70 ARCOS @ UC3M
Alejandro Calderón Mateos
Pseudocódigo de ejemplo (P0)
Reloj_Interrupción_Hardware ()
• Ticks++;
• Insertar (Reloj_Planificar_Rodaja);
• Activar_Interrupción_Software();
Reloj_Planificar_Rodaja ()
Running
• pActual->rodaja = pActual->rodaja - 1; Ready
• SI (pActual->rodaja == 0)
BCP7 BCP2
• pActual->estado = LISTO;
planificador() • insertar (CPU_Listos, pActual);
• return extraer(CPU_Listo);
• proceso = pActual;
• pActual = planificador();
salvar estado en BCP0 • pActual->estado = EJECUCIÓN;
• cambio_contexto(
&(proceso->contexto),
cargar estado en BCP1
&(pActual->contexto));
BCP2 BCP5
• return ok;
71 ARCOS @ UC3M
Alejandro Calderón Mateos
Estados de un proceso
Linux
Stopped
Signal Signal
Termination
Creation
Ready Scheduling Executing Zombie
Uninterruptible
Event Event
Interruptible
72 ARCOS @ UC3M
Alejandro Calderón Mateos
Estados de un proceso
Windows 2000
73 ARCOS @ UC3M
Alejandro Calderón Mateos
Temporización
Linux
"timer.h"
timer_list …
…
"timer.h"
timer_list …
…
76 ARCOS @ UC3M
Alejandro Calderón Mateos
Multiproceso
Afinidad:
Los procesos tienen ‘afinidad’ (affinity) a una CPU: «mejor volver a la misma CPU»
Simetría:
Los procesos se ejecutan en la CPU que tienen unas capacidades específicas
77 ARCOS @ UC3M
Alejandro Calderón Mateos
Contenidos
Introducción
Concepto de proceso
Modelo ofrecido
Implicaciones en el sistema operativo
78 ARCOS @ UC3M
Alejandro Calderón Mateos
Planificación de procesos
niveles de planificación
finalización
A largo plazo
Running
añadir procesos a ejecutar
Invocado con baja frecuencia
puede ser algo lento
creación fin E/S
Ready Blocked A medio plazo
añadir procesos a RAM
Planificación a corto plazo
A corto plazo
Ready & Blocked & qué proceso tiene la UCP
Suspend Suspend
Invocado frecuentemente
Planificación a medio plazo rápido
Planificación a largo plazo
Planificador: cabeza
BCP7 BCP2
… …
ejecutado entre los que están
listos para ejecutar
Activador: Running
finalización
80 ARCOS @ UC3M
Alejandro Calderón Mateos
Planificación de procesos
objetivos de los algoritmos de planificación (según sistema)
Sistemas batch:
Productividad – maximizar el número de trabajos por hora
Tiempo de espera – minimizar el tiempo entre emisión y terminación del trabajo
Uso de CPU – mantener la CPU ocupada todo el tiempo
Sistemas Interactivos:
Tiempo de respuesta – responder a las peticiones lo más rápido posible
Ajustado – satisfacer las expectaciones de los usuarios
Preemption:
Sin expulsión:
El proceso conserva la CPU mientras desee.
Cambios de contexto voluntarios (C.C.V.)
[v/i] Un proceso puede bloquear al resto pero solución fácil a la compartición de recursos
Windows 3.1, Windows 95 (16 bits), NetWare, MacOS 9.x.
Con expulsión:
Exige un reloj que interrumpe periódicamente:
cuando pasa el quantum de un proceso se cambia a otro
(Se añade) Cambios de contexto involuntarios (C.C.I.)
[v/i] Mejora la interactividad pero precisa de mecanismos para condiciones de carrera
AmigaOS (1985),Windows NT-XP-Vista-7, Linux, BSD, MacOS X
82 ARCOS @ UC3M
Alejandro Calderón Mateos
Planificación de procesos
características de los algoritmos de planificación (2/2)
Por prioridad A B C D
Por tipo
CPU-bound (más ‘rachas’ –burst– de tiempo usando CPU)
IO-bound (más ‘rachas’ de tiempo esperando E/S)
CPU-aware:
Afinidad:
Los procesos tienen ‘afinidad’ (affinity) a una CPU: «mejor volver a la misma CPU»
Simetría:
Los procesos se ejecutan en la CPU que tienen unas capacidades específicas a dicha CPU
83 ARCOS @ UC3M
Alejandro Calderón Mateos
Planificación de procesos
principales algoritmos de planificación (1/3)
A B C D B C D A
Por prioridad:
Asignación a procesos más prioritarios el procesador
Se puede combinar con cíclica. Ejemplo con tres clases de prioridad
Prioridad 3
Prioridad 2
Prioridad 1
Características:
Uso de prioridades fijas: problema de inanición
No fijas: uso de algún algoritmo de envejecimiento
Uso en sistemas de tiempo compartido con aspectos de tiempo real
85 ARCOS @ UC3M
Alejandro Calderón Mateos
Planificación de procesos
principales algoritmos de planificación (3/3)
FIFO:
Ejecución por el estricto orden de llegada.
Características:
[v] Simple de implantar.
[i] Penaliza los trabajos prioritarios.
Uso en sistemas batch.
86 ARCOS @ UC3M
Alejandro Calderón Mateos
Política vs mecanismo
87 ARCOS @ UC3M
Alejandro Calderón Mateos
Planificación multipolítica
Windows 2000 y Linux
Prioridades de RT
16 niveles de RT 31-16 0-99
I/O I/O
Prioridades procs.
CPU convencionales CPU
15-1
15 niveles variables 100-139
Windows 2000
16 niveles de RT 31-16
I/O
CPU
15-1
15 niveles variables
Dispatcher database:
base de datos de hilos esperando
para ejecutar y a qué proceso
pertenecen
Ready summary
Un bit por nivel
Si biti =1 un hilo en ese nivel
Aumenta velocidad de búsqueda
Idle summary
Un bit por procesador
Si bit =1 procesador libre
Priority
Running Ready
20
19
18
17
16
15
14
To wait state
Priority
Running Ready
17
16
15
14
13
14
13
12
11
Kernel/sched.c
runqueue
Cada procesador tiene
140
su propio runqueue
active
…
1
Cada runqueue tiene
140
dos vectores de prioridad:
CPU
expired
#0 … Activo y Expirado
1
Cada vector de prioridad tiene
140 listas:
… Una por nivel de prioridad
Incluye 100 niveles de tiempo real
Introducción
Concepto de proceso
Modelo ofrecido
Implicaciones en el sistema operativo
97 ARCOS @ UC3M
Alejandro Calderón Mateos
Implicaciones en el sistema operativo…
98 ARCOS @ UC3M
Alejandro Calderón Mateos
Servicios del sistema operativo
inicialización y finalización de procesos
Creación de proceso
Destrucción de proceso
Cambiar propiedad X
Espera por el fin de otro proceso
Etc.
Estados y
cambios de contexto
Colas de procesos
Planificación
Etc.
kernel
99 ARCOS @ UC3M
Alejandro Calderón Mateos
Creación de procesos
Un proceso se crea:
Durante el arranque del sistema
Hilos del kernel + primer proceso (Ej.: init, swapper, etc.)
Un proceso termina:
De forma voluntaria:
Finalización normal
Finalización con error
De forma involuntaria:
Finalizado por el sistema (Ej.: excepción, sin recursos necesarios)
Finalizado por otro proceso (Ej.: a través de llamada al sistema)
Finalizado por el usuario (Ej.: control-c por teclado)
En Unix/Linux se usan señales como mecanismo
Se pueden capturar y tratar (salvo SIGKILL) para evitar finalizar involuntariamente
Linux
clone() wait()
padre
exec() exit()
hijo
Windows
CreateProcess() GetExitCodeProcess()
padre
ExitProcess()
hijo
Apila PC inicial
Liberar imagen de M
exec: del proceso
Leer ejecutable
“Cambia la imagen de
memoria de un proceso Crear nueva imagen
usando como M BCP
‘recipiente’ uno previo”
Cargar secciones
.texto y .datos
si responde: NO responde:
freeproc(): libera P y M mantener señal
Creación de proceso
Destrucción de proceso
Cambio de imagen
Espera por el fin de otro proceso
Etc.
Estados y
cambios de contexto
Colas de procesos
Planificación
Etc.
kernel
ARCOS @ UC3M
Alejandro Calderón Mateos
Servicios en POSIX
Exec
Cambia la imagen de un proceso
Si todo va bien no
se vuelve de esta Pid 201
función (el código se
sustituye por otro) execlp("ls",
"ls","-l",NULL);
Pid 201
/* código de /bin/ls */
ARCOS @ UC3M
Alejandro Calderón Mateos
Servicios en POSIX
Exit
Finalizar la ejecución de un proceso
El parámetro es un valor entero que se suele usar como
código de diagnóstico: si se ha ejecutado todo bien, ha
habido algún problema leve, algún error grave, etc.
Pid 201
exit( 10 ) ;
ARCOS @ UC3M
Alejandro Calderón Mateos
Servicios en POSIX
Wait
Tiene tres efectos:
1. Bloque la ejecución del padre hasta que alguno de sus
hijos termine su ejecución.
2. Guarda en su parámetro el valor devuelto por el hijo.
3. Devuelve el pid del hijo que ha terminado.
pid != wait(&status) ;
exit( 10 );
1
3 2
pid != wait(&status) ;
201 10
ARCOS @ UC3M
Alejandro Calderón Mateos
Ejemplos de uso
fork+exec+wait
simple
/* ejecutar el mandato ls -l */
#include <sys/types.h>
#include <stdio.h>
main() {
pid_t pid;
int status;
pid = fork();
if (pid == 0)
{
execlp("ls","ls","-l",NULL);
exit(-1);
}
else
{
while (pid != wait(&status));
}
exit(0);
}
/* ejecutar el mandato ls -l */
#include <sys/types.h>
#include <stdio.h>
main() {
pid_t pid;
int status;
pid = fork();
if (pid == 0)
{
execlp("ls","ls","-l",NULL);
exit(-1);
}
else
{
while (pid != wait(&status));
}
exit(0);
}
main() { main() {
pid_t pid; pid_t pid;
int status; int status;
exit(0); exit(0);
} }
main() { main() {
pid_t pid; pid_t pid;
int status; int status;
exit(0); exit(0);
} }
main() { main() {
pid_t pid; pid_t pid;
int status; int status;
exit(0); exit(0);
} }
main() { main() {
pid_t pid; pid_t pid;
int status; int status;
exit(0); exit(0);
} }
main() { main() {
pid_t pid;
int status; /* código del ls */
exit(0);
}
main() { main() {
pid_t pid;
int status; /* código del ls */
exit(0);
}
main() { main() {
pid_t pid;
int status; /* código del ls */
exit(0);
}
main() { main() {
pid_t pid;
int status; /* código del ls */
exit(0);
}
/* ejecutar el mandato ls -l */
#include <sys/types.h>
#include <stdio.h>
main() {
pid_t pid;
int status;
pid = fork();
if (pid == 0)
{
execlp("ls","ls","-l",NULL);
exit(-1);
}
else
{
0
while (pid != wait(&status));
}
exit(0);
}
/* ejecutar el mandato ls -l */
#include <sys/types.h>
#include <stdio.h>
main() {
pid_t pid;
int status;
pid = fork();
if (pid == 0)
{
execlp("ls","ls","-l",NULL);
exit(-1);
}
else
{
while (pid != wait(&status));
}
exit(0);
}
Grupo ARCOS