Post on 11-Oct-2018
CFGS DAM
1 © Patricia Hurtado Sayas
Tema 1: Programación Multiproceso.
Curso 2012-2013
CFGS DAM
2 © Patricia Hurtado Sayas
1. Elementos funcionales de un SI. Repaso.2. Concepto de Proceso o Tarea.
1. PCB, Bloque de Control de Proceso2. Tabla de Procesos3. Tipos de Procesos4. Creación de Procesos5. Terminación de Procesos6. Estados y transiciones de Procesos
3. Multiprogramación y Multiproceso1. Principios de Concurrencia2. Planificación de Procesos3. Expulsión de un Proceso de la CPU
Índice de contenidos:
CFGS DAM
3 © Patricia Hurtado Sayas
4. Razones para suspender un Proceso5. Problemas con los Procesos
4. Concepto de Hilos y SO Multihilos y Multiproceso.5. Programación Concurrente6. Comunicación entre Procesos7. Sincronización entre Procesos8. Programación Paralela y Distribuida9. Herramientas gráficas para la gestión de
Procesos en sistemas libres y propietarios
Índice de contenidos:
CFGS DAM
4 © Patricia Hurtado Sayas
1.- Repaso arquitectura de von Neumann:
Año 1946
CFGS DAM
5 © Patricia Hurtado Sayas
1.- Repaso arquitectura de von Neumann:
Unidad de Control
CFGS DAM
6 © Patricia Hurtado Sayas
1.- Repaso arquitectura de von Neumann:
ALU
CFGS DAM
7 © Patricia Hurtado Sayas
1.- Repaso arquitectura de von Neumann:
Unidad de Memoria
CFGS DAM
8 © Patricia Hurtado Sayas
1.- Repaso arquitectura de von Neumann:
Ciclo de instrucción
CFGS DAM
9 © Patricia Hurtado Sayas
2.- Concepto de Proceso o Tarea:
Un programa es un conjunto de instrucciones listo para ser ejecutado. Es el resultado de un proceso de compilación y por tanto es un concepto pasivo dado que no se está ejecutando.
CFGS DAM
10 © Patricia Hurtado Sayas
2.- Concepto de Proceso o Tarea:Un proceso o tarea es un concepto manejado por el sistema operativo formado por:� Las instrucciones de un programa destinadas a ser
ejecutadas por el microprocesador.� Su estado de ejecución en un momento dado, esto es,
los valores de los registros de la CPU para dicho programa.
� Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos.
� Otra información que permite al sistema operativo s u planificación.
Concepto Activo
CFGS DAM
11 © Patricia Hurtado Sayas
2.- Concepto de Proceso o Tarea:
CFGS DAM
12 © Patricia Hurtado Sayas
2.- Concepto de Proceso o Tarea:
�Región de código ���� tamaño fijo y es de solo lectura, lo que le permite compartida por más de un proceso.
�Región de datos ���� contiene las variables globales del proceso y las estructuras de datos dinámicas.
�Región de pila ���� contiene datos temporales.
CFGS DAM
13 © Patricia Hurtado Sayas
2.- Concepto de Proceso o Tarea:
CFGS DAM
14 © Patricia Hurtado Sayas
2.- Concepto de Proceso o Tarea:Características de los procesos (I):�Para que un proceso pueda empezar su
ejecución, debe de residir completamente en memoria y tener asignados todos los recursos que necesite.
�Dos procesos pueden asociarse al mismo programa.
�Cada proceso está protegido del resto de procesos, ningún otro proceso podrá escribir en las zonas de memoria pertenecientes a ese proceso.
CFGS DAM
15 © Patricia Hurtado Sayas
2.- Concepto de Proceso o Tarea:Características de los procesos (II):�Los procesos pertenecientes a los usuarios se
ejecutan en el modo usuario del procesador (con restricciones de acceso a los recursos), los que pertenecen al sistema se ejecutarán en el modo kernel del procesador (podrán acceder a cualquier recurso).
�Para que un proceso de usuario acceda a los recursos tendrá que hacerlo por medio de llamadas al sistema.
�Los procesos se podrán comunicar, sincronizar y colaborar entre ellos.
CFGS DAM
16 © Patricia Hurtado Sayas
2.- Concepto de Proceso o Tarea:�Identificadores numéricos:
�Identificador del procesos en sí (pid)�Identificador del proceso padre (quién lo creó)�Identificador del usuario
� Información de gestión de memoria�Información del estado del procesador: contador
de programa, registros de la CPU, etc.�Información de estado y planificación: estado del
proceso (ejecución, listo, suspendido o zombie), prioridad, evento por el cual espera, etc.
2.1.
-P
CB
, Blo
que
de C
ontr
ol d
e P
roce
so
CFGS DAM
17 © Patricia Hurtado Sayas
2.- Concepto de Proceso o Tarea:� Información de planificación y estadísticas de
uso, por ejemplo tiempo real y de CPU utilizado. � Estado de E/S, como por ejemplo dispositivos
asignados, operaciones pendientes. � Información de gestión de archivos (archivos
abiertos, derechos). � Información de mantenimiento.
2.1.
-P
CB
, Blo
que
de C
ontr
ol d
e P
roce
so
CFGS DAM
18 © Patricia Hurtado Sayas
2.- Concepto de Proceso o Tarea:
2.2.
-T
abla
de
Pro
ceso
s
Es la estructura donde se mantienen los PCB de los procesos usuarios.
CFGS DAM
19 © Patricia Hurtado Sayas
2.- Concepto de Proceso o Tarea:
2.3.
-T
ipos
de
Pro
ceso
s
Proceso init : es el primer proceso a nivel de usuario iniciado por el SO y es el padre de todos los procesos de usuario. Tiene el pid con valor 1. Si representásemos a todos estos procesos en un árbol, entonces Init quedaría como el nodo raíz.
CFGS DAM
20 © Patricia Hurtado Sayas
2.- Concepto de Proceso o Tarea:
2.3.
-T
ipos
de
Pro
ceso
s
CFGS DAM
21 © Patricia Hurtado Sayas
2.- Concepto de Proceso o Tarea:
2.3.
-T
ipos
de
Pro
ceso
s Procesos huérfanos : Cuando un proceso padre muere antes que el proceso hijo, este proceso hijo queda huérfano y es adoptado por el proceso Init. En la siguiente imagen vemos cómo, al morir un proceso padre, Init acepta a sus procesos hijos.
CFGS DAM
22 © Patricia Hurtado Sayas
2.- Concepto de Proceso o Tarea:
2.3.
-T
ipos
de
Pro
ceso
s
CFGS DAM
23 © Patricia Hurtado Sayas
2.- Concepto de Proceso o Tarea:
2.3.
-T
ipos
de
Pro
ceso
s Procesos zombies : Un proceso que termina no puede abandonar el sistema hasta que su padre acepte su c ódigo de retorno. Si el proceso padre ya está muerto, es adoptado por el proceso init . Si el proceso padre está vivo pero nunca ejecuta un wait() o proceso por el que espera a la finalización de su hijo, el código de retorno de l proceso hijo nunca será aceptado y tal proceso se convierte en zombie. Un proceso zombie no tiene ni código, ni pi la, ni datos, pero continúa habitando en la tabla de proce sos (que es de tamaño fijo).
CFGS DAM
24 © Patricia Hurtado Sayas
2.- Concepto de Proceso o Tarea:
2.3.
-T
ipos
de
Pro
ceso
s
CFGS DAM
25 © Patricia Hurtado Sayas
2.- Concepto de Proceso o Tarea:
2.4.
-C
reac
ión
de P
roce
sos
Los procesos son creados y destruidos por el sistema operativo, así como también éste se debe hacer cargo de la comunicación entre procesos, pero lo hace a petición de otros procesos. El mecanismo por el cual un proceso crea otro proceso se denomina bifurcación .
CFGS DAM
26 © Patricia Hurtado Sayas
2.- Concepto de Proceso o Tarea:
2.4.
-C
reac
ión
de P
roce
sos La creación de un proceso
supone la asignación de todos los recursos que el proceso necesita.
CFGS DAM
27 © Patricia Hurtado Sayas
Un proceso puede crear nuevos hijos mediante una llamada al SO. El proceso creador se denomina padre y, el creado hijo . En Windows se puede crear un proceso con CreateProcess , donde se indica el fichero ejecutable donde está el código del hijo. En sistemas UNIX, las llamadas al sistema son �fork , crea un proceso hijo que es un duplicado
del padre.�exec, sustituye el código por un nuevo fichero
ejecutable (no crea un nuevo proceso).
2.- Concepto de Proceso o Tarea:
2.4.
-C
reac
ión
de P
roce
sos
CFGS DAM
28 © Patricia Hurtado Sayas
Un proceso termina cuando invoca a una llamada al sistema específica, por ejemplo exit() . También si se genera una excepción y el SO decide abortarlo. En sistemas UNIX, cuando un proceso termina, muere también su descendencia.
2.- Concepto de Proceso o Tarea:
2.5.
-T
erm
inac
ión
de P
roce
sos
CFGS DAM
29 © Patricia Hurtado Sayas
Los estados caracterizan el comportamiento de los procesos y están relacionados con la actividad de proceso en un momento determinado.
2.- Concepto de Proceso o Tarea:
2.6.
-E
stad
os y
tran
sici
ones
CFGS DAM
30 © Patricia Hurtado Sayas
�Nuevo : El proceso está siendo creado pero aún no ha sido admitido en la lista de procesos ejecutables por el SO.
�Ejecución : El proceso está ejecutando instrucciones. En un sistema con un solo procesador, sólo habrá un proceso en este estado.
�Bloqueado : El proceso espera por algún evento, por lo que no puede hacer nada.
2.- Concepto de Proceso o Tarea:
2.6.
-E
stad
os y
tran
sici
ones
CFGS DAM
31 © Patricia Hurtado Sayas
�Listo : El proceso está listo para ser ejecutado y espera a que se le asigne tiempo de CPU. Todos los procesos en este estado están compitiendo por la CPU.
�Finalizado : Ha finalizado su ejecución ya sea de forma normal o anormal. En este estado los procesos permanecen mientras el SO libera sus recursos y extrae información necesaria para tareas de contabilidad.
2.- Concepto de Proceso o Tarea:
2.6.
-E
stad
os y
tran
sici
ones
CFGS DAM
32 © Patricia Hurtado Sayas
2.- Concepto de Proceso o Tarea:
2.6.
-E
stad
os y
tran
sici
ones
�Bloqueado y Suspendido : el proceso estáen memoria secundaria suspendido y esperando por un evento.
�Listo y Suspendido : el proceso está en memoria secundaria suspendido temporalmente, pero listo para ejecución, una vez que se reanude.
CFGS DAM
33 © Patricia Hurtado Sayas
2.- Concepto de Proceso o Tarea:
2.6.
-E
stad
os y
tran
sici
ones
Todas las transiciones son iniciadas por el SO, la ú nica que además, puede ser iniciada por el mismo proceso usuario es la de Ejecución a Bloqueado .
CFGS DAM
34 © Patricia Hurtado Sayas
3.- Multiprogramación y Multiproceso:
Se denomina multiprogramación o multitarea , a la técnica que permite que dos o más procesos ocupen la misma unidad de memoria principal y que sean ejecutados al "mismo tiempo" (seudo-paralelismo, ya que en una única CPU sólo puede haber un proceso a la vez) en la unidad central de proceso o CPU, es decir, permite la ejecución de varios procesos al mismo tiempo corriendo sobre un único procesador.
CFGS DAM
35 © Patricia Hurtado Sayas
3.- Multiprogramación y Multiproceso:
Ventajas:� Permite la existencia de varios procesos en ejecuci ón.� Permite el servicio interactivo simultáneo a varios usuarios
de manera eficiente.� Aprovecha los tiempos que los procesos pasan espera ndo
a que se completen sus operaciones de E/S, por lo q ue aumenta el uso de la CPU.
� Las direcciones de los procesos son relativas, el programador no se preocupa por saber en dónde estar á el proceso dado que el sistema operativo es el que se encarga de convertir la dirección lógica en física.
CFGS DAM
36 © Patricia Hurtado Sayas
3.- Multiprogramación y Multiproceso:
Multiprogramación es distinto a multiproceso.
El multiproceso implica la existencia de varios procesadores en el mismo sistema, ejecutando por ejemplo simultáneamente diferentes trabajos, pudiendo ser usados en multiprogramación.
En cambio un sistema de multiprogramación no podría ser utilizado en multiproceso si sólo tuvier a un procesador.
CFGS DAM
37 © Patricia Hurtado Sayas
3.- Multiprogramación y Multiproceso:
El grado de multiprogramación viene determinado por el número de procesos activos.
La ejecución aparentemente simultánea de varios procesos en un mismo sistema, requiere repartir el tiempo de CPU entre los objetos a ejecutar. Eso implica expulsar de la CPU, al proceso en ejecución y asignarla a un proceso preparado . Esta actividad se conoce como cambio de contexto .
CFGS DAM
38 © Patricia Hurtado Sayas
3.- Multiprogramación y Multiproceso:
Los cambios de contexto no son trabajo útil e impli can una sobrecarga importante si se hacen con frecuencia ���� reducen la utilización.
CFGS DAM
39 © Patricia Hurtado Sayas
3.- Multiprogramación y Multiproceso:
EJERCICIOVisualiza la animación de la siguiente dirección we b:
http://ies.barajas.madrid.educa.madrid.org/ies/inde x.php?option=com_content&view=article&id=124:gestion-de-procesos&catid=65:unidades-de-trabajo&Itemid=55
CFGS DAM
40 © Patricia Hurtado Sayas
3.- Multiprogramación y Multiproceso:
Tipos de multitarea (I):�Multitarea Nula : es aquel SO que carece de
multitarea, por ejemplo MS-DOS.�Multitarea Corporativa, Cooperativa o No
apropiativa : es aquella donde los procesos de usuario son los que ceden la CPU al SO a intervalos regulares. Es el tipo de multitarea de los SO Windows anteriores a 1995 como Windows 3.11.
CFGS DAM
41 © Patricia Hurtado Sayas
3.- Multiprogramación y Multiproceso:
Tipos de multitarea (II):�Multitarea Preferente o Apropiativa : es aquella en
donde el SO se encarga de administrar el/los procesador/es, repartiendo el tiempo de uso del mismo entre los distintos procesos que esperan utilizarlo. Si hay un solo procesador, cada proceso lo utiliza en periodos cortísimos de tiempo, dando la sensación de que se ejecutan al mismo tiempo. Es el tipo de multitarea de los SO UNIX (y sus clones Linux), Windows NT, etc.
CFGS DAM
42 © Patricia Hurtado Sayas
3.- Multiprogramación y Multiproceso:
Tipos de multitarea (III):�Multitarea Real : es aquella en donde el SO ejecuta
los procesos realmente al mismo tiempo, haciendo uso de múltiples procesadores. En el caso de que los procesos o tareas sean más que la cantidad de procesadores, éstos comienzan a ejecutarse como en la multitarea preferente. Es el tipo de multitarea de los SO modernos. En este caso tenemos un sistema multiproceso.
CFGS DAM
43 © Patricia Hurtado Sayas
3.- Multiprogramación y Multiproceso:
CFGS DAM
44 © Patricia Hurtado Sayas
3.- Multiprogramación y Multiproceso:
La Concurrencia es la habilidad para ejecutar varias actividades en paralelo o simultáneamente en un sistema con un único procesador.
Comprende entre otras, la comunicación entre procesos, la compartición y competencia por los recursos, la sincronización de la ejecución de varios procesos y la asignación del procesador a los procesos.
3.1.
-P
rinci
pios
de
Con
curr
enci
a
CFGS DAM
45 © Patricia Hurtado Sayas
3.- Multiprogramación y Multiproceso:
El objetivo de la multiprogramación es que en todo momento haya un proceso en ejecución (maximiza la utilización)
La Planificación es la forma o criterio que se sigue a la hora de decidir qué proceso debe entrar en ejecución.
3.2.
-P
lani
ficac
ión
de p
roce
sos
CFGS DAM
46 © Patricia Hurtado Sayas
3.- Multiprogramación y Multiproceso:
El proceso del SO dedicado a la tarea de determinar el procesos a ejecutar, recibe el nombre de planificador.
Este proceso suele estar en estado bloqueado , y es despertado periódicamente, dependiendo del esquema de planificación, o cuando el proceso en ejecución no puede continuar y pasa a estado bloqueado .3.2.
-P
lani
ficac
ión
de p
roce
sos
CFGS DAM
47 © Patricia Hurtado Sayas
3.- Multiprogramación y Multiproceso:
Algoritmo de planificación es el criterio que utiliza el planificador para designar el proceso que entra en ejecución.
3.2.
-P
lani
ficac
ión
de p
roce
sos
CFGS DAM
48 © Patricia Hurtado Sayas
3.- Multiprogramación y Multiproceso:
3.2.
-P
lani
ficac
ión
de p
roce
sos
Planificador de trabajos: Encargado del intercambio entre memoria y almacenamiento secundario. Controla el número de pr ocesos en memoria. Se ejecuta con menor frecuencia ���� puede ser lento.
Planificador de la CPU: Selecciona un proceso preparado y le asignar la CPU. Se ejecuta con mucha frecuencia ���� debe ser más rápido.
CFGS DAM
49 © Patricia Hurtado Sayas
3.- Multiprogramación y Multiproceso:
3.3.
-E
xpul
sión
de
la C
PU Las principales interrupciones por las que
un proceso puede ser expulsado de la CPU, son:�Interrupción por E/S. �Interrupción por fin de tiempo (en la que
se llama al planificador) �Interrupción por error (como la división
por 0)
El proceso pasa a Bloqueado
CFGS DAM
50 © Patricia Hurtado Sayas
3.- Multiprogramación y Multiproceso:
3.4.
-S
uspe
nsió
n de
pro
ceso
s Un proceso puede ser suspendido por:� Falta de espacio en memoria principal que requiere un
intercambio de memoria. � Reducción del grado de multiprogramación por parte del
SO.� Solicitud de un usuario interactivo, por ejemplo pa ra
depuración.� Temporización del proceso.� Solicitud del padre para sincronizar descendientes.
El proceso pasa a Bloqueado y Suspendido
CFGS DAM
51 © Patricia Hurtado Sayas
3.- Multiprogramación y Multiproceso:
3.4.
-P
robl
emas
con
pro
ceso
s La programación multiproceso supone la compartición y competencia entre los procesos por el uso de recursos físicos.Los procesos necesitan técnicas de:�Comunicación : necesidad de transmitir
información entre procesos concurrentes. �Sincronización : necesidad de que las
ejecuciones de los procesos concurrentes se produzcan según una secuenciación temporal, conocida y establecida entre ellos.
CFGS DAM
52 © Patricia Hurtado Sayas
3.- Multiprogramación y Multiproceso:
3.4.
-P
robl
emas
con
pro
ceso
s
Cuando varios procesos entran en competencia se pueden producir las siguientes situaciones:
�Exclusión mutua : el acceso a ciertos recursos debe ser exclusivo de un proceso cada vez ����
sección crítica.
�Interbloqueo : dos procesos pueden estar esperando el mismo recurso.
�Inanición : un proceso nunca accede a un recurso.
CFGS DAM
53 © Patricia Hurtado Sayas
4.- Concepto de Hilo:
Una hebra o hilo (thread) o proceso ligero , es un punto de ejecución de un proceso. Un proceso tendrá una o más hilos.
Los hilos de un mismo proceso compartirán recursos, siempre pertenecen a un proceso y no pueden existir por ellos mismos, pero pueden ser planificados por ejecución .
CFGS DAM
54 © Patricia Hurtado Sayas
4.- Concepto de Hilo:
Los hilos no son independientes entre sí. Como todo s los hilos pueden acceder a todas las direcciones de la tarea, un hilo puede leer la pila de cualquier otro hilo o escribir sobr e ella.
CFGS DAM
55 © Patricia Hurtado Sayas
4.- Concepto de Hilo:
Los procesos pueden pertenecer a varios usuarios, pero los hilos de un proceso pertenecen a un mismo usuario y por tanto, se asume que estarán diseñados para colaborar, no para competir. La programación de procesos multihilo se ajusta a la programación concurrente sobre sistemas que comparten memoria.
CFGS DAM
56 © Patricia Hurtado Sayas
4.- Concepto de Hilo:
Con los hilos distinguimos dos tipos o niveles de procesos:�Procesos pesados: contienen uno o varios
hilos que comparten la misma memoria y recursos. Así un proceso pesado puede contener centenares de hilos sin mucho coste adicional, tan solo los BCP de sus hilos.
�Procesos ligeros: implementados por el SO o por el programa de usuario.
CFGS DAM
57 © Patricia Hurtado Sayas
4.- Concepto de Hilo:
Ventajas de los hilos sobre los procesos:� Se tarda mucho menos tiempo en crear un nuevo hilo en
un proceso existente que en crear un nuevo proceso.� Se tarda mucho menos tiempo en terminar un hilo que un
proceso.� Se tarda mucho menos tiempo en conmutar entre hilos de
un mismo proceso que entre procesos.� Los hilos hacen más rápida la comunicación entre
procesos, ya que al compartir memoria y recursos, s e pueden comunicar entre sí sin invocar el núcleo del SO.
CFGS DAM
58 © Patricia Hurtado Sayas
5.- Programación concurrente:
EJEMPLOVeamos la diferencia entre la programación secuencial clásica, y la programación concurrente. Para ello supongamos que tenemos que realizar un programa que cada 3 seg. muestre el mensaje Hola y cada 5 seg. muestre el mensaje Mundo .
CFGS DAM
59 © Patricia Hurtado Sayas
5.- Programación concurrente:
1. ���� muestra el mensaje Hola2. ���� muestra el mensaje Mundo3. ���� muestra el mensaje Hola mundo
CFGS DAM
60 © Patricia Hurtado Sayas
5.- Programación concurrente:
CFGS DAM
61 © Patricia Hurtado Sayas
5.- Programación concurrente:
La programación concurrente permite obtener soluciones distintas a un mismo problema. Por ejemplo, supongamos el siguiente fragmento de código:
n=0;tarea P1{
n = n+1;}tarea P2{
n = n+1;}
CFGS DAM
62 © Patricia Hurtado Sayas
5.- Programación concurrente:
En este ejemplo se dan dos posibles resultados, ambos correctos y dependientes del orden de ejecución de los procesos P1 y P2:
n=0;tarea P1{
n = n+1;}tarea P2{
n = n+1;}
CFGS DAM
63 © Patricia Hurtado Sayas
5.- Programación concurrente:
En este ejemplo estamos tratando las instrucciones de modificación de la variable n como atómicas. Pero, ¿qué pasaría si realmente cada modificación supone la ejecución de varias instrucciones atómicas? Una instrucción atómica no puede ser entrelazada con la ejecución de otras instrucciones. Dependiendo de la atomicidad, algunas soluciones serán correctas o no.
CFGS DAM
64 © Patricia Hurtado Sayas
5.- Programación concurrente:
Veamos las instrucciones del ejemplo, a nivel de atomicidad e intercaladas su ejecución:
El resultado obtenido no sería correcto.
CFGS DAM
65 © Patricia Hurtado Sayas
5.- Programación concurrente:
Las secciones de código de un programa que acceden a un mismo recurso (un mismo objeto de una clase, un fichero del disco, etc.) desde dos procesos o hilos distintos se denominan secciones críticas .
CFGS DAM
66 © Patricia Hurtado Sayas
En el punto 3.4. se ha visto que cuando varios procesos entran en competencia se pueden producir las siguientes situaciones a evitar:
�Exclusión mutua : el acceso a ciertos recursos debe ser exclusivo de un proceso cada vez ����
sección crítica.
�Interbloqueo : dos procesos pueden estar esperando el mismo recurso.
�Inanición : un proceso nunca accede a un recurso.
5.- Programación concurrente:
CFGS DAM
67 © Patricia Hurtado Sayas
6.- Comunicación entre procesos:
La comunicación de procesos es la capacidad de transmitir información de un proceso a otro. La forma de comunicarse varios procesos o hilos, normalmente consiste en compartir un mismo objeto (uso de memoria compartida), que suele pasarse como parámetro en la clase constructora de la clase hilo. Será necesario además, disponer de un sistema de sincronización para garantizar el acceso exclusivo a las variables compartidas.
CFGS DAM
68 © Patricia Hurtado Sayas
6.- Comunicación entre procesos:
Formas de conseguir la comunicación:�Memoria compartida , requiere un mecanismo de
sincronización externo y, la responsabilidad de comunicación recae en los procesos, mientras que el SO tan solo proporciona llamadas para manipular dicha memoria compartida.
�Paso de mensajes , la responsabilidad de comunicación y sincronización recae en el SO, que proporciona un e nlace lógico entre procesos. Los procesos sólo tienen que invocar correctamente a dos llamadas básicas: send y receive, que pueden ser bloqueantes o no.
CFGS DAM
69 © Patricia Hurtado Sayas
6.- Comunicación entre procesos:
Las relaciones de comunicación entre procesos pueden ser de distintos tipos:�Independientes o competidores cuando los
procesos compiten por el uso de recursos escasos, como la CPU o E/S.
�Cooperantes cuando los procesos colaboran entre sí para llevar a cabo un objetivo común.
CFGS DAM
70 © Patricia Hurtado Sayas
7.- Sincronización entre procesos:
La sincronización surge debido a la necesidad de ev itar que dos o más procesos o hilos traten de acceder a l os mismos recursos al mismo tiempo. La sincronización es la capacidad de informar de la situación de un proceso a otro y se puede obtener:�Por exclusión mutua , asegurando que un solo proceso
tiene acceso a un recurso compartido único.�Por condición , asegurando que un proceso no
progresa hasta que se cumpla una determinada condición.
CFGS DAM
71 © Patricia Hurtado Sayas
7.- Sincronización entre procesos:.
Al igual como la comunicación, la sincronización pu ede conseguirse de dos formas distintas:�Memoria compartida , mediante los métodos siguientes:
� Inhibición de interrupciones que consiste en que un proceso inhabilita todas las interrupciones justo antes de entrar en su sección crítica, y las rehabilita cuando sale de ella;
� Espera activa ,� Semáforos , son mecanismos tanto de comunicación como
de sincronización.� Regiones críticas ,� Monitores .
�Paso de mensajes utilizando para ello canales o buzones. Son mecanismos tanto de comunicación como de sincronización.
CFGS DAM
72 © Patricia Hurtado Sayas
7.- Sincronización entre procesos:.
El problema del productor-consumidor , en el que los procesos productores producen elementos de informac ión que se almacenan en un buffer compartido hasta ser retirados por los procesos consumidores. Si el buff er estávacío, los consumidores esperan; si está lleno, espe ran los productores hasta que se libere espacio. Este e s muy habitual en un sistema operativo. El esquema client e-servidor es un caso particular del productor-consum idor donde los procesos clientes producen peticiones que son consumidas por un proceso servidor. E
jem
plos
de
sinc
roni
zaci
ón
CFGS DAM
73 © Patricia Hurtado Sayas
7.- Sincronización entre procesos:.
El problema de los lectores y escritores ; en el que hay un objeto de datos (fichero de texto) que es utilizado por varios procesos, unos leen y otro que escribe. Solo puede utilizar el recurso un proceso y solo uno, es decir, o bien un proceso estará escribiendo o bien leyendo, pero nunca ocurrirá simultáneamente (teniendo en cuenta que si no lo esta utilizando nadie, tendrápreferencia el escritor ante el lector).
Eje
mpl
os d
e si
ncro
niza
ción
CFGS DAM
74 © Patricia Hurtado Sayas
7.- Sincronización entre procesos:.
El problema de los filósofos comilones , en el que cinco filósofos se sientan a la mesa, cada uno con un pla to de espagueti. El espagueti es tan escurridizo que un f ilósofo necesita dos tenedores para comerlo. Entre cada dos platos hay un tenedor. La vida de un filósofo const a de periodos alternos de comer y pensar. Cuando un filó sofo tiene hambre, intenta obtener un tenedor para su ma no derecha, y otro para su mano izquierda, cogiendo un o a la vez y en cualquier orden. Si logra obtener los dos tenedores, come un rato y después deja los tenedore s y continúa pensando. En este caso, el recurso compart ido son los tenedores.
Eje
mpl
os d
e si
ncro
niza
ción
CFGS DAM
75 © Patricia Hurtado Sayas
8.- Programación paralela y distribuida:.
La programación paralela requiere el uso de varios procesadores trabajando juntos para resolver una tarea común. El modo de uso de los procesadores puede ser diseñado por el programador, de forma que:�Cada procesador trabaja en una porción del
problema.�Los procesos pueden intercambiar datos, a
través de la memoria o por una red de interconexión.
CFGS DAM
76 © Patricia Hurtado Sayas
8.- Programación paralela y distribuida:.
La concurrencia es más general que el paralelismo, de forma que las soluciones que se utilizan en la programación concurrente para la sincronización y comunicación son válidas para la programación paralela
CFGS DAM
77 © Patricia Hurtado Sayas
8.- Programación paralela y distribuida:.
CFGS DAM
78 © Patricia Hurtado Sayas
8.- Programación paralela y distribuida:.
La programación distribuida supone la existencia de varios procesadores geográficamente distribuidos. Hay paso de mensajes pero se necesita infraestructura especial.