Vous êtes sur la page 1sur 47

Procesos y Threads

2.1 Procesos
2.2 Threads
2.3 Planificacin de Procesos
2.4 Comunicacin entre procesos

1
Procesos (1)
El Modelo de Proceso

Un contador de programa

Cuatro contadores de programa


Cambio de
A proceso
B D

Procesos
C
C B
A B C D
D A
Tiempo
(a) (b) (c)

a. Multiprogramacin de 4 programas
b. Modelo conceptual de 4 procesos secuenciales independientes
c. Solo un proceso activo en cada instante

2
Procesos (2)
Creacin/Terminacin de procesos

Principales eventos que causan la Condiciones que


creacin de procesos terminan un proceso
1. Inicializacin del sistema
(demonios) [comando ps] 1. Normal exit (voluntario)
2. Ejecucin de la llamada al 2. Error exit (voluntario)
sistema para crear procesos 3. Fatal error (involuntario)
3. El usuario solicita un nuevo 4. Asesinado por otro proceso
proceso (comando) (involuntario, seal) o
4. Inicio de un trabajo batch suicidado (voluntario, seal)

Todos invocan fork()

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

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.

5
Procesos (5)
Estados de procesos

exit planificador
Ejecutando 1. El proceso se bloquea esperando datos de
entrada.
1 2 2. El planificador selecciona otro proceso.
3 3. El planificador selecciona este proceso.
Bloqueado Preparado 4. Los datos de entrada estn disponibles.
4
fork()

Posibles estados de un procesos


Ejecutndose
Bloqueado
Preparado

6
Procesos (6)
Implementacin de procesos
Gestin de procesos Gestin de Memoria Gestin de Ficheros
Registros Directorio raz
Contador de programa Puntero al segmento
de cdigo Directorio de trabajo
Palabra de estado del programa Descriptores de ficheros
Puntero de pila Puntero al segmento
UID
Estado del proceso de datos
Prioridad GID
Puntero al segmento
Parmetros de planificacin
Identificar de proceso de pila
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

Campos en una entrada a la tabla 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.

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 Thread
Espacio
del Kernel Kernel
Kernel

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 Tambin:


void pthread_exit (void *estado) pthread_self()
pthread_exit (NULL) 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 Cach de la
pgina web

Espacio
del Kernel
Kernel

Conexin de red

Un servidor web multithread

12
Threads (5)
Uso de threads

while (TRUE){ while (TRUE){


obtener_siguiente_peticin(&buf); esperar_trabajo(&buf);
entrega_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)

Dispatcher (a)
Cmo sin threads?
Worker (b)

13
Threads (6)
Implementacin de threads en espacio de kernel

Proceso Thread

Espacio
de
Usuario

Espacio
del Kernel
Kernel

Tabla de procesos Tabla de threads

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

Espacio
del Kernel
Kernel

pthread_create
pthread_join Tabla de threads Tabla de procesos
pthread_exit
pthread_self Run-time system
pthread_yield

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
Planificacin de procesos (1)

Rfaga de CPU larga


Esperando a E/S
Rfaga de CPU corta

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

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

19
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

20
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

21
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 Tiempo necesario


1 24
2 3
3 3

Trabajo 1 Tr. 2 Tr. 3


0 24 27 30

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

22
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 Trabajo 1


0 3 6 30

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

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


23
Planificacin de procesos (7)
Sistemas Batch

Trabajo ms corto el prximo (SJF)


Contraejemplo

C(1)
A(2) D(1)
B(4) E(1)

0 1 2 3 4 5 6 7

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

24
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
C(1)
A(2) D(1) Tiempo medio de espera?
B(4) E(1)

0 1 2 3 4 5 6 7

25
Planificacin de procesos (9)
Sistemas Batch

Planificacin a tres niveles

CPU

Planificador
CPU
Nuevo
trabajo
Cola de entrada
Memoria Disco
Principal
Planificador
de admisin Planificador
Memoria

26
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 Proceso siguiente Proceso actual

B F D G A F D G A B

Tamao del quantum?


- Si demasiado pequeo, poco aprovechamiento CPU
- Si demasiado grande, pobre tiempo de respuesta
27
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

28
Planificacin de procesos (12)
Sistemas Interactivos

Por prioridades (clases de prioridad)


Cabeceras de Procesos listos para ejecutar
colas
(Mxima prioridad)
Prioridad 4

Prioridad 3

Prioridad 2

Prioridad 1
(Mnima prioridad)

29
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

30
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.

31
Planificacin de procesos (15)
Planificacin de threads
Orden en que se Proceso A Proceso B
ejecutan los threads

2. El run-time
system 1 2 3
selecciona un
thread

1. El Kernel selecciona un proceso

Posible: A1, A2, A3, A1, A2, A3


Imposible: 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

32
Planificacin de procesos (16)
Planificacin de threads
Proceso A Proceso B

1 3 2
Espacio
de
Usuario

Espacio
del 1. El Kernel selecciona un thread
Kernel
Posible: A1, A2, A3, A1, A2, A3
Tambin posible: 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

33
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

34
Comunicacin entre procesos (2)
Exclusin mutua con espera activa

Mecanismo: Inhibir interrupciones

1. entrar: inhibir; salir: permitir


2. 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

35
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

36
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

37
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

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

39
Comunicacin entre procesos (7)
Semforos
Program Cuenta_Eventos;
Contador : INTEGER; begin
S : SEMAFOROS; Inicializar (S, 1);
Observador;
process Observador; Reportero;
repeat end Cuenta_Eventos;
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;

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

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

42
Comunicacin entre procesos (10)
Paso de mensajes
Comunicacin
entre Procesos

Memoria Compartida Paso de Mensajes


Variable Cerrojo
(No hay variables
Monitores
compartidas)
Semforos

Primitivas (Llamadas al sistema):

send (destino, &mensaje)

receive (fuente, &mensaje) receive (ANY, &mensaje)

43
Comunicacin entre procesos (11)
Paso de mensajes

Proceso P1 Proceso P2

send (P2, &mensaje1) receive (P1, &destino1)

receive (ANY, &destino2) 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

44
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. Proc.
1 2

Recibir (P2, Mensaje) Enviar (P1, Mensaje)

45
Comunicacin entre procesos (13)
Paso de mensajes
Modelos comunicacin. Comunicacin indirecta
Los Buzones Son Compartidos
Los mensajes se envan y reciben a/de buzones, no a procesos.

Obs.
1 Buzn_1
Enviar (Buzn_1, Mensaje) Recibir (Buzn_1, Mensaje);

Obs. Rep.
2 Buzn_2
1
Enviar (Buzn_1, Mensaje) Recibir (Buzn_2, Mensaje);
Enviar (Buzn_2, Mensaje)

Obs. Rep.
3 2
Enviar (Buzn_2, Mensaje) Recibir (Buzn_2, Mensaje);

46
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 Asncrono


haya espacio en el buzn para dejar
un mensaje.
o
- Se devuelve un status = lleno

Capacidad Ilimitada
El emisor nunca se bloquea en el envo de mensajes
Capacidad Nula (rendez-vous) Sncrono
El emisor queda bloqueado hasta que el receptor est
listo para recibir el mensaje.

47

Vous aimerez peut-être aussi