Está en la página 1de 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

Procesos

A
B

Cambio de
proceso

D
C
B
A
Tiempo

(a)

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

(b)

(c)

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

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

Condiciones que
terminan un proceso

1.
2.
3.
4.

Normal exit (voluntario)


Error exit (voluntario)
Fatal error (involuntario)
Asesinado por otro proceso
(involuntario, seal) o
suicidado (voluntario, seal)

Todos invocan fork()

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

planificador

exit
Ejecutando
1

3
Bloqueado

Preparado

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.

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

Campos en una entrada a la tabla


D.I.A.

Gestin de Ficheros
Directorio raz
Directorio de trabajo
Descriptores de ficheros
UID
GID

de procesos

Sistemas Operativos I @ (ITIS)


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

Thread
Espacio
del
Kernel

D.I.A.

Kernel

Kernel

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

Tambin:

void pthread_exit (void *estado)


pthread_exit (NULL)
D.I.A.

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

Kernel
Conexin de red

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

(b)

(a)

D.I.A.

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

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 procesos

D.I.A.

Tabla de threads

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

Tabla de procesos

Run-time system
Sistemas Operativos I @ (ITIS)
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;

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

process Reportero;
repeat
Bajar (S);
Imprimir (Contador);
Contador := 0;
Subir (S);
forever;
end Reportero;
D.I.A.

Sistemas Operativos I @ (ITIS)


24

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)

D.I.A.

receive (ANY, &mensaje)

Sistemas Operativos I @ (ITIS)


27

Comunicacin entre procesos (11)


Paso de mensajes
Proceso P1

Proceso P2

send (P2, &mensaje1)

receive (ANY, &destino2)

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.

D.I.A.

Enviar (P2, Mensaje)

Recibir (P1, Mensaje)

Proc.
1

Proc.
2

Recibir (P2, Mensaje)

Enviar (P1, Mensaje)

Sistemas Operativos I @ (ITIS)


29

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)

Obs.
2
Enviar (Buzn_1, Mensaje)
Enviar (Buzn_2, Mensaje)

Recibir (Buzn_1, Mensaje);

Rep.
1

Buzn_2

Recibir (Buzn_2, Mensaje);

Obs.
3
Enviar (Buzn_2, Mensaje)

D.I.A.

Rep.
2
Recibir (Buzn_2, Mensaje);

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.

Asncrono

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.
D.I.A.

Sistemas Operativos I @ (ITIS)


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

Tiempo necesario
24
3
3

Trabajo 1
0

Tr. 2 Tr. 3
24
27
30

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

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
C(1)
D(1)
E(1)

A(2)
B(4)

0
D.I.A.

Tiempo medio de espera?

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
de admisin
D.I.A.

Disco

Planificador
Memoria

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

Procesos listos para ejecutar

(Mxima prioridad)

Prioridad 4
Prioridad 3
Prioridad 2
Prioridad 1

D.I.A.

(Mnima prioridad)

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)

D.I.A.

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.

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

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

También podría gustarte