Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porDébora Lagunas Modificado hace 10 años
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
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.