La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


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

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

2 STDIN, STDOUT, STDERR

3 IPC en DOS y UNIX 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> _ UNIX $ cat PEPE | grep “HOLA” | sort AGRADECELE A CHOLA HOLA QUE TAL $ _

4 “IPC” en DOS

5 IPC en UNIX

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

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

8 Condiciones de Competencia
EJEMPLO Cuando un proceso desea imprimir un archivo escribe el nombre de este en un directorio de SPOOL. 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 Condiciones de Competencia
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
Los procesos Concurrentes (o threads) necesitan frecuentemente compartir datos y recursos. Si no comparten datos de manera controlada puede obtener una vista inconsistente de los mismos El resultado obtenido dependerá entonces del orden de ejecución!!! INTOLERABLE !! A estas situaciones se las denomina Condiciones de Competencia o Concurso (Race Conditions)

13 Regiones Críticas 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). La ejecución de una RC debe ser mutuamente exclusiva en cualquier momento. (serializada). Solo un proceso por vez debe estar ejecutando la RC. Los procesos deben requerir permiso para ingresar en la RC.

14 Regiones Críticas

15 Regiones Críticas

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() critical section leave_region() remainder section forever

18 Características de la Solución
Exclusión Mutua En cualquier momento, a lo sumo un proceso puede estar en la RC Progreso Ningún proceso fuera de la RC debe impedir que otro proceso ingrese en la RC Espera 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 Soluciones de Software Soluciones de Hardware
Son algoritmos que no se basan en ninguna otra hipótesis. Soluciones de Hardware Recaen en instrucciones especiales de la Máquina Soluciones del Sistema Operativo Provee primitivas al programador (System Calls) Soluciones del Compilador/Lenguaje Provee primitivas al programador utilizando las soluciones de Hard, Soft o SO.

20 Clasificación de Primitivas
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
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. 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 Problemas de la Espera Ocupada

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 Cátedra: Sistemas Operativos UTN-FRSF"

Presentaciones similares


Anuncios Google