You are on page 1of 47

Captulo 2

Procesos y Threads
2.1 Procesos 2.2 Threads 2.3 Comunicacin entre procesos 2.4 Problemas IPC clsicos 2.5 Planificacin

D.I.A.

Sistemas Operativos I @ (ITIS) 1

Procesos (1)
El Modelo de Proceso
Un contador de programa

Cuatro contadores de programa

C D
(a)

Procesos

A B

Cambio de proceso

D C B A Tiempo
(c)

(b)

a. b. c.
D.I.A.

Multiprogramacin de 4 programas Modelo conceptual de 4 procesos secuenciales independientes Solo un proceso activo en cada instante
Sistemas Operativos I @ (ITIS) 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)

D.I.A.

Sistemas Operativos I @ (ITIS) 3

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
D.I.A. Sistemas Operativos I @ (ITIS) 4

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.

D.I.A.

Sistemas Operativos I @ (ITIS) 5

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

fork() Posibles estados de un procesos Ejecutndose Bloqueado Preparado


D.I.A. Sistemas Operativos I @ (ITIS) 6

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

Campos en una entrada a la tabla


D.I.A. Sistemas Operativos I @ (ITIS)

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.

Esqueleto de lo que hace el SO cuando llega una interrupcin.

D.I.A.

Sistemas Operativos I @ (ITIS) 8

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

D.I.A.

Sistemas Operativos I @ (ITIS) 9

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) {}

- Esperar a que termine otro thread


int pthread_join (pthread_t thread, void **estado) pthread_join (tA, NULL)

- Terminar un thread
void pthread_exit (void *estado) pthread_exit (NULL)
D.I.A.

Tambin:
pthread_self() pthread_yield()

Sistemas Operativos I @ (ITIS) 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.
D.I.A. Sistemas Operativos I @ (ITIS) 11

Threads (4)
Uso de threads
Proceso de Servidor Web
Thread Dispatcher
Thread trabajador
Espacio de Usuario

Cach de la pgina web

Espacio del Kernel Conexin de red

Kernel

Un servidor web multithread


D.I.A. Sistemas Operativos I @ (ITIS) 12

Threads (5)
Uso de threads

while (TRUE){ obtener_siguiente_peticin(&buf); entrega_trabajo(&buf); }

while (TRUE){ esperar_trabajo(&buf); buscar_pgina_en_cache(&buf, &page); if (pgina_no_encontrada_en_cache(&page) leer_pgina_de_disco(&buf, &page); devolver_pgina(&page); }

(a)

(b)


D.I.A.

Dispatcher (a) Worker (b)

Cmo sin threads?

Sistemas Operativos I @ (ITIS) 13

Threads (6)
Implementacin de threads en espacio de kernel

Proceso

Thread

Espacio de Usuario

Espacio del Kernel

Kernel Tabla de threads

Tabla de procesos

D.I.A.

Sistemas Operativos I @ (ITIS) 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

D.I.A.

Sistemas Operativos I @ (ITIS) 15

Threads (8)
Implementacin de threads en espacio de usuario
Proceso Thread

Espacio de Usuario

Espacio del Kernel pthread_create pthread_join pthread_exit pthread_self pthread_yield


D.I.A.

Kernel

Tabla de threads Run-time system


Sistemas Operativos I @ (ITIS)

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
D.I.A. Sistemas Operativos I @ (ITIS) 17

Comunicacin entre procesos (1)

Los procesos necesitan comunicarse y sincronizarse. Se presentan tres problemas:


Cmo pasar informacin de un proceso a otro Threads (espacio compartido)
Procesos (espacio no compartido)

Exclusin mutua sobre regiones crticas Secuenciamiento cuando existen dependencias

D.I.A.

Sistemas Operativos I @ (ITIS) 18

Comunicacin entre procesos (2)


Exclusin mutua con espera activa Mecanismo: Inhibir interrupciones 1. 2. entrar: inhibir; salir: permitir dentro de la RC, un proceso no pide E/S

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
D.I.A. Sistemas Operativos I @ (ITIS) 19

Comunicacin entre procesos (3)


Exclusin mutua con espera activa

Mecanismo: Variable cerrojo


variable = 0, RC libre; variable = 1, RC ocupada protocolo de entrada if variable = 0 then variable:=1; entrar en RC else esperar hasta que variable = 0 protocolo de salida variable:= 0

D.I.A.

Sistemas Operativos I @ (ITIS) 20

Comunicacin entre procesos (4)


Exclusin mutua con espera activa

Mecanismo: Test and Set Lock


TSL RX, LOCK Lee el contenido de LOCK en RX y pone un valor distinto de 0 en LOCK

D.I.A.

Sistemas Operativos I @ (ITIS) 21

Comunicacin entre procesos (5)


Exclusin mutua con espera activa

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

D.I.A.

Sistemas Operativos I @ (ITIS) 22

Comunicacin entre procesos (6)


Semforos

Package Semaforos is
type SEMAFOROS is private; procedure Inicializar(S: SEMAFOROS; Valor : INTEGER); procedure Bajar (S: SEMAFOROS); procedure Subir (S: SEMAFOROS); end Semaforos;

D.I.A.

Sistemas Operativos I @ (ITIS) 23

Comunicacin entre procesos (7)


Semforos
Program Cuenta_Eventos; Contador : INTEGER; S : SEMAFOROS; process Observador; repeat Esperar_Evento; Bajar (S); Contador := Contador + 1; Subir (S); forever; end Observador; process Reportero; repeat Bajar (S); Imprimir (Contador); Contador := 0; Subir (S); forever; end Reportero;
D.I.A. Sistemas Operativos I @ (ITIS) 24

begin Inicializar (S, 1); Observador; Reportero; end Cuenta_Eventos;

Comunicacin entre procesos (8)


Semforos
type SEMAFOROS is private; procedure Inicializar(S : SEMAFOROS; Valor : INTEGER); procedure Bajar (S : SEMAFOROS); procedure Subir (S : SEMAFOROS); private -- Inaccesible al usuario type SEMAFOROS is record Contador : INTEGER; Cola : COLA_PROCESOS; end; -procedure Inicializar (S : SEMAFOROS; Valor : INTEGER) is begin S.Contador := Valor; end Inicializar;

D.I.A.

Sistemas Operativos I @ (ITIS) 25

Comunicacin entre procesos (9)


Semforos
procedure Bajar (S : SEMAFOROS) is begin if S.Contador < 1 then Encolar (Este_Proceso, S.Cola); Suspender; -- Implica llamada al Planificador else S.Contador := S.Contador - 1; endif; end Bajar; procedure Subir (S : SEMAFOROS) is Proceso : ID_PROCESO; begin if s.Cola.Primero /= 0 then -- Si algun proc. Esperando Desencolar (Proceso, S.Cola); Preparar (Proceso); -- Llamada al Planificador else S.Contador := S.Contador + 1; endif; end Subir;
D.I.A. Sistemas Operativos I @ (ITIS) 26

Comunicacin entre procesos (10)


Paso de mensajes
Comunicacin entre Procesos
Memoria Compartida Variable Cerrojo Monitores Semforos Paso de Mensajes (No hay variables compartidas)

Primitivas (Llamadas al sistema): send (destino, &mensaje) receive (fuente, &mensaje) receive (ANY, &mensaje)

D.I.A.

Sistemas Operativos I @ (ITIS) 27

Comunicacin entre procesos (11)


Paso de mensajes
Proceso P1
send (P2, &mensaje1) receive (ANY, &destino2)

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

D.I.A.

Sistemas Operativos I @ (ITIS) 28

Comunicacin entre procesos (12)


Paso de mensajes Modelos comunicacin. Comunicacin directa

Cada proceso tiene su propio buzn.

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)

D.I.A.

Sistemas Operativos I @ (ITIS) 29

Comunicacin entre procesos (13)


Paso de mensajes
Los Buzones Son Compartidos Los mensajes se envan y reciben a/de buzones, no a procesos.
Obs. 1
Enviar (Buzn_1, Mensaje)

Modelos comunicacin. Comunicacin indirecta

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);

D.I.A.

Sistemas Operativos I @ (ITIS) 30

Comunicacin entre procesos (14)


Paso de mensajes Tamao del buzn
Capacidad Limitada (n mensajes)
Si hay espacio El emisor contina la ejecucin despus del envo Si est lleno - El emisor queda bloqueado hasta que haya espacio en el buzn para dejar un mensaje. o - Se devuelve un status = lleno

Asncrono

Capacidad Ilimitada
El emisor nunca se bloquea en el envo de mensajes

Capacidad Nula (rendez-vous)


El emisor queda bloqueado hasta que el receptor est listo para recibir el mensaje.
D.I.A. Sistemas Operativos I @ (ITIS)

Sncrono

31

Planificacin de procesos (1)

Rfaga de CPU larga Rfaga de CPU corta Esperando a E/S

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
D.I.A. Sistemas Operativos I @ (ITIS) 32

Planificacin de procesos (2)


Criterios:
Justicia (Fairness)
A trabajos parecidos, asignacin parecida de CPU (todos)

Eficiencia
% de CPU (y dispositivos de E/S) ocupada (todos)

Tiempo de retorno (turnaround)


Tiempo medio desde que entra un trabajo hasta que sale (batch)

Tiempo de respuesta (response time)


Tiempo entre que se da un comando y se obtiene la respuesta (interactive)

Tiempo de espera
Tiempo que pasa en la cola de preparados

Rendimiento (throughput)
Nmero de trabajos completados por unidad de tiempo (batch)
D.I.A. Sistemas Operativos I @ (ITIS) 33

Planificacin de procesos (3)


Balanceos:
(Batch). Ejecuto preferentemente trabajos pequeos
Alto rendimiento, pero mal turnaround para trabajos grandes.

(Batch + interactivos) preferencia a los interactivos; los batch de noche


Maximizo el rendimiento Para los interactivos buen tiempo de respuesta Para los batch mal turnaround

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
D.I.A. Sistemas Operativos I @ (ITIS) 34

Planificacin de procesos (4)


Categoras de algoritmos de planificacin:
Sistemas Batch
No expulsores o expulsores con un quantum grande Reducen cambios de contexto y mejoran el rendimiento FCFS, SJF, SRTN, por niveles

Sistemas interactivos
Expulsores: evita la monopolizacin de la CPU Round-Robin, prioridades, mltiples colas, SPN (envejecimiento)

Sistemas de tiempo real


Monotnico en frecuencia Deadline ms prximo el siguiente

D.I.A.

Sistemas Operativos I @ (ITIS) 35

Planificacin de procesos (5)


Sistemas Batch

Primero en llegar, primero servido (FCFS)


First-Come First-Served.
Es simple. Tiempo de espera variable. Raramente el mnimo. Desaprovecha los dispositivos de E/S Trabajo 1 2 3 0 Tiempo necesario 24 3 3 Tr. 2 Tr. 3 24 27 30

Trabajo 1

Tiempo medio de espera = (0+24+27) / 3 = 17


D.I.A. Sistemas Operativos I @ (ITIS) 36

Planificacin de procesos (6)


Sistemas Batch

Trabajo ms corto el prximo (SJF) Shortest Job First.


Ofrece siempre el mnimo tiempo medio de espera
Trabajo Tiempo necesario 1 24 2 3 3 3 Tr. 2 Tr. 3 0 3 6 Trabajo 1 30

Tiempo medio de espera = (0+3+6) / 3 = 3

Turnaround medio: (4a+3b+2c+d) / 4


D.I.A. Sistemas Operativos I @ (ITIS) 37

Planificacin de procesos (7)


Sistemas Batch

Trabajo ms corto el prximo (SJF)


Contraejemplo
C(1) D(1) E(1)

A(2) B(4)

Si SJC: A, B, C, D, E

tiempo medio de espera: 2,8

Si no SJC: B, C, D, E, A tiempo medio de espera: 2,6


D.I.A. Sistemas Operativos I @ (ITIS) 38

Planificacin de procesos (8)


Sistemas Batch

Tiempo restante menor, el siguiente (SRTN)


Shortest Remaining Time Next.
Variante expulsora del SJF.
Cuando llega un trabajo nuevo, comparar su peticin de tiempo con el tiempo que le queda al actual. Seleccionar el menor. Favorece a los trabajos nuevos
A(2) B(4) C(1) D(1) E(1)

Tiempo medio de espera?

0
D.I.A.

Sistemas Operativos I @ (ITIS) 39

Planificacin de procesos (9)


Sistemas Batch

Planificacin a tres niveles


CPU Planificador CPU
Nuevo trabajo
Cola de entrada

Memoria Principal
Planificador Memoria

Disco

Planificador de admisin
D.I.A.

Sistemas Operativos I @ (ITIS) 40

Planificacin de procesos (10)


Sistemas Interactivos

Round-Robin Robo de ciclo


Todos los procesos tienen la misma importancia. A cada proceso se le asigna un quantum (rodaja) de tiempo.
Proceso actual B Proceso siguiente F Proceso actual

Tamao del quantum? - Si demasiado pequeo, poco aprovechamiento CPU - Si demasiado grande, pobre tiempo de respuesta
D.I.A. Sistemas Operativos I @ (ITIS) 41

Planificacin de procesos (11)


Sistemas Interactivos

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

Asignacin de prioridades: esttica o dinmica


Esttica: por pago, por clases de usuarios Dinmica:
1/f, /* f = fraccin consumida del ltimo quantum */

Clases de prioridad
D.I.A. Sistemas Operativos I @ (ITIS) 42

Planificacin de procesos (12)


Sistemas Interactivos

Por prioridades (clases de prioridad)


Cabeceras de colas Prioridad 4 Prioridad 3 Prioridad 2 Prioridad 1 (Mnima prioridad) Procesos listos para ejecutar

(Mxima prioridad)

D.I.A.

Sistemas Operativos I @ (ITIS) 43

Planificacin de procesos (13)


Sistemas Interactivos

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

Cuando un proceso se convierte en interactivo: a la clase ms alta

XDS 940: 4 clases de prioridad:


Terminal, I/O, short quantum, long quantum
D.I.A. Sistemas Operativos I @ (ITIS) 44

Planificacin de procesos (14)


Sistemas Interactivos

Shortest Process Next (Envejecimiento)


Variante del SJF para interactivo, expulsor SJF genera el mnimo tiempo medio de espera Se puede aplicar SJF a sistemas interactivos? Algoritmo del envejecimiento (aging)
Estimacin actual basada en comportamiento pasado Primer comando: T0 Segundo comando: T1 Estimacin del siguiente: aT0 + (1-a)T1 Si a=1/2, sumar el nuevo valor a la estimacin actual y dividir por 2.

D.I.A.

Sistemas Operativos I @ (ITIS) 45

Planificacin de procesos (15)


Planificacin de threads
Orden en que se ejecutan los threads
2. El run-time system selecciona un thread

Proceso A

Proceso B

1 2 3

1. El Kernel selecciona un proceso

Posible: Imposible:

A1, A2, A3, A1, A2, A3 A1, B1, A2, B2, A3, B3

Posible planificacin de threads en espacio de usuario


Quantum por proceso de 50-msec Cada threads ejecuta 5 msec/CPU burst
D.I.A. Sistemas Operativos I @ (ITIS) 46

Planificacin de procesos (16)


Planificacin de threads
Proceso A Proceso B

1
Espacio de Usuario

Espacio del Kernel

1. El Kernel selecciona un thread

Posible: Tambin posible:

A1, A2, A3, A1, A2, A3 A1, B1, A2, B2, A3, B3

Posible planificacin de threads en espacio de kernel


Quantum por proceso de 50-msec Cada threads ejecuta 5 msec/CPU burst
D.I.A. Sistemas Operativos I @ (ITIS) 47

You might also like