2.1 Procesos 2.2 Threads 2.3 Comunicacin entre procesos 2.4 Problemas IPC clsicos 2.5 Planificacin
Procesos (1)
El Modelo de Proceso
Un contador de programa
C D
(a)
Procesos
A B
Cambio de proceso
D C B A Tiempo
(c)
(b)
a. b. c.
Multiprogramacin de 4 programas Modelo conceptual de 4 procesos secuenciales independientes Solo un proceso activo en cada instante
2
Procesos (2)
Creacin/Terminacin de procesos Principales eventos que causan la creacin de procesos Condiciones que terminan un proceso
1.
2.
3.
4.
Inicializacin del sistema (demonios) [comando ps] Ejecucin de la llamada al sistema para crear procesos El usuario solicita un nuevo proceso (comando) Inicio de un trabajo batch
Todos invocan fork()
1. 2. 3. 4.
Normal exit (voluntario) Error exit (voluntario) Fatal error (involuntario) Asesinado por otro proceso (involuntario, seal) o suicidado (voluntario, seal)
Procesos (3)
Grupos de procesos
El proceso padre crea procesos hijos y los procesos hijos pueden crear sus propios procesos Jerarqua de procesos UNIX llama a esto "process group" Windows no tiene el concepto de jerarqua de procesos Se puede operar con grupos de procesos (p. ejem.: enviar una seal).
No confundir este grupo con el grupo de rwx rwx rwx
Procesos (4)
Grupos de procesos
- init lee /etc/ttys (nmero de terminales). - init crea un proceso hijo por cada terminal. - Los hijos ejecutan (exec) el programa bin/login. - Esperan a que un usuario entre al sistema. - bin/login ejecuta la shell correspondiente (en /etc/passwd) - La shell crea un hijo por cada comando.
Procesos (5)
Estados de procesos exit
Ejecutando 1 2
planificador
3
1. El proceso se bloquea esperando datos de entrada. 2. El planificador selecciona otro proceso. 3. El planificador selecciona este proceso. 4. Los datos de entrada estn disponibles.
Bloqueado
Preparado 4
Procesos (6)
Implementacin de procesos
Gestin de procesos Registros Contador de programa Palabra de estado del programa Puntero de pila Estado del proceso Prioridad Parmetros de planificacin Identificar de proceso Proceso padre Grupo del proceso Seales Tiempo de inicio del programa Tiempo de CPU consumido Tiempo de CPU de los hijos Tiempo para la siguiente alarma
Gestin de Memoria Puntero al segmento de cdigo Puntero al segmento de datos Puntero al segmento de pila
Gestin de Ficheros Directorio raz Directorio de trabajo Descriptores de ficheros UID GID
de procesos
7
Procesos (7)
Implementacin de procesos
1. El hardware apila el contador de programa, etc. 2. El hardware carga el nuevo contador de programa desde el vector de interrupcin. 3. Un procedimiento en ensamblador guarda los registros. 4. Un procedimiento en ensamblador establece una nueva pila. 5. Se ejecuta un servicio de interrupcin en C (normalmente lee y guarda en un buffer la entrada). 6. El planificador elige qu proceso se va a ejecutar a continuacin. 7. Un procedimiento en C devuelve el control al cdigo en ensamblador. 8. El procedimiento en ensamblador inicia el nuevo proceso actual.
Threads (1)
El modelo de thread
(a) Tres procesos cada uno con un thread (b) Un proceso con tres threads
Proceso 1 Proceso 2 Proceso 3 Proceso
Espacio de Usuario
Thread
Espacio del Kernel
Thread
Kernel
Kernel
Threads (2)
El modelo de thread Operaciones sobre threads - Crear un thread
int pthread_create (pthread_t *identThread, const pthread_att_t *atributos, void *(*funcion, void*), void *argumento) pthread_create (&tA, NULL, escribir, &a) siendo: pthread_t tA; void *escribir (void *letra) {}
- Terminar un thread
void pthread_exit (void *estado) pthread_exit (NULL)
Tambin:
pthread_self() pthread_yield()
10
Threads (3)
El modelo de thread Problemas con threads - Fork. El hijo hereda los threads del padre? NO: puede no funcionar SI: un thread en el padre bloqueado por E/S quin lee? el thread del padre? el del hijo? los dos? - Los threads comparten estructuras de datos. Si un thread cierra un fichero mientras otros estn leyendo qu pasa? Para qu threads si hay procesos? - Se simplifica el modelo de programacin. - Es ms rpido crear/destruir threads que procesos. - Razones de rendimiento.
11
Threads (4)
Uso de threads
Proceso de Servidor Web
Thread Dispatcher
Thread trabajador
Espacio de Usuario
Kernel
Threads (5)
Uso de threads
(a)
(b)
13
Threads (6)
Implementacin de threads en espacio de kernel
Proceso
Thread
Espacio de Usuario
Tabla de procesos
14
Threads (7)
Implementacin de threads en espacio de kernel
Ventajas: - El bloqueo de un thread no bloquea todos los threads del proceso que lo contiene. Desventajas: - La creacin/destruccin de threads es ms cara en el kernel que en espacio de usuario (reciclar threads). - El cambio de contexto de threads tambin es ms caro
15
Threads (8)
Implementacin de threads en espacio de usuario
Proceso Thread
Espacio de Usuario
Kernel
Tabla de procesos
16
Threads (9)
Implementacin de threads en espacio de usuario Ventajas: - Se puede tener threads en sistemas operativos que no los soportan. - El switching es mucho ms rpido que si hay que comunicarlo al kernel. - Cada proceso puede tener su propio algoritmo de planificacin threads. Desventajas: - Cmo se implementan las llamadas al sistema bloqueantes? - Un thread provoca una falta de pgina: bloquea al proceso - los threads tienden a monopolizar la CPU
17
18
PERO: pueden perderse interrupciones se impide que otros procesos ajenos puedan continuar no vale si hay ms de una CPU Es peligroso darle al usuario la facultad de inhibir interrupciones Dentro del kernel, s se inhiben interrupciones
19
20
21
Las soluciones hardware y software son correctas Problemas con las soluciones hardware y software: Se pierde tiempo haciendo pooling Problema de la inversin de prioridades
22
Package Semaforos is
type SEMAFOROS is private; procedure Inicializar(S: SEMAFOROS; Valor : INTEGER); procedure Bajar (S: SEMAFOROS); procedure Subir (S: SEMAFOROS); end Semaforos;
23
25
26
Primitivas (Llamadas al sistema): send (destino, &mensaje) receive (fuente, &mensaje) receive (ANY, &mensaje)
27
Proceso P2
receive (P1, &destino1) send (P1, &mensaje2)
P1 y P2 pueden estar en distinta mquina. Se pueden perder mensajes reconocimiento (acknowledgment) Si el origen no recibe el reconocimiento retransmite el mensaje y si se pierde el reconocimiento? numerar los mensajes
28
Cada proceso implicado debe indicar explcitamente el nombre del receptor o emisor.
Enviar (P2, Mensaje) Recibir (P1, Mensaje)
Proc. 1
Recibir (P2, Mensaje)
Proc. 2
Enviar (P1, Mensaje)
29
Buzn_1
Recibir (Buzn_1, Mensaje);
Obs. 2
Enviar (Buzn_1, Mensaje) Enviar (Buzn_2, Mensaje)
Buzn_2
Rep. 1
Recibir (Buzn_2, Mensaje);
Obs. 3
Enviar (Buzn_2, Mensaje)
Rep. 2
Recibir (Buzn_2, Mensaje);
30
Asncrono
Capacidad Ilimitada
El emisor nunca se bloquea en el envo de mensajes
Sncrono
31
Tiempo Planificar conjuntamente procesos CPU bound con procesos I/O bound
Planificar cuando: proceso creado, muerto o bloqueado, int. reloj o fin de E/S
32
Eficiencia
% de CPU (y dispositivos de E/S) ocupada (todos)
Tiempo de espera
Tiempo que pasa en la cola de preparados
Rendimiento (throughput)
Nmero de trabajos completados por unidad de tiempo (batch)
33
Si la ocupacin de la cpu (eficiencia) se aproxima al 100%, el tiempo medio de espera se aproxima a En ocasiones, es mejor la varianza que la media
34
Sistemas interactivos
Expulsores: evita la monopolizacin de la CPU Round-Robin, prioridades, mltiples colas, SPN (envejecimiento)
35
Trabajo 1
A(2) B(4)
Si SJC: A, B, C, D, E
39
Memoria Principal
Planificador Memoria
Disco
Planificador de admisin
40
Tamao del quantum? - Si demasiado pequeo, poco aprovechamiento CPU - Si demasiado grande, pobre tiempo de respuesta
41
Por prioridades
Interactivo (expulsor?) Cada proceso tiene asignada una prioridad Seleccionar el proceso ms prioritario Posible inanicin de los procesos menos prioritarios. Solucin:
Decrementar la prioridad del proceso ejecutndose cada tick Round-robin entre procesos de la misma prioridad
Clases de prioridad
42
(Mxima prioridad)
43
Mltiples colas
CTTS: clases de prioridad:
1 clase: 1 quantum 2 clase: 2 quantum 3 clase: 4 quantum Si un proceso agota si quantum, se pasa a la siguiente clase menor Ejemplo: un proceso necesita 100 quanta.
1, 2, 4, 8, 16, 32, 64 7 intercambios
44
45
Proceso A
Proceso B
1 2 3
Posible: Imposible:
A1, A2, A3, A1, A2, A3 A1, B1, A2, B2, A3, B3
1
Espacio de Usuario
A1, A2, A3, A1, A2, A3 A1, B1, A2, B2, A3, B3