Está en la página 1de 23

Marisa Gil

Introduccin a los Sistemas Operativos

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

Introducci als Sistemes Operatius

Marisa Gil

PROCESO Y FLUJO

Ejecucin de un programa

PC

secuencia de cdigo que ir recorriendo el procesador -dnde empieza: 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

Introducci als Sistemes Operatius

Marisa Gil

PROCESO Y FLUJO

Qu sabe el SO de un programa en ejecucin?


Usuario que lo ejecuta (asignacin justa de recursos) Momento en que ha empezado la ejecucin Tiempo que lleva ejecutndose (contabilidad de recursos) Lugar de memoria que ocupa Cantidad de memoria que ocupa

Hay ms de un programa en ejecucin


Identicador nico Prioridad

Introducci als Sistemes Operatius

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.

Introducci als Sistemes Operatius

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:

espacio de direcciones (memoria total del proceso) datos cdigo

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

Introducci als Sistemes Operatius

Marisa Gil

PROCESO Y FLUJO

Sistemas Multiprogramados
(dibujo extrado de Stallings, pg. 115)

Varios programas en memoria, se reparten el uso del procesador


MEMORIA PRINCIPAL Contador de programa

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

Introducci als Sistemes Operatius

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

Introducci als Sistemes Operatius

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

Introducci als Sistemes Operatius

Marisa Gil

CONCURRENCIA

Cooperan en realizar un trabajo: ltros

$ who | wc -l stdin who stdout wc -l stdout

Introducci als Sistemes Operatius

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.

Introducci als Sistemes Operatius

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

Introducci als Sistemes Operatius

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:

espacio de direcciones (memoria total del proceso) datos cdigo

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

Introducci als Sistemes Operatius

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

pila de cada ujo

Se diferencia el objeto proceso en task y thread

Introducci als Sistemes Operatius

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)

Introducci als Sistemes Operatius

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

Flujo: unidad de ejecucin


cdigo pila registros del procesador

En UNIX cada proceso slo puede tener un ujo:


el concepto proceso engloba todo. Los signals permiten que el proceso sea avisado de acontecimientos. A travs del sistema de cheros, los procesos pueden pasarse datos. El espacio de direcciones es privado para cada proceso (para cada ujo).

Introducci als Sistemes Operatius

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.

Introducci als Sistemes Operatius

16

Marisa Gil

CONCURRENCIA

Ventajas de la Programacin Concurrente


Programacin modular
Considerar aisladamente cada tarea

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

Atencin a varias peticiones simultneas (sistemas distribuidos)

Introducci als Sistemes Operatius

17

Marisa Gil

CONCURRENCIA

Algunos ejemplos de concurrencia


Master/Slave S
Peticiones

M S
cola de trabajos

Spooler

Dispositivo Datos

Filtro

Pantalla

Productor/Consumidor

Introducci als Sistemes Operatius

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

La gestin de la concurrencia se hace por software


Sistema operativo Libreras No consideramos hardware especializado

Introducci als Sistemes Operatius

19

Marisa Gil

CONCURRENCIA

EJEMPLO: Calcular concurrentemente f(x) = 2(3x + 4)


/*padre*/ main() f1, f2,f3 X

f1 = crear_uxe(ux1, (long)0); f2 = crear_uxe(ux2,(long)0); f3 = crear_uxe(ux3,(long)0);

/*ujo 1*/ /*ujo 3*/ /*ujo 2*/

Introducci als Sistemes Operatius

20

Marisa Gil

CONCURRENCIA

Relacin entre la librera de ujos y el SO (I)


OTRO PROGRAMA (CON O SIN FLUJOS)
READY

PROGRAMA CON FLUJOS

cambio de contexto a nivel usuario

RUN

SISTEMA OPERATIVO CON PROCESOS


cambio de contexto a nivel kernel

PROCESADOR

Introducci als Sistemes Operatius

21

Marisa Gil

CONCURRENCIA

Relacin entre la librera de ujos y el SO (II)


OTRO PROGRAMA
READY

PROGRAMA CON FLUJOS

RUN

SISTEMA OPERATIVO CON FLUJOS

PROCESADOR

Introducci als Sistemes Operatius

22

Marisa Gil

CONCURRENCIA

Relacin entre la librera de ujos y el SO (III)


OTRO PROGRAMA
READY

PROGRAMA CON FLUJOS

RUN

SISTEMA OPERATIVO CON FLUJOS

MULTIPROCESADOR

Introducci als Sistemes Operatius

23

También podría gustarte