Comunicación Entre Procesos

15
COMUNICACIÓN ENTRE PROCESOS Kevin Valarezo Juan Morocho

description

comunicacion entre procesos

Transcript of Comunicación Entre Procesos

COMUNICACIN ENTRE PROCESOS

COMUNICACIN ENTRE PROCESOSKevin ValarezoJuan MorochoCOMUNICACIN ENTRE PROCESOSLos procesos necesitan comunicarse con otros procesos. Existe una necesidad de comunicacin entre procesos, de preferencia en una forma bien estructurada sin utilizar interrupciones.Hay tres cuestiones, La primera: cmo un proceso puede pasar informacin a otro. La segunda est relacionada con hacer que dos o ms procesos no se interpongan entre s; La tercera trata acerca de obtener la secuencia apropiada cuando hay dependencias presentes: si el proceso A produce datos y el proceso B los imprime, B tiene que esperar hasta que A haya producido algunos datos antes de empezar a imprimirCondiciones de carreraEn algunos sistemas operativos, los procesos que trabajan en conjunto pueden compartir cierto espacio de almacenamiento en el que pueden leer y escribir datos.El almacenamiento compartido puede estar en la memoria principal o puede ser un archivo compartido; la ubicacin de la memoria compartida no cambia la naturaleza de la comunicacin o los problemas que surgen. Condiciones de carreraUn ejemplo practico: un spooler de Impresin

Condiciones de carrerawhile (true){leer entradasiguiente_ranura_libre = entradacolocar archivoentrada = entrada + 1}

Aleer entradaentrada = 7siguiente_ranura_libre = entrada

Se termin cuanto de aBentrada = 7colocar archivoBentrada = 8entrada = entrada + 1

AAentrada = 8Condiciones de carreraSituaciones como sta, en donde dos o ms procesos estn leyendo o escribiendo algunos datos compartidos y el resultado final depende de quin se ejecuta y exactamente cundo lo hace, se conocen como condiciones de carrera. Depurar programas que contienen condiciones de carrera no es nada divertido. Los resultados de la mayora de las ejecuciones de prueba estn bien, pero en algn momento poco frecuente ocurrir algo extrao e inexplicableRegiones crticasCmo evitamos las condiciones de carrera? La clave para evitar problemas involucra la memoria compartidaLo que se necesita es exclusin mutua* Parte del tiempo, un proceso est ocupado realizando clculos internos y otras cosas que no producen condiciones de carrera. Sin embargo, algunas veces un proceso tiene que acceder a la memoria compartida o a archivos compartidos, o hacer otras cosas crticas que pueden producir carreras.Esto se lo conoce como la regin o la seccin crtica* Consiste en que un solo proceso excluye temporalmente a todos los dems para usar un recurso compartido de forma que garantice la integridad del sistema.Regiones crticasAunque este requerimiento evita las condiciones de carrera, no es suficiente para que los procesos en paralelo cooperen de la manera correcta y eficiente al utilizar datos compartidos. Necesitamos cumplir con cuatro condiciones para tener una buena solucin:No puede haber dos procesos de manera simultnea dentro de sus regiones crticas.No pueden hacerse suposiciones acerca de las velocidades o el nmero de CPUs.Ningn proceso que se ejecute fuera de su regin crtica puede bloquear otros procesos.Ningn proceso tiene que esperar para siempre para entrar a su regin crtica.Regiones crticas

Deshabilitando interrupcionesEn un sistema con un solo procesador, la solucin ms simple es hacer que cada proceso deshabilite todas las interrupciones justo despus de entrar a su regin crtica y las rehabilite justo despus de salir. Con las interrupciones deshabilitadas, no pueden ocurrir interrupciones de reloj. La CPU slo se conmuta de un proceso a otro como resultado de una interrupcin del reloj o de otro tipo, y con las interrupciones desactivadas la CPU no se conmutar a otro proceso. Una vez que un proceso ha deshabilitado las interrupciones, puede examinar y actualizar la memoria compartida sin temor de que algn otro proceso intervengaDeshabilitando interrupcioneswhile (true){deshabilitar();seccion_critica();habilitar();seccion_no_critica();}1. No puede haber dos procesos de manera simultnea dentro de sus regiones crticas.deshabilitar();Deshabilitar las interrupciones del procesadorseccion_critica();

Atiende a un solo proceso mientras este en la seccin criticahabilitar();Habilita las interrupciones del procesadorseccion_no_critica();

Entra a la seccin no critica

CPU 1while (true){deshabilitar();seccion_critica();habilitar();seccion_no_critica();}CPU 2

while (true){deshabilitar();seccion_critica();habilitar();seccion_no_critica();}while (true){seccion_critica();while (true){seccion_critica();Deshabilitando interrupcioneswhile (true){deshabilitar();seccion_critica();habilitar();seccion_no_critica();}2. No pueden hacerse suposiciones acerca de las velocidades o el nmero de CPUs.while (true){deshabilitar();seccion_critica();habilitar();seccion_no_critica();}CPU 1CPU 2

Si se trabaja con una sola CPU la inhabilitacin trabajara normalmenteAl trabajar con 2 o mas CPU se tendran diversas velocidades para atencin de procesos haciendo que tampoco se cumpla la 1 condicin

Deshabilitando interrupcioneswhile (true){deshabilitar();seccion_critica();habilitar();seccion_no_critica();}3. Ningn proceso que se ejecute fuera de su regin crtica puede bloquear otros procesos.deshabilitar();Un cdigo de usuario deshabilito las interrupcionesEntro a la seccin criticaseccion_critica();habilitar();El cdigo de usuario vuelve a habilitar las interrupcionesseccion_no_critica();Entra a la seccin no critica

habilitar();

El cdigo de usuario jams vuelve a activar el procesoDeshabilitando interrupcioneswhile (true){deshabilitar();seccion_critica();habilitar();seccion_no_critica();}4. Ningn proceso tiene que esperar para siempre para entrar a su regin crtica.

deshabilitar();seccion_critica();Un proceso ocupa mucha rfaga de CPU por lo que no sale de la seccin critica

Deshabilitando interrupcionesNo es conveniente dar a los procesos de usuario el poder para desactivar las interrupciones. Si uno de ellos lo hiciera y nunca las volviera a activar. se podra ser el fin del sistema; an ms: si el sistema es un multiprocesador (con dos o posiblemente ms CPUs), al deshabilitar las interrupciones slo se ve afectada la CPU que ejecut la instruccin disable. Las dems continuarn ejecutndose y pueden acceder a la memoria compartida.Con frecuencia es conveniente para el mismo kernel deshabilitar las interrupciones por unas cuantas instrucciones mientras actualiza variables o listas. A menudo deshabilitar interrupciones es una tcnica til dentro del mismo sistema operativo, pero no es apropiada como mecanismo de exclusin mutua general para los procesos de usuario.