Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cap2 Procesos
Cap2 Procesos
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.
Procesos (1)
El Modelo de Proceso
Un contador 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.
Condiciones que
terminan un proceso
1.
2.
3.
4.
D.I.A.
Procesos (3)
Grupos de procesos
Procesos (4)
Grupos de procesos
D.I.A.
Procesos (5)
Estados de procesos
planificador
exit
Ejecutando
1
3
Bloqueado
Preparado
fork()
Posibles estados de un procesos
Ejecutndose
Bloqueado
Preparado
D.I.A.
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
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.
D.I.A.
Threads (1)
El modelo de thread
Proceso 2 Proceso 3
Proceso
Espacio
de
Usuario
Thread
Thread
Espacio
del
Kernel
D.I.A.
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
Tambin:
pthread_self()
pthread_yield()
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.
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
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)
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
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.
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.
D.I.A.
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.
D.I.A.
D.I.A.
D.I.A.
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.
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.
D.I.A.
Paso de Mensajes
(No hay variables
compartidas)
D.I.A.
Proceso P2
D.I.A.
D.I.A.
Proc.
1
Proc.
2
Buzn_1
Obs.
2
Enviar (Buzn_1, Mensaje)
Enviar (Buzn_2, Mensaje)
Rep.
1
Buzn_2
Obs.
3
Enviar (Buzn_2, Mensaje)
D.I.A.
Rep.
2
Recibir (Buzn_2, Mensaje);
Asncrono
o
- Se devuelve un status = lleno
Capacidad Ilimitada
El emisor nunca se bloquea en el envo de mensajes
Sncrono
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.
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)
D.I.A.
Sistemas interactivos
Expulsores: evita la monopolizacin de la CPU
Round-Robin, prioridades, mltiples colas, SPN (envejecimiento)
D.I.A.
Tiempo necesario
24
3
3
Trabajo 1
0
Tr. 2 Tr. 3
24
27
30
Trabajo 1
30
A(2)
B(4)
Si SJC: A, B, C, D, E
A(2)
B(4)
0
D.I.A.
Memoria
Principal
Planificador
de admisin
D.I.A.
Disco
Planificador
Memoria
Proceso siguiente
F
Proceso actual
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
D.I.A.
(Mxima prioridad)
Prioridad 4
Prioridad 3
Prioridad 2
Prioridad 1
D.I.A.
(Mnima prioridad)
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
D.I.A.
Proceso A
Proceso B
1 2 3
Posible:
Imposible:
Proceso B
Espacio
de
Usuario
Espacio
del
Kernel
Posible:
Tambin posible: