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