La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

INTERPROCESS COMMUNICATIONS-1 INTERPROCESS COMMUNICATIONS-1 Cátedra: Sistemas Operativos UTN-FRSF.

Presentaciones similares


Presentación del tema: "INTERPROCESS COMMUNICATIONS-1 INTERPROCESS COMMUNICATIONS-1 Cátedra: Sistemas Operativos UTN-FRSF."— Transcripción de la presentación:

1 INTERPROCESS COMMUNICATIONS-1 INTERPROCESS COMMUNICATIONS-1 Cátedra: Sistemas Operativos UTN-FRSF

2 STDIN, STDOUT, STDERR

3 IPC en DOS y UNIX UNIX $ cat PEPE | grep HOLA | sort AGRADECELE A CHOLA HOLA QUE TAL $ _ Archivo PEPE: HOLA QUE TAL COMO TE VA AGRADECELE A CHOLA DOS C:\DOS> TYPE PEPE | FIND HOLA | SORT AGRADECELE A CHOLA HOLA QUE TAL C:\DOS> _

4 IPC en DOS

5 IPC en UNIX

6 Interacción entre procesos JLos Procesos no son entidades independientes: íCooperan y compiten para realizar su labor. JNecesidad de sincronizarse y comunicarse JAspectos a Analizar: íMecanismos de sincronización y comunicación ofrecidos por OS. íSincronización dentro del propio OS.

7 Comunicación/Sincronización J Comunicación: J Comunicación: permite ejecución de un proceso para influenciar ejecución de otro. J Comunicación: J Comunicación: Está basada en el uso de variables compartidas o envío de mensajes. La sincronización: J La sincronización: es necesaria frecuentemente cuando los procesos se comunican. La sincronización: J La sincronización: puede verse como un conjunto de restricciones para el ordenamiento de eventos.

8 Condiciones de Competencia EJEMPLO J Cuando un proceso desea imprimir un archivo escribe el nombre de este en un directorio de SPOOL. J Otro proceso, demonio impresión (lpd) verifica si existen archivos por imprimir, los imprime y elimina sus nombres del directorio

9 Condiciones de Competencia

10 Proceso_A() { Print_File(in, fileA); in = in + 1;..... } Proceso_B() { Print_File(in, fileB); in = in + 1;..... } Secuencia de ejecución: Print_File(in, fileA); => in = 7 Print_File(in, fileB); => in = 7 in = in + 1; => in = 8 in = in + 1; => in = 9 Resultado: El archivo fileA nunca se imprime y la ranura 8 queda vacía !!

11 Condiciones de Competencia Proceso_A() { in = in + 1; Print_File(in-1, fileA);..... } Proceso_B() { in = in + 1; Print_File(in-1, fileB);..... } Secuencia de ejecución: in = in + 1; => in = 8 in = in + 1; => in = 9 Print_File(in-1, fileB); => in-1 = 8 Print_File(in-1, fileA); => in-1 = 8 Resultado: El archivo fileB nunca se imprime y la ranura 7 queda vacía !!

12 Condiciones de Competencia J Los procesos Concurrentes (o threads) necesitan frecuentemente compartir datos y recursos. J Si no comparten datos de manera controlada puede obtener una vista inconsistente de los mismos del orden de ejecución!!! INTOLERABLE !! J El resultado obtenido dependerá entonces del orden de ejecución!!! INTOLERABLE !! JA estas situaciones se las denomina Condiciones de Competencia o Concurso (Race Conditions)

13 Regiones Críticas J Cuando un proceso manipula datos o recursos compartidos, se dice que ese proceso se encuentra en una Región Crítica (para ese dato compartido). J La ejecución de una RC debe ser mutuamente exclusiva en cualquier momento. (serializada). J Solo un proceso por vez debe estar ejecutando la RC. J Los procesos deben requerir permiso para ingresar en la RC.

14 Regiones Críticas

15

16 Características de la Solución òTodo proceso se ejecuta a una velocidad distinta de cero, pero no pueden hacerse estimaciones respecto a la velocidad relativa de los procesos.

17 Características de la Solución òNo hacer estimaciones respecto al orden relativo de ejecución. òEstructura Genérica: repeat enter_region() enter_region() critical section critical section leave_region() leave_region() remainder section remainder sectionforever

18 Características de la Solución JExclusión Mutua –En cualquier momento, a lo sumo un proceso puede estar en la RC JProgreso –Ningún proceso fuera de la RC debe impedir que otro proceso ingrese en la RC JEspera Acotada –Después que un proceso ha requerido ingresar en la RC, debe acotarse el número de veces que otro proceso pueda ingresar a la RC o el proceso en cuestión sufrirá de inhanición.

19 Tipos de Soluciones J Soluciones de Software –Son algoritmos que no se basan en ninguna otra hipótesis. J Soluciones de Hardware –Recaen en instrucciones especiales de la Máquina J Soluciones del Sistema Operativo –Provee primitivas al programador (System Calls) J Soluciones del Compilador/Lenguaje –Provee primitivas al programador utilizando las soluciones de Hard, Soft o SO.

20 Clasificación de Primitivas J CON ESPERA OCUPADA í Variable Cerrojo o Candado íAlternancia Estricta í Activación/Desactivación de Interrupciones í TSL/XCHG í Solución de Peterson

21 Clasificación de Primitivas J CON BLOQUEO ísleep()/wakeup() íSemáforos ( up()/down()) Õ De exclusión Õ De eventos íContadores de Eventos ( await()/advance()) íBarreras íMonitores Õ Variables de Condición (wait()/signal()) í Transferencia de Mensajes Õ Con Principio de Cita Õ Con Buzones

22 Variable Cerrojo (spinlocks)

23 Alternancia Estricta Cuando la Región NO-Crítica de un proceso es mas lenta que la del otro, un proceso fuera de la Región Crítica impide la entrada de un proceso que está intentando ingresar a la RC.

24 Desactivación de Interrupciones òEn uniprocesadores: Se preserva la exclusión mutua pero se degrada la eficiencia òSi está en RC otros procesos no pueden ejecutar estando fuera de la RC òNo sirve en multiprocesadores òNo es una primitiva para darle a cualquiera Process Pi: repeat disable_interrupts critical section enable_interrupts remainder section forever

25 TSL

26 TSL

27 TSL òSe preserva la Exclusión Mutua: si un proceso está en la RC otro no puede ingresar. òProblema: Utiliza espera ocupada. xchg(a,b) òLos procesadores Intel ofrecen xchg(a,b) que permite intercambiar el contenido de a y b.

28 XCHG òLa variable compartida b se inicializa en 0 òCada proceso Pi tiene una variable local k òEl único proceso que puede ingresar a la RC es el que tiene b=0 òEl resto de los procesos tiene b=1 Process Pi: repeat k:=1 repeat xchg(k,b) until k=0; critical section b:=0; remainder section forever

29 Solución de Peterson

30 Problemas de la Espera Ocupada

31

32 Productor/Consumidor Un proceso Productor produce información que será consumida por el proceso Consumidor –Ejemplo1: un programa que lista un archivo y otro que filtra el texto que le es suministrado por el primero. –Ejemplo2: un driver de teclado que genera caracteres que son consumidos por el programa de usuario. Se necesita un Buffer para contener los items producidos mientras se van consumiendo Es un problema típico de los procesos que cooperan entre sí.

33 BUFFER

34 Sleep/Wakeup

35 Sleep/Wakeup


Descargar ppt "INTERPROCESS COMMUNICATIONS-1 INTERPROCESS COMMUNICATIONS-1 Cátedra: Sistemas Operativos UTN-FRSF."

Presentaciones similares


Anuncios Google