Clase 9 Concurrencia.pdf
Document Details
Uploaded by HardWorkingErudition
Tags
Full Transcript
SISTEMAS OPERATIVOS Concurrencia Exclusión mutua y sincronización Concurrencia • La concurrencia es la simultaneidad de hechos. • Un programa concurrente es aquel en el que ciertas unidades de ejecución internamente secuenciales (procesos o threads), se ejecutan paralela o simultáneamente. • Inclu...
SISTEMAS OPERATIVOS Concurrencia Exclusión mutua y sincronización Concurrencia • La concurrencia es la simultaneidad de hechos. • Un programa concurrente es aquel en el que ciertas unidades de ejecución internamente secuenciales (procesos o threads), se ejecutan paralela o simultáneamente. • Incluye los siguientes aspectos: – – – – comunicación entre procesos. compartición y competencia por los recursos. sincronización de la ejecución de varios procesos. asignación del tiempo de procesador a los procesos. • Surgen en entornos con un solo procesador, con multiprocesadores y proceso distribuido. 2 /72 Concurrencia • Un programa concurrente está formado por una colección de procesos secuenciales autónomos que se ejecutan (aparentemente) en paralelo. • Tres formas de ejecutar procesos concurrentes: 1. Los procesos multiplexan sus ejecuciones sobre un único procesador (multiprogramación). 2. Los procesos multiplexan sus ejecuciones sobre un sistema multiprocesador de memoria compartida (multiproceso). 3. Los procesos multiplexan sus ejecuciones en varios procesadores que no comparten memoria (procesamiento distribuido). • El término concurrencia indica paralelismo potencial. 3 /72 Concurrencia multiprogramación multiproceso Procesamiento distribuido 4 /72 Concurrencia • En un sistema multiprogramado (1 μP), los procesos se intercalan, para dar la apariencia de simultaneidad. P 1 P 2 P 3 • En un sistema con varios procesadores (n μP), los procesos se superponen. P 1 P 2 P 3 5 /72 Dificultades con la Concurrencia • Los problemas generados por la multiprogramación surgen por que no es posible predecir la velocidad relativa de los procesos: • La actividad de un proceso depende de la actividad de los otros procesos y de la forma cómo el SO trata las interrupciones y las políticas de planificación. • Dificultades: – Compartir recursos globales (variable global) – Manejar la asignación de recursos – Detectar un error es difícil, dado que es difícil reproducir la situación.. 6 /72 Un ejemplo simple chin chou t P1 P2 7 /72 un ejemplo simple void echo() { char_in = getchar(); char_out = char_in; putchar(char_out); } Se asume que esta función es usada por muchos procesos en el SO y dado que existe una sola pantalla y un solo teclado, todos los programas interactúan con este programa. Por lo que lo que es recomendable tenerlo siempre en memoria 8 /72 INTERACCION ENTRE PROCESOS 9 /72 Tipos de proceso Independientes Cooperantes Su estado no es compartido Su estado es compartido Son deterministas Su funcionamiento no es determinista Son reproducibles Su funcionamiento puede ser irreproducible Ejemplo: Un programa que calcula 1000 cifras decimales de π Ejemplo: un proceso que escribe en el terminal la cadena “abc” y en otro la cadena “cba” 10 /72 Interacción entre procesos • La concurrencia se presenta cuando existen: – multiprogramación de aplicaciones independientes. – aplicaciones con varios procesos. – el uso de las estructuras de datos del SO. – el computador se dispone de varios procesadores. (multiprogramación). (multiproceso). (procesamiento distribuido). 11 /72 Interacción entre procesos • Existen tres maneras en que los procesos interactúan: 1 competencia por recursos escasos. – Los procesos no conocen a los demás 2 cooperación por compartición – Los procesos conocen indirectamente a los demás 3 cooperación por comunicación – Los proceso conocen directamente a los otros. •Interbloqueo •Inanición •Exclusión mutua •Interbloqueo •Inanición •Exclusión mutua •Coherencia de datos •Interbloqueo •Inanición 12 /72 1 Competencia por recursos escasos • Los procesos compiten por recursos escasos. • Si dos procesos compiten por un recurso 🡪 • el SO asigna el recurso a uno y el otro espera • Problemas. – Interbloqueo (estancamiento) – Inanición – Exclusión mutua 13 /72 Ejemplo Recursos disponibles P P P P P P P P P P P P P P P 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 Estado inicial Estado seguro Estado seguro Estado inseguro Estado inseguro 14 /72 2 La cooperación por compartición • Los procesos no se conocen. • Los procesos cooperan para evitar inconsistencias • Recursos compartidos: – variables compartidas – ficheros – bases de datos • Problema – Confianza • Solución – Exclusión mutua🡪 – Sección crítica🡪 • La escritura debe ser mutuamente excluyente. • La lectura puede ser concurrente 15 /72 3 La cooperación para la comunicación • Los procesos se conocen explícitamente. • La comunicación se da con mensajes: send, receive. • No se comparten recursos 🡪 no exclusión mutua. • Problemas. – Interbloqueo. Cada proceso espera un mensaje del otro proceso – Inanición. Dos procesan envían sus mensaje mutuamente mientras que esperan un mensaje del otro proceso 16 /72 PROBLEMAS POTENCIALES A RESOLVER 17 /72 1. Exclusión mutua • Es un mecanismo empleado en el diseño de los sistemas operativos para evitar los problemas de competencia por recursos, se basa en definir una zona o región crítica la cual está marcada por las instrucciones que hacen uso del recurso en competencia (recurso crítico). 18 /72 2. Interbloqueo (deadlock) condiciones : P1 requiere R1 y R2 P2 requiere R1 y R2 acciones: 1. P1 obtiene R1 2. P2 obtiene R2 3. P1 Y P2 están bloqueados esperando cada uno al otro R 1 1 P1 R 1 0 P2 P1 R 1 0 P2 P1 P2 1 1 0 R 2 R 2 R 2 19 /72 3. Inanición • Los procesos siempre están bloqueados y nunca acceden a los recursos que necesitan Sean 3 procesos. – – – – – – – P1 solicita recurso. P2 y P3 solicitan recursos P1 suelta el recurso Se asigna el recurso a P2 P1 solicita el recurso P2 suelta el recurso Se asigna el recurso a P1 20 /72 SECCION CRÍTICA 21 /72 Sección Crítica • Es la parte del programa que accede a un recurso compartido • Solo un programa puede acceder a su sección crítica en un momento dado • NO se puede confiar simplemente en el SO para hacer cumplir esta restricción Se suspende la ejecución de la sección crítica hasta que acabe el anterior Ejemplo: solo un proceso en cada momento estará enviando comandos a la impresora sección crítica 22 /72 Requerimientos para exclusión mutua 1. Exclusión mutua. Sólo un procese accede a la vez a su SC 2. Un proceso suspendido en su SC no debe estorbar a otros 3. No inanición, no interbloqueo. Si un proceso solicita acceso a su SC no debe demorar su atención. 4. Si ningún proceso está en su SC, no se puede evitar que otro proceso entre a su SC. 5. No suponer la velocidad relativa de los procesos. 6. Se permanece en la SC por un tiempo finito. 23 /72