23
Marisa Gil Introducció als Sistemes Operatius 1 Concurrencia y paralelismo 1. Ejecución de programas. Procesos. 2. Multiprogramación Bibliografía 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: Descripción 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ón a los Sistemas Operativos

Concurrencia y paralelismo - Staffpeople.ac.upc.edu/marisa/miso/concurrencia.pdf · Sistemas Operativos. Conceptos fundamentales. ... • A través del sistema de ficheros, los procesos

Embed Size (px)

Citation preview

Marisa Gil

Introducció als Sistemes Operatius 1

Concurrencia y paralelismo

1. Ejecución de programas. Procesos.2. Multiprogramación

Bibliografía

Silberschatz and GalvinSistemas Operativos. Conceptos fundamentales.Parte I: Aspectos generales

TanembaumOperating Systems. Design and implementation.Chap. 1: IntroductionChap. 2.1: Introduction to processes

StallingsSistemas OperativosCap. 3: Descripción y control del proceso

BirrellAn Introduction to Programming with threadsDigital SRC, 1.989

Thuan Q.Pham and PanKaj K.GargMultithreaded Programming with Win32Prentice-Hall, PTR, 1.999

Introducción a los Sistemas Operativos

Marisa Gil

Introducció als Sistemes Operatius 2

Ejecución de un programa

PC secuencia de código que irárecorriendo el procesador

-dónde empieza: PC

-dónde guarda la informaciónlocal: SP

- a qué memoria se refiere: DS, CS,...

- además, el procesador tiene losregistros generales, que utiliza paraalmacenar datos temporales delprograma: AX, BX,... (R0, R1,...)

PROCESADOR

SPAXBXSIDI

PROCESO Y FLUJO

Marisa Gil

Introducció als Sistemes Operatius 3

¿Qué sabe el SO de un programa en ejecución?

• Usuario que lo ejecuta (asignación justa de recursos)• Momento en que ha empezado la ejecución• Tiempo que lleva ejecutándose (contabilidad de recursos)• Lugar de memoria que ocupa• Cantidad de memoria que ocupa

Hay más de un programa en ejecución

• Identificador único• Prioridad

PROCESO Y FLUJO

Marisa Gil

Introducció als Sistemes Operatius 4

El PROCESO

• El proceso es un objeto de sistema• A cada instancia de programa en ejecución corresponde un proceso

• En el objeto proceso el SO tiene toda la información sobre el entorno de ejecu-ción de una instancia de programa para asignarle el recurso procesador.

init

getty getty getty getty

proc1

procx procy proczprocv

PROCESO Y FLUJO

Marisa Gil

Introducció als Sistemes Operatius 5

El PROCESO

Podemos representar cada objeto proceso por el código que eje-cuta, los datos que manipula, los recursos que utiliza y supila:

Es lo que se conoce también como MÁQUINA VIRTUAL:cada programa tiene la “ilusión” de estar trabajando con una

máquina “dedicada” a él: procesador, memoria, recursos,...

datos

pila

direcciones

código

espacio de(memoria total del proceso)

PROCESO Y FLUJO

Marisa Gil

Introducció als Sistemes Operatius 6

Sistemas Multiprogramados(dibujo extraído de Stallings, pág. 115)

• Varios programas en memoria, se reparten el uso del procesador

MEMORIA PRINCIPAL

dispatcher

PROCESO A

PROCESO B

PROCESO C

Contador de programa

a

b

ca: dirección de inicio del programa Ab: dirección de inicio del programa Bc: dirección de inicio del programa Cd: dirección de inicio del dispatcher

d

PROCESO Y FLUJO

Marisa Gil

Introducció als Sistemes Operatius 7

Sistemas Multiprogramados

1. a+02. a+13. a+24. a+35. a+46. a+5

Time out

7. d+08. d+19. d+2

10. d+311. d+412. d+513. b+014. b+115. b+216. b+3

Petición de E/S

17. d+018. d+119. d+220. d+321. d+422. d+523. c+024. c+125. c+226. c+327. c+428. c+5

Time out

29. d+030. d+131. d+232. d+333. d+434. d+535. a+636. a+737. a+838. a+939. a+1040. a+11

Time out

41. d+042. d+143. d+244. d+345. d+446. d+547. c+648. c+749. c+850. c+951. c+1052. c+11

Time out

PROCESO Y FLUJO

Marisa Gil

Introducció als Sistemes Operatius 8

Sistemas multiprogramados

Varios procesos coexisten en el mismo tiempo en el sistema.

• Comparten recursos del sistemaimpresoraredficheros

• Participan en la realización de un trabajocomandos con pipesprocesos padre/hijos/hermanos

CONCURRENCIA

Marisa Gil

Introducció als Sistemes Operatius 9

Cooperan en realizar un trabajo: filtros

$ who | wc -l

who wc -l

stdout

stdin stdout

CONCURRENCIA

Marisa Gil

Introducció als Sistemes Operatius 10

Concurrencia y paralelismo

• Hayconcurrencia entre varios procesos cuandoexisten al mismo tiempo.PROCESOS CONCURRENTES

• Hayparalelismo entre varios procesos cuando seejecutan al mismo tiempo.PROCESOS PARALELOS

• El paralelismo requiere un soporte físico: varios procesadores.• La concurrencia es el caso general y el paralelismo un caso particular.• La concurrencia (y el paralelismo) se refiere a la ejecución de código:

Hay procesos concurrentes y flujos concurrentes.

• Hablaremos en general deflujos concurrentes:Pueden ser del mismo proceso o diferentes procesos.Pueden correr en un único procesador o varios.

CONCURRENCIA

Marisa Gil

Introducció als Sistemes Operatius 11

El PROCESO

DEF(1): “Definimos proceso comotodas aquellas acciones ejecutadas por unaCPU con un segmento dado como segmento descriptor, desde el primermomento que dicho segmento se convierte en segmento descriptor hasta elúltimo momento en que el segmento deja de serlo. Así, un proceso tiene unprincipio muy definido y si acaba, tiene unfinal igualmente definido”(VYSSOTSKY et al. , 1965, MULTICS).

• Son sinónimos de proceso: entorno de ejecución, unidad de asignación de recur-sos, task,...

PROCESO Y FLUJO

Marisa Gil

Introducció als Sistemes Operatius 12

El PROCESO

Podemos representar cada objeto proceso por el código que eje-cuta, los datos que manipula, los recursos que utiliza y supila:

Es lo que se conoce también comoMÁQUINA VIRTUAL :cada programa tiene la “ilusión” de estar trabajando con una

máquina “dedicada” a él: procesador, memoria, recursos,...

datos

pila

direcciones

código

espacio de(memoria total del proceso)

PROCESO Y FLUJO

Marisa Gil

Introducció als Sistemes Operatius 13

El FLUJO (Thread)

• Para que un programa pueda ejecutar diferentes partes en paralelo, en unamáquina multiprocesador:

• buscar un modelo de MÁQUINA VIRTUAL MULTIPROCESADOR

• el SO asigna a un mismo proceso, varios procesadores al mismo tiempo.

• Se diferencia el objeto proceso entask y thread

espacio dedirecciones

segmento

flujo enejecución

pila decada flujo

de datos

MEMORIA

P P P

PROCESO Y FLUJO

Marisa Gil

Introducció als Sistemes Operatius 14

El FLUJO

DEF (2): “Unatask es unentorno de ejecución en el cual pueden correrthreads.Comounidad básica de asignación de recursos, unatask incluye un (...)espacio de direcciones y acceso protegido a los recursos del sistema (comoprocesadores,..., y memoria). La noción de proceso en UNIX se representa enMach por unatask que tiene un únicothread de control.

Un thread es unaunidad básica de utilización de la CPU. Es totalmenteequivalente a un contador de programa independiente operando en unatask.Todos losthreads de unatask comparten el acceso a todos los recursos de latask”. (RASHID et al., 1988, diseñadores de Mach)

PROCESO Y FLUJO

Marisa Gil

Introducció als Sistemes Operatius 15

El proceso y el flujo

• Proceso (otask): unidad de asignación de recursos:• espacio de direcciones (registros de la MMU)

• tabla de canales (y por tanto, dispositivos asignados)

• etc....

• Flujo: unidad de ejecución• código

• pila

• registros del procesador

• En UNIX cada proceso sólo puede tener un flujo:• el concepto “proceso” engloba todo.

• Los signals permiten que el proceso sea avisado de acontecimientos.

• A través del sistema de ficheros, los procesos pueden pasarse datos.

• El espacio de direcciones esprivado para cada proceso (para cada flujo).

PROCESO Y FLUJO

Marisa Gil

Introducció als Sistemes Operatius 16

Librerías de flujos

• Se ofrece la posibilidad de cambio de contexto, entidades de flujo y pri-mitivas de sincronización

• Se ofrece un interfaz de trabajo, pero se puede acceder a cualquier rutinapública.

• La planificación de flujos es totalmente transparente al SO• No sabe la concurrencia que hay en la librería.

• Sólo podrá haber tanto paralelismo como “procesadores virtuales”ofrezca.

• Un bloqueo de un servicio del SO, impide la planificación de cual-quier flujo.

PROCESO Y FLUJO

Marisa Gil

Introducció als Sistemes Operatius 17

Ventajas de la Programación Concurrente

• Programación modular• Considerar aisladamente cada tarea

• Aprovechar desde un programa el paralelismo (multiprocesadores).

• Tratar el trabajo con E/S lenta con flujos dedicados.• el flujo principal del programa puede seguir trabajando

• Atención a varias peticiones simultáneas (sistemas distribuidos)

CONCURRENCIA

Marisa Gil

Introducció als Sistemes Operatius 18

Algunos ejemplos de concurrencia

Master/Slave

cola detrabajos

Peticiones

Spooler

M

S

S

S

Productor/Consumidor

Datos

Dispositivo

PantallaFiltro

CONCURRENCIA

Marisa Gil

Introducció als Sistemes Operatius 19

Programación Concurrente

• Avance de una tarea conmúltiples puntos de ejecución.• Cada punto de ejecución es un “thread”.• El trabajo de cadathread “se ve”simultáneo desde el programa.• Son parte de la misma tarea y haypuntos de encuentro

• Sincronización

• Comunicación

• La gestión de la concurrencia se hacepor software• Sistema operativo

• Librerías

• No consideramos hardware “especializado”

CONCURRENCIA

Marisa Gil

Introducció als Sistemes Operatius 20

EJEMPLO: Calcular concurrentemente

f(x) = 2(3x + 4)

/*padre*/

main()

/*flujo 1*/

/*flujo 2*//*flujo 3*/

f1 = crear_fluxe(flux1, (long)0);f2 = crear_fluxe(flux2,(long)0);

f3 = crear_fluxe(flux3,(long)0);

X

f1, f2,f3

CONCURRENCIA

Marisa Gil

Introducció als Sistemes Operatius 21

CONCURRENCIA

Relación entre la librería de flujos y el SO (I)

READY

PROGRAMA CON FLUJOS

SISTEMA OPERATIVO

cambio de contexto

cambio de contexto a nivel kernel

a nivel usuario RUN

CON PROCESOS

OTRO PROGRAMA(CON O SIN FLUJOS)

PROCESADOR

Marisa Gil

Introducció als Sistemes Operatius 22

Relación entre la librería de flujos y el SO (II)

READY PROGRAMA CON FLUJOS

SISTEMA OPERATIVO

RUN

CON FLUJOS

OTRO PROGRAMA

PROCESADOR

CONCURRENCIA

Marisa Gil

Introducció als Sistemes Operatius 23

Relación entre la librería de flujos y el SO (III)

READY PROGRAMA CON FLUJOS

SISTEMA OPERATIVO

RUN

CON FLUJOS

OTRO PROGRAMA

MULTIPROCESADOR

CONCURRENCIA