Tema 1: Programación Multiproceso. Curso 2012-2013

Anuncio
CFGS DAM
Tema 1:
Programación Multiproceso.
Curso 2012-2013
1 © Patricia Hurtado Sayas
CFGS DAM
Índice de contenidos:
1. Elementos funcionales de un SI. Repaso.
2. Concepto de Proceso o Tarea.
1.
2.
3.
4.
5.
6.
PCB, Bloque de Control de Proceso
Tabla de Procesos
Tipos de Procesos
Creación de Procesos
Terminación de Procesos
Estados y transiciones de Procesos
3. Multiprogramación y Multiproceso
1. Principios de Concurrencia
2. Planificación de Procesos
3. Expulsión de un Proceso de la CPU
2 © Patricia Hurtado Sayas
CFGS DAM
Índice de contenidos:
4. Razones para suspender un Proceso
5. Problemas con los Procesos
4.
5.
6.
7.
8.
9.
Concepto de Hilos y SO Multihilos y Multiproceso.
Programación Concurrente
Comunicación entre Procesos
Sincronización entre Procesos
Programación Paralela y Distribuida
Herramientas gráficas para la gestión de
Procesos en sistemas libres y propietarios
3 © Patricia Hurtado Sayas
CFGS DAM
1.- Repaso arquitectura de von Neumann:
4 © Patricia Hurtado Sayas
Año 1946
CFGS DAM
1.- Repaso arquitectura de von Neumann:
5 © Patricia Hurtado Sayas
Unidad de Control
CFGS DAM
1.- Repaso arquitectura de von Neumann:
6 © Patricia Hurtado Sayas
ALU
CFGS DAM
1.- Repaso arquitectura de von Neumann:
7 © Patricia Hurtado Sayas
Unidad de Memoria
CFGS DAM
1.- Repaso arquitectura de von Neumann:
8 © Patricia Hurtado Sayas
Ciclo de instrucción
CFGS DAM
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.
9 © Patricia Hurtado Sayas
CFGS DAM
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 su
planificación.
Concepto Activo
10 © Patricia Hurtado Sayas
CFGS DAM
2.- Concepto de Proceso o Tarea:
11 © Patricia Hurtado Sayas
CFGS DAM
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
12 © Patricia Hurtado Sayas
contiene datos temporales.
CFGS DAM
2.- Concepto de Proceso o Tarea:
13 © Patricia Hurtado Sayas
CFGS DAM
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.
14 © Patricia Hurtado Sayas
CFGS DAM
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.
15 © Patricia Hurtado Sayas
2.1.- PCB, Bloque de Control de Proceso
CFGS DAM
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.
16 © Patricia Hurtado Sayas
2.1.- PCB, Bloque de Control de Proceso
CFGS DAM
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.
17 © Patricia Hurtado Sayas
CFGS DAM
2.2.- Tabla de Procesos
2.- Concepto de Proceso o Tarea:
Es la estructura donde se mantienen los PCB de los
procesos usuarios.
18 © Patricia Hurtado Sayas
CFGS DAM
2.3.- Tipos de Procesos
2.- Concepto de Proceso o Tarea:
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.
19 © Patricia Hurtado Sayas
CFGS DAM
2.3.- Tipos de Procesos
2.- Concepto de Proceso o Tarea:
20 © Patricia Hurtado Sayas
CFGS DAM
2.3.- Tipos de Procesos
2.- Concepto de Proceso o Tarea:
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.
21 © Patricia Hurtado Sayas
CFGS DAM
2.3.- Tipos de Procesos
2.- Concepto de Proceso o Tarea:
22 © Patricia Hurtado Sayas
CFGS DAM
2.3.- Tipos de Procesos
2.- Concepto de Proceso o Tarea:
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 del proceso
hijo nunca será aceptado y tal proceso se convierte en
zombie. Un proceso zombie no tiene ni código, ni pila, ni
datos, pero continúa habitando en la tabla de procesos
(que es de tamaño fijo).
23 © Patricia Hurtado Sayas
CFGS DAM
2.3.- Tipos de Procesos
2.- Concepto de Proceso o Tarea:
24 © Patricia Hurtado Sayas
CFGS DAM
2.4.- Creación de Procesos
2.- Concepto de Proceso o Tarea:
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.
25 © Patricia Hurtado Sayas
CFGS DAM
2.4.- Creación de Procesos
2.- Concepto de Proceso o Tarea:
La creación de un proceso
supone la asignación de
todos los recursos que el
proceso necesita.
26 © Patricia Hurtado Sayas
CFGS DAM
2.4.- Creación de Procesos
2.- Concepto de Proceso o Tarea:
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).
27 © Patricia Hurtado Sayas
CFGS DAM
2.5.- Terminación de Procesos
2.- Concepto de Proceso o Tarea:
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.
28 © Patricia Hurtado Sayas
CFGS DAM
2.6.- Estados y transiciones
2.- Concepto de Proceso o Tarea:
Los estados caracterizan el comportamiento
de los procesos y están relacionados con la
actividad de proceso en un momento
determinado.
29 © Patricia Hurtado Sayas
CFGS DAM
2.6.- Estados y transiciones
2.- Concepto de Proceso o Tarea:
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.
30 © Patricia Hurtado Sayas
CFGS DAM
2.6.- Estados y transiciones
2.- Concepto de Proceso o Tarea:
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.
31 © Patricia Hurtado Sayas
CFGS DAM
2.6.- Estados y transiciones
2.- Concepto de Proceso o Tarea:
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.
32 © Patricia Hurtado Sayas
CFGS DAM
2.6.- Estados y transiciones
2.- Concepto de Proceso o Tarea:
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.
33 © Patricia Hurtado Sayas
CFGS DAM
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" (seudoparalelismo, 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.
34 © Patricia Hurtado Sayas
CFGS DAM
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 esperando
a que se completen sus operaciones de E/S, por lo que
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.
35 © Patricia Hurtado Sayas
CFGS DAM
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 tuviera
un procesador.
36 © Patricia Hurtado Sayas
CFGS DAM
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.
37 © Patricia Hurtado Sayas
CFGS DAM
3.- Multiprogramación y Multiproceso:
Los cambios de contexto no son trabajo útil e implican una sobrecarga
importante si se hacen con frecuencia
reducen la utilización.
38 © Patricia Hurtado Sayas
CFGS DAM
3.- Multiprogramación y Multiproceso:
EJERCICIO
Visualiza la animación de la siguiente dirección web:
http://ies.barajas.madrid.educa.madrid.org/ies/index.ph
p?option=com_content&view=article&id=124:gestionde-procesos&catid=65:unidades-de-trabajo&Itemid=55
39 © Patricia Hurtado Sayas
CFGS DAM
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.
40 © Patricia Hurtado Sayas
CFGS DAM
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.
41 © Patricia Hurtado Sayas
CFGS DAM
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.
42 © Patricia Hurtado Sayas
CFGS DAM
3.- Multiprogramación y Multiproceso:
43 © Patricia Hurtado Sayas
CFGS DAM
3.1.- Principios de Concurrencia
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.
44 © Patricia Hurtado Sayas
CFGS DAM
3.2.- Planificación de procesos
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.
45 © Patricia Hurtado Sayas
CFGS DAM
3.2.- Planificación de procesos
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.
46 © Patricia Hurtado Sayas
CFGS DAM
3.2.- Planificación de procesos
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.
47 © Patricia Hurtado Sayas
CFGS DAM
3.2.- Planificación de procesos
3.- Multiprogramación y Multiproceso:
Planificador
Selecciona
preparado y le
Se
ejecuta
frecuencia
rápido.
de
la
CPU:
un
proceso
asignar la CPU.
con
mucha
debe ser más
Planificador de trabajos: Encargado del intercambio entre memoria y
almacenamiento secundario. Controla el número de procesos en
memoria. Se ejecuta con menor frecuencia
puede ser lento.
48 © Patricia Hurtado Sayas
CFGS DAM
3.3.- Expulsión de la CPU
3.- Multiprogramación y Multiproceso:
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
49 © Patricia Hurtado Sayas
CFGS DAM
3.4.- Suspensión de procesos
3.- Multiprogramación y Multiproceso:
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 para
depuración.
Temporización del proceso.
Solicitud del padre para sincronizar descendientes.
50 © Patricia Hurtado Sayas
El proceso pasa a Bloqueado
y Suspendido
CFGS DAM
3.4.- Problemas con procesos
3.- Multiprogramación y Multiproceso:
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.
51 © Patricia Hurtado Sayas
CFGS DAM
3.4.- Problemas con procesos
3.- Multiprogramación y Multiproceso:
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
esperando el mismo recurso.
pueden
estar
Inanición: un proceso nunca accede a un
recurso.
52 © Patricia Hurtado Sayas
CFGS DAM
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.
53 © Patricia Hurtado Sayas
CFGS DAM
4.- Concepto de Hilo:
Los hilos no son independientes entre sí. Como todos los hilos
pueden acceder a todas las direcciones de la tarea, un hilo puede
leer la pila de cualquier otro hilo o escribir sobre ella.
54 © Patricia Hurtado Sayas
CFGS DAM
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.
55 © Patricia Hurtado Sayas
CFGS DAM
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.
56 © Patricia Hurtado Sayas
CFGS DAM
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, se
pueden comunicar entre sí sin invocar el núcleo del SO.
57 © Patricia Hurtado Sayas
CFGS DAM
5.- Programación concurrente:
EJEMPLO
Veamos 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.
58 © Patricia Hurtado Sayas
CFGS DAM
5.- Programación concurrente:
1.
2.
3.
muestra el mensaje Hola
muestra el mensaje Mundo
muestra el mensaje Hola mundo
59 © Patricia Hurtado Sayas
CFGS DAM
5.- Programación concurrente:
60 © Patricia Hurtado Sayas
CFGS DAM
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;
}
61 © Patricia Hurtado Sayas
CFGS DAM
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;
}
62 © Patricia Hurtado Sayas
CFGS DAM
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.
63 © Patricia Hurtado Sayas
CFGS DAM
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.
64 © Patricia Hurtado Sayas
CFGS DAM
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.
65 © Patricia Hurtado Sayas
CFGS DAM
5.- Programación concurrente:
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
esperando el mismo recurso.
pueden
estar
Inanición: un proceso nunca accede a un
recurso.
66 © Patricia Hurtado Sayas
CFGS DAM
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.
67 © Patricia Hurtado Sayas
CFGS DAM
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 enlace
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.
68 © Patricia Hurtado Sayas
CFGS DAM
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.
69 © Patricia Hurtado Sayas
CFGS DAM
7.- Sincronización entre procesos:
La sincronización surge debido a la necesidad de evitar
que dos o más procesos o hilos traten de acceder a los
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.
70 © Patricia Hurtado Sayas
CFGS DAM
7.- .Sincronización entre procesos:
Al igual como la comunicación, la sincronización puede
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.
71 © Patricia Hurtado Sayas
CFGS DAM
Ejemplos de sincronización
7.- .Sincronización entre procesos:
El problema del productor-consumidor, en el que los
procesos productores producen elementos de información
que se almacenan en un buffer compartido hasta ser
retirados por los procesos consumidores. Si el buffer está
vacío, los consumidores esperan; si está lleno, esperan
los productores hasta que se libere espacio. Este es muy
habitual en un sistema operativo. El esquema clienteservidor es un caso particular del productor-consumidor
donde los procesos clientes producen peticiones que son
consumidas por un proceso servidor.
72 © Patricia Hurtado Sayas
CFGS DAM
Ejemplos de sincronización
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).
73 © Patricia Hurtado Sayas
CFGS DAM
Ejemplos de sincronización
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 plato de
espagueti. El espagueti es tan escurridizo que un filósofo
necesita dos tenedores para comerlo. Entre cada dos
platos hay un tenedor. La vida de un filósofo consta de
periodos alternos de comer y pensar. Cuando un filósofo
tiene hambre, intenta obtener un tenedor para su mano
derecha, y otro para su mano izquierda, cogiendo uno a la
vez y en cualquier orden. Si logra obtener los dos
tenedores, come un rato y después deja los tenedores y
continúa pensando. En este caso, el recurso compartido
son los tenedores.
74 © Patricia Hurtado Sayas
CFGS DAM
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.
75 © Patricia Hurtado Sayas
CFGS DAM
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
76 © Patricia Hurtado Sayas
CFGS DAM
8.- .Programación paralela y distribuida:
77 © Patricia Hurtado Sayas
CFGS DAM
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.
78 © Patricia Hurtado Sayas
Descargar