Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Concurrencia y paralelismo
1. Ejecucin de programas. Procesos. 2. Multiprogramacin
Bibliografa
Silberschatz and Galvin Sistemas Operativos. Conceptos fundamentales. Parte I: Aspectos generales Tanembaum Operating Systems. Design and implementation. Chap. 1: Introduction Chap. 2.1: Introduction to processes Stallings Sistemas Operativos Cap. 3: Descripcin y control del proceso Birrell An Introduction to Programming with threads Digital SRC, 1.989 Thuan Q.Pham and PanKaj K.Garg Multithreaded Programming with Win32 Prentice-Hall, PTR, 1.999
Marisa Gil
PROCESO Y FLUJO
Ejecucin de un programa
PC
PROCESADOR
-dnde guarda la informacin local: SP - a qu memoria se reere: DS, CS,... AX BX SI DI - adems, el procesador tiene los registros generales, que utiliza para almacenar datos temporales del programa: AX, BX,... (R0, R1,...)
SP
Marisa Gil
PROCESO Y FLUJO
Marisa Gil
PROCESO Y FLUJO
El PROCESO
El proceso es un objeto de sistema A cada instancia de programa en ejecucin corresponde un proceso proc1 init
getty procx
getty procy
getty procv
getty procz
En el objeto proceso el SO tiene toda la informacin sobre el entorno de ejecucin de una instancia de programa para asignarle el recurso procesador.
Marisa Gil
PROCESO Y FLUJO
El PROCESO
Podemos representar cada objeto proceso por el cdigo que ejecuta, los datos que manipula, los recursos que utiliza y su pila:
pila
Es lo que se conoce tambin como MQUINA VIRTUAL: cada programa tiene la ilusin de estar trabajando con una mquina dedicada a l: procesador, memoria, recursos,...
Marisa Gil
PROCESO Y FLUJO
Sistemas Multiprogramados
(dibujo extrado de Stallings, pg. 115)
dispatcher
a
PROCESO A
b
PROCESO B
c
PROCESO C
a: direccin de inicio del programa A b: direccin de inicio del programa B c: direccin de inicio del programa C d: direccin de inicio del dispatcher
Marisa Gil
PROCESO Y FLUJO
Sistemas Multiprogramados
1. a+0 2. a+1 3. a+2 4. a+3 5. a+4 6. a+5 7. d+0 8. d+1 9. d+2 10. d+3
11. d+4
Time out
29. d+0 30. d+1 31. d+2 32. d+3 33. d+4 34. d+5 35. a+6 36. a+7 37. a+8 38. a+9 39. a+10 40. a+11 Time out 41. d+0 42. d+1 43. d+2 44. d+3 45. d+4 46. d+5 47. c+6 48. c+7 49. c+8 50. c+9 51. c+10 52. c+11 Time out
12. d+5 13. b+0 14. b+1 15. b+2 16. b+3 17. d+0 18. d+1 19. d+2 20. d+3 21. d+4 22. d+5 23. c+0 24. c+1 25. c+2 26. c+3 27. c+4 28. c+5
Peticin de E/S
Time out
Marisa Gil
CONCURRENCIA
Sistemas multiprogramados
Varios procesos coexisten en el mismo tiempo en el sistema.
Comparten recursos del sistema impresora red cheros Participan en la realizacin de un trabajo comandos con pipes procesos padre/hijos/hermanos
Marisa Gil
CONCURRENCIA
Marisa Gil
CONCURRENCIA
Concurrencia y paralelismo
Hay concurrencia entre varios procesos cuando existen al mismo tiempo. PROCESOS CONCURRENTES Hay paralelismo entre varios procesos cuando se ejecutan al mismo tiempo. PROCESOS PARALELOS El paralelismo requiere un soporte fsico: varios procesadores. La concurrencia es el caso general y el paralelismo un caso particular. La concurrencia (y el paralelismo) se reere a la ejecucin de cdigo: Hay procesos concurrentes y ujos concurrentes. Hablaremos en general de ujos concurrentes: Pueden ser del mismo proceso o diferentes procesos. Pueden correr en un nico procesador o varios.
10
Marisa Gil
PROCESO Y FLUJO
El PROCESO
DEF(1): Denimos proceso como todas aquellas acciones ejecutadas por una CPU con un segmento dado como segmento descriptor, desde el primer momento que dicho segmento se convierte en segmento descriptor hasta el ltimo momento en que el segmento deja de serlo. As, un proceso tiene un principio muy denido y si acaba, tiene un nal igualmente denido (VYSSOTSKY et al. , 1965, MULTICS). Son sinnimos de proceso: entorno de ejecucin, unidad de asignacin de recursos, task,...
11
Marisa Gil
PROCESO Y FLUJO
El PROCESO
Podemos representar cada objeto proceso por el cdigo que ejecuta, los datos que manipula, los recursos que utiliza y su pila:
pila
Es lo que se conoce tambin como MQUINA VIRTUAL: cada programa tiene la ilusin de estar trabajando con una mquina dedicada a l: procesador, memoria, recursos,...
12
Marisa Gil
PROCESO Y FLUJO
El FLUJO (Thread)
Para que un programa pueda ejecutar diferentes partes en paralelo, en una mquina multiprocesador:
buscar un modelo de MQUINA VIRTUAL MULTIPROCESADOR el SO asigna a un mismo proceso, varios procesadores al mismo tiempo.
espacio de direcciones
MEMORIA
segmento de datos
ujo en ejecucin
13
Marisa Gil
PROCESO Y FLUJO
El FLUJO
DEF (2): Una task es un entorno de ejecucin en el cual pueden correr threads. Como unidad bsica de asignacin de recursos, una task incluye un (...) espacio de direcciones y acceso protegido a los recursos del sistema (como procesadores,..., y memoria). La nocin de proceso en UNIX se representa en Mach por una task que tiene un nico thread de control. Un thread es una unidad bsica de utilizacin de la CPU. Es totalmente equivalente a un contador de programa independiente operando en una task. Todos los threads de una task comparten el acceso a todos los recursos de la task. (RASHID et al., 1988, diseadores de Mach)
14
Marisa Gil
PROCESO Y FLUJO
El proceso y el ujo
Proceso (o task): unidad de asignacin de recursos:
espacio de direcciones (registros de la MMU) tabla de canales (y por tanto, dispositivos asignados) etc....
15
Marisa Gil
PROCESO Y FLUJO
Libreras de ujos
Se ofrece la posibilidad de cambio de contexto, entidades de ujo y primitivas de sincronizacin Se ofrece un interfaz de trabajo, pero se puede acceder a cualquier rutina pblica. La planicacin de ujos es totalmente transparente al SO
No sabe la concurrencia que hay en la librera. Slo podr haber tanto paralelismo como procesadores virtuales ofrezca. Un bloqueo de un servicio del SO, impide la planicacin de cualquier ujo.
16
Marisa Gil
CONCURRENCIA
Aprovechar desde un programa el paralelismo (multiprocesadores). Tratar el trabajo con E/S lenta con ujos dedicados.
el ujo principal del programa puede seguir trabajando
17
Marisa Gil
CONCURRENCIA
M S
cola de trabajos
Spooler
Dispositivo Datos
Filtro
Pantalla
Productor/Consumidor
18
Marisa Gil
CONCURRENCIA
Programacin Concurrente
Avance de una tarea con mltiples puntos de ejecucin. Cada punto de ejecucin es un thread. El trabajo de cada thread se ve simultneo desde el programa. Son parte de la misma tarea y hay puntos de encuentro
Sincronizacin Comunicacin
19
Marisa Gil
CONCURRENCIA
20
Marisa Gil
CONCURRENCIA
RUN
PROCESADOR
21
Marisa Gil
CONCURRENCIA
RUN
PROCESADOR
22
Marisa Gil
CONCURRENCIA
RUN
MULTIPROCESADOR
23