Procesos II Contenido Colas utilizadas para la Planificación

Anuncio
Contenido
Procesos II
• Diagramas de Estados de Procesos
• Threads: Hilos de Ejecución
M. B. Ibáñez
M. B. Ibáñez
Colas utilizadas para la
Planificación de Procesos
Modelo de Procesos de 2 estados
Dispatch
• El objetivo de la multiprogramación es tener
procesos corriendo todo el tiempo para maximizar
la utilización del CPU
• Mientras un proceso corre otros esperan en otras
colas:
–
–
–
–
•
•
•
•
Enter
Not Running
Running
Cola de tareas (cuando el proceso entra)
Cola de procesos Ready
Una cola para cada dispositivo de E/S
etc
Queue
Dispatch
Enter
Processor
M. B. Ibáñez
Creación de Procesos
Process Termination
M. B. Ibáñez
Exit
Pause
M. B. Ibáñez
Llegada de un proceso batch
Un usuario hace login
Proveer un servicio como “printing”
Expandir un proceso ya creado
Exit
Pause
•
•
•
•
Tarea Batch solicita instrucción Halt
Usuario logs off
Un proceso termina de utilizar un recurso
Condiciones de error y falla
M. B. Ibáñez
1
Razones para terminación
•
•
•
•
•
Razones para Terminación
• Falla de E/S
• Instrucción inválida
Terminación normal
Tiempo terminado
No hay memoria disponible
Violación de límites
Error de protección
– Ocurre cuando se trata de ejecutar datos
• Instrucciones privilegiadas
• Intervención del Sistema de Operación
– Por ejemplo cuando ocurre un interbloqueo
– Ejemplo, tratar de escribir en un archivo read-only
• El padre termina por lo tanto el hijo también
• Error aritmético
M. B. Ibáñez
M. B. Ibáñez
Modelo de Procesos de 5 estados
Con una sola cola para procesos bloqueados
Ready Queue
Dispatch
Admit
New
Dispatch
Admit
Running
Ready
Release
Exit
Timeout
Event Occurs
Time-out
Event Wait
Blocked
Event Wait
Event
Occurs
M. B. Ibáñez
Event 1
Occurs
Ready Queue
Event 1 Queue
Event 2 Queue
Event 2
Occurs
Dispatch
Blocked Queue
M. B. Ibáñez
Otra visión
Modelo de Colas
Admit
Release
Processor
Processor
Release
Event 1 Wait
Event 2 Wait
Event n Queue
Event n
Occurs
Event n Wait
M. B. Ibáñez
M. B. Ibáñez
2
Diagrama de Transición de
Procesos con estados “suspend”
Dispatch
Admit
New
Ready
Running
Release
Exit
Timeout
Activate
Event
Occurs
Suspend
Event
Wait
Blocked
Suspend
Procesos suspendidos
• El procesador es mucho más rápido que los
dispositivos de E/S, todos los procesos están
esperando por E/S
• Llevar esos procesos a disco para liberar
memoria
• Un proceso bloqueado se convierte en
suspendido cuando es llevado a disco
M. B. Ibáñez
M. B. Ibáñez
Revisión del Concepto de
Proceso
Threads
• Unidad de pertenencia de
recursos
– Espacio para la imágen del
proceso
– Recursos tales como
memoria, archivos etc
• Unidad de despacho
– Estado de ejecución
(running, ready, …)
– Entidad que es planificada y
despachada por el S. O.
Process
Control
Block
User
Address
Space
• La unidad de
despacho es
denominada thread
• La unidad poseedora
de recursos es
denominada proceso o
tarea
User
Stack
Kernel
Stack
Thread
Thread
Thread
Control
Block
Thread
Control
Block
Process
Control
Block
User
Stack
User
Stack
User
Stack
User
Address
Space
Kernel
Stack
Kernel
Stack
Kernel
Stack
M. B. Ibáñez
M. B. Ibáñez
Threads y Procesos
Procesos y Threads
• Procesos
Java
MS-DOS
run-time engine
one process
one thread
one process
multiple threads
Windows NT,
Solaris
UNIX
multiple processes
one thread per process
multiple processes
multiple threads per process
M. B. Ibáñez
• Threads
– Espacio virtual que
contiene la imágen del
proceso
– Acceso protegido a
•
•
•
•
Thread
Thread
Control
Block
Procesadores
Otros procesos
Archivos
Recursos de E/S
– Estado de ejecución
– Contexto salvado
cuando no corre
– Una tarea en ejecución
– Almacenamiento para
variables locales
– Acceso a la memoria y
los recursos del
proceso
M. B. Ibáñez
3
Ejemplos de usos de threads en sistemas
de multiprocesamiento
Beneficios de los threads
• Toma menos tiempo crear un thread en un
proceso que crear un nuevo proceso
• Toma menos tiempo terminar un thread
• Toma menos tiempo cambiar de un thread a
otro dentro de un mismo proceso
• Trabajo en foreground y background
•
Ejemplo: programa con interfaz. Un thread pudiera mostrar menus y
leer la entrada del usuario mientras otro ejecuta los comandos del
usuario y actualiza la pantalla.
• Procesamiento asíncrono
– Como protección ante una falla, se puede diseñar un procesador de
palabras que escriba su RAM buffer en disco cada minuto
• Velocidad de Ejecución
– Un proceso con varios threads puede calcular un batch de datos mientras
lee el próximo desde un dispositivo
M. B. Ibáñez
M. B. Ibáñez
Operaciones asociadas con el
cambio de estado en un thread
Sincronización de threads
• Spawn
– Cuando un proceso es spawned, el thread para ese proceso también es spawned
– Un thread dentro de un proceso puede spawn otro thread dentro del mismo proceso
• Block
– El procesador puede ejecutar otro thread listo para ejecución
• Unblock
– Cuando el evento por el cual el thread está esperando ocurre, el thread es llevado a
estado ready
• Finish
– Cuando un thread termina, su contexto y pila son desasignados
• Todos los threads de un proceso comparten el
mismo espacio de direcciones y otros recursos
• Cualquier alteración del recurso de un thread
afecta el medio ambiente del resto de los threads
del mismo proceso
• Por lo tanto, es necesario sincronizar las
actividades de varios threads de manera que los
unos no interfieran con los otros corrompiendo
estructuras de datos
M. B. Ibáñez
M. B. Ibáñez
Ejemplo: Concurso
¿Quién gana?
User-level Threads
static int i
Thread 1
Thread 2
i=0
i=0
while ( i < 10 ) {
while ( i > -10 ) {
i++;
i--;
}
}
System.out.println
System.out.println
(“gana 1”);
(“gana 2”);
M. B. Ibáñez
• Todo el trabajo de manejo de threads es hecho por la
aplicación y el kernel no conoce de la existencia de threads
• Cualquier aplicación puede ser programada para ser
multithreaded utilizando la biblioteca de threads
• La biblioteca de threads contiene código para crear y
destruir threads, para pasar mensajes y data entre los
threads, para planificar la ejecución de threads, y para
salvar y recuperar contextos de threads.
M. B. Ibáñez
4
Relación entre planificación de
threads y de procesos
Process B
Kernel
1 <thread 3 running>
2 <thread 3 asks for an I/O operation>
3 <thread 3 running>
1 <process B running>
2 <process B running>
3 <process B blocked waiting for an
I/O operation>
4 <process C running>
5 <I/O operation completed>
6 <process B ready>
7 <process B running>
4 <thread 3 running>
5 <thread 3 running>
6 <thread 3 running>
7 <thread 3 running>
Ventajas del uso de
User-Level Threads
• Cambiar de un thread a otro no requiere de
privilegios del kernel
• El planificador puede ser específico a la
aplicación
• Pueden correr en cualquier sistema de
operación
M. B. Ibáñez
M. B. Ibáñez
Desventajas del uso de
User-Level Threads
Kernel-level Threads
• En un sistema de operación la mayor parte
de las llamadas son bloqueantes
– Cuando un thread ejecuta una llamada al
sistema de operación, no solo se bloquea ese
proceso sino todos los demás en ese proceso
• En una estrategia pura de ULT, una
aplicación multithreaded no puede sacar
ventaja del multiprocesamiento
M. B. Ibáñez
• Todo el trabajo de manejo de threads es
hecho por el kernel
• El kernel mantiene información del
contexto del proceso en su totalidad y para
cada thread dentro del proceso
• La planificación del kernel se hace en base
a los threads
M. B. Ibáñez
5
Descargar