Comunicación y sicronización entre procesos

27
UNIVERSIDAD NACIONAL EXPERIMENTAL “FRANCISCO DE MIRANADA “ ÁREA CIENCIA DE LA EDUCACIÓN PROGRAMA:EDUCACIÓN U.C: SISTEMAS OPERATIVOS Sincronización entre Procesos PROFESORA: LICDA. GLORIA MELÉNDEZ

description

comunicación y incronización entre procesos

Transcript of Comunicación y sicronización entre procesos

Page 1: Comunicación y sicronización entre procesos

UNIVERSIDAD NACIONAL EXPERIMENTAL“FRANCISCO DE MIRANADA “

ÁREA CIENCIA DE LA EDUCACIÓNPROGRAMA:EDUCACIÓN

U.C: SISTEMAS OPERATIVOS

Sincronizaciónentre Procesos

PROFESORA:LICDA. GLORIA MELÉNDEZ

Page 2: Comunicación y sicronización entre procesos

Sincronización entre procesosIntroducción sincronización entre procesos

Sincronización entre procesos

Señalización entre procesos

Comunicación entre procesos

Variables Compartidas

Exclusión Mutua

Semáforos

Monitores

Mensajes

Solución por Hardware de Exclusión Mutua

InterbloqueoReferencias Bibliográficas

Page 3: Comunicación y sicronización entre procesos

La sincronización entre procesos concurrentes es esencial para preservar

las relaciones de precedencia y para evitar los problemas de temporización

relacionados con la concurrencia. Los procesos deben sincronizarse unos con otros

cuando van a utilizar recursos compartidos, tales como estructuras de datos comunes

o dispositivos físicos. Dado que el sistema operativo no conoce, ni necesita conocer, la

semántica de las actividades del proceso. Los propios procesos deben encargarse de

sincronizar adecuadamente sus operaciones.

Ante todo un punto fundamental en las tecnologías de diseños de sistemas

operativos es la concurrencia. Cuando se ejecutan varios procesos concurrentemente,

en el caso real de un sistema multiprocesador aparecen cuestiones de resolución de

conflictos y de cooperación.

Introducción a la Sincronización entre procesos

Page 4: Comunicación y sicronización entre procesos

Los procesos concurrentes pueden interactuar de varias formas:

Los procesos que no tienen conocimientos unos de otros pueden competir por recursos

tales como: el tiempo del procesador o de los dispositivos de E/S.

Los procesos pueden tener conocimiento indirecto de los otros, porque comparten el

acceso a unos objetos comunes, tales como: un bloque de memoria principal o un archivo.

Los procesos pueden tener conocimiento directo de los otros y cooperar mediante

intercambio de información.

Los puntos clave son la exclusión mutua y el interbloqueo.

Introducción a la Sincronización entre procesos

Page 5: Comunicación y sicronización entre procesos

La sincronización entre procesos viene dada por la necesidad de coordinar

procesos concurrentes (los cuales son procesos que se encuentran activos durante un

tiempo determinado), y así, optimar su presencia en los sistemas. Este tipo de

administración, de la acción de los procesos, en forma explícita del sistema operativo

infiere que este no necesitará conocer lo detalles de ciertas tareas que se correrán

dentro de ella y será responsabilidad de los programadores que los algoritmos de

sincronización se encuentren bien diseñados para que no tenga problemas y vayan a

causar un error en el sistema y se guinde.

Las formas de interacción explícita entre procesos pueden realizarse en varias

formas dependiendo de las necesidades y el nivel de integración de las distintas tareas

para lograr el trabajo requerido.

Introducción a la Sincronización entre procesos

Page 6: Comunicación y sicronización entre procesos

Sincronización entre procesos

Son una serie de protocolos que garantizan la integridad y consistencia en el

uso de los recursos reutilizables en serie, por el uso de varios procesos concurrentes.

Estos recursos reutilizables en serie son aquellos que solo pueden ser utilizados por un

proceso a la vez y que el podría ver afectado su trabajo si dos o mas procesos

concurrentes tratan de utilizarlos.

Definición

El ejemplo más claro es el de la impresora que sólo puede imprimir una

página a la vez y de acuerdo a nuestra forma de trabajo, una página deberá ser impresa

por una sola aplicación o proceso, por lo tanto si otro proceso requiere de su uso tendrá

que esperar hasta que se libere o se lo permita el otro proceso.

Ejemplo

Page 7: Comunicación y sicronización entre procesos

Señalización entre procesos

Es la manera más sencilla de interacción entre procesos debido a su

simplicidad de implantación. Esto no permite enviar información, pero es útil en

caso de necesitar realizar tareas coordinadas sencillas.

Comunicación entre procesos

Este tipo de interacción entre procesos trata de proveer un medio más

completo para la transmisión de información entre procesos, la coordinación de

tareas que utilicen recursos de uso colectivo para garantizar que el trabajo de

uno no afecte la integridad del recurso. Por ejemplo, los "pipes" y la memoria

compartida.

Page 8: Comunicación y sicronización entre procesos

Variables Compartidas

Es una forma sencilla y habitual de comunicación entre procesos

cooperativos. Cuando un conjunto de procesos tienen acceso a un espacio común

de direcciones, puede utilizar variables compartidas para una serie de cometidos,

por ejemplo, indicadores de señalización y para acumulación de resultados

colectivos.

Sin embargo, la actualización sin restricciones de variables compartidas

puede conducir a inconsistencias. Tales errores suelen ser dependientes de la

temporización específica y del modo de entrelazarse las acciones de los procesos.

Como resultado, los errores inducidos por la concurrencia pueden ser

extremadamente difíciles de detectar, reproducir y depurar.

Page 9: Comunicación y sicronización entre procesos

El hecho de que un espacio de memoria pueda ser accedida por

varios procesos podría traer problemas dentro de los sistemas. Por ejemplo,

cuando tenemos un dato y un proceso, para modificarlo debe esperar cierta

condición y lo observa, por lo que procede a tomar la decisión de modificar ese

valor, si justo en ese momento ese proceso es suspendido (sin que haya

logrado modificar el valor), y se ejecuta otro que modifique el valor en

cuestión, cuando se vuelve a ejecutar el primer proceso y termina su

modificación ese acto se estará realizando bajo condiciones distintas a las que

lo motivaron a tomar la decisión y ese valor que había colocado el otro proceso

se pierde.

Continuación de Variables Compartidas

Page 10: Comunicación y sicronización entre procesos

Exclusión Mutua

Sí se presenta un problema de inconsistencia de datos en el área de las

variables compartidas, se debe garantizar que cuando un proceso necesite

modificar un dato de la sección crítica los demás procesos no lo hagan, para eso se

restringe el uso a los demás procesos y para hacer modificaciones a las variables

compartidas cuando otro lo está realizando, a esto se le llama exclusión mutua.

Por otra parte, cuando un proceso requiere evitar que los demás

procesos no utilicen las variables compartidas procede a notificárselo al sistema

desde un principio hasta un fin explícitamente descrito, a éste segmento del

proceso se le llama sección crítica. Por lo tanto, un sólo proceso puede estar en su

sección crítica a la vez y el sistema operativo debe garantizarlo.

Page 11: Comunicación y sicronización entre procesos

Continuación de Exclusión Mutua

En cierto sentido, la actualización de una variable compartida puede ser

considerada como una sección critica.

La sección critica es una secuencia de instrucciones con un comienzo y

un final claramente marcados que, generalmente, delimita la actualización de una

o más variables compartidas. Cuando un proceso entra a una sección crítica, debe

completar todas las instrucciones incluidas en ella, antes de que se pueda

permitir a cualquier otro proceso entrar a la misma sección critica. Sólo el

proceso que ejecuta la sección critica tiene permitido el acceso a la variable

compartida; los restantes procesos deberían tenerlo prohibido hasta la

terminación. A esto se le suele llamar exclusión mutua, en la cual un solo proceso

excluye temporalmente a todos los demás de utilizar un recurso compartido con

el fin de asegurar la integridad del sistema

Page 12: Comunicación y sicronización entre procesos

Cabe destacar, que si el recurso compartido es una variable, la exclusión

mutua asegura como máximo un proceso cada vez tenga acceso a ella durante las

actualizaciones críticas que conducen a valores temporalmente inconsistentes.

Consiguientemente, los restantes procesos sólo ven valores consistentes de las

variables compartidas. En el caso de compartir dispositivos, la necesidad de exclusión

mutua es incluso más obvia cuando se considera los problemas que puede provocar

su uso incontrolado: la salida impresa procedente de varios programas puede

aparecer irrecuperablemente entremezclada sobre un único formulario, o la válvula

de un conducto puede ser obligada a estar a la vez abierta y cerrada por dos procesos

concurrentes pero sin sincronización. Cuando estas operaciones se realizan en modo

mutuamente exclusivo. Solo un programa en cada punto tiene permitido el control de

un dispositivo reutilizable en serie.

Continuación de Exclusión Mutua

Page 13: Comunicación y sicronización entre procesos

Para definir la sección crítica y eliminar los problemas de la exclusión mutua se deberá tomar en cuenta lo siguiente:

Continuación de Exclusión Mutua

Asegurar exclusión mutua entre los procesos al acceder al recurso compartido protegido.

No hacer suposiciones con respecto a las velocidades y prioridades relativas de los procesos en conflicto.

Garantizar que el aborto o terminación de cualquier proceso fuera de su sección crítica no afecte a la capacidad de los restantes procesos contendientes para acceder al recurso compartido.

Cuando más de un proceso desee entrar a la sección crítica, conceder la entrada a solo uno de ellos en tiempo finito.

Page 14: Comunicación y sicronización entre procesos

El modo más simple de asegurar la exclusión mutua es descartar la

concurrencia. Este método es demasiado drástico, ya que también anula todas

las mejoras del rendimiento, que posibilita la ejecución concurrente de

programas. Lo que realmente se busca es conceder temporalmente a un

proceso que necesita completar una sección crítica el acceso exclusivo a un

recurso compartido.

Continuación de Exclusión Mutua

Page 15: Comunicación y sicronización entre procesos

En muchas estrategias de exclusión mutua, cada proceso observa el

siguiente protocolo básico.

...negociación del protocolo;// El ganador continua sección crítica;// Uso exclusivo del recurso protocolo de liberación;// liberación el recurso...

Un proceso que desea entrar a una sección critica negocia primero con

todos los restantes interesados para asegurarse que no haya ninguna otra actividad

conflictiva en progreso, y que todos los procesos relacionados estén al tanto de la

temporal e inminente no disponibilidad del recurso. Una vez alcanzando el

consenso, el proceso ganador comienza a ejecutar su sección critica de código. Al

terminar, el proceso informa al resto de los contendientes que el recurso esta

disponible y puede iniciarse otra ronda de negociaciones.

Continuación de Exclusión Mutua

Page 16: Comunicación y sicronización entre procesos

Semáforos

Son una herramienta fácil de implementar y asegura la exclusión mutua

en los sistemas multiprocesos. Consiste en una variable que almacena un número

entero que será utilizado para indicar si hay alguien en una sección crítica o no.

Para el control de esto hay dos funciones que permiten lograr el acceso a la sección

crítica por parte de los procesos, esto implica que ellos deben estar muy bien

demarcados en cuanto a sus secciones críticas.

El problema es claro, cuando se decide que hay que entrar a la sección

crítica se debe ejecutar una modificación de este semáforo para indicarlo, pero

dentro de un comando del microprocesador indivisible. Este es, para que no haya

la posibilidad de suspensión del proceso justo en ese momento (que es la

posibilidad problema).

Page 17: Comunicación y sicronización entre procesos

Para ellos se plantean dos funciones básicas y sencillas de utilizar:

Wait (semáforo): que se encarga de activar el semáforo para evitar que otro

proceso entre en la sección crítica. Internamente cuenta con la premisa de que

una vez tomada la decisión de activar el semáforo se ejecutará dicha activación

en un comando indivisible para el microprocesador.

Signal (semáforo): que se encarga de liberar el semáforo para que otro

pueda acceder a él.

Continuación de Semáforos

Page 18: Comunicación y sicronización entre procesos

Continuación de Semáforos

Como es de esperarse pueden existir varias secciones criticas dentro de los

procesos que no necesariamente tengan que acceder a la misma información por

lo tanto no se debería considerar una exclusión mutua en esos casos.

Por ejemplo, si una tarea va a acceder a una variable A y otra a una variable B,

no habría ningún problema en que ambos accedieran a los datos al mismo instante

(aparente). Es por eso que las funciones Wait y Signal poseen un parámetro

(semáforo) de tal forma que se puedan definir tantos semáforos como variables o

grupos de variables compartibles hayan dentro de un sistema.

Page 19: Comunicación y sicronización entre procesos

Continuación de Semáforos

La implementación de estas funciones queda así:

Wait(s): while (!(s>0)) {}; s - -;Signal(s): s++;

Por lo tanto, si un proceso quiere hacer uso de un semáforo para implementar una sección crítica será:{            ...              Wait (variable_semáforo_1);              Sección Crítica;              Signal (variable_semáforo_1);              ...}

Page 20: Comunicación y sicronización entre procesos

Monitores

Un monitor es, esencialmente, una colección de datos y de

procedimientos para su manipulación junto con una secuencia de inicialización.

Las variables de datos globales son generalmente privadas al monitor por lo que

sólo son accesibles a los procedimientos de éste. Los procedimientos del monitor

podrán ser públicos o privados.

Un monitor puede considerarse como una estructura estática que se

activa únicamente cuando alguno de sus procedimientos públicos es llamado por

un proceso en ejecución y se dice, entonces, que el proceso en cuestión entra o

tiene acceso al monitor.

Page 21: Comunicación y sicronización entre procesos

Una característica básica de los monitores es proporcionar control sobre

las operaciones realizadas y sobre los elementos compartidos con el fin de prevenir

actuaciones dañinas o sin significado. De esta forma, se limitan los tipos de

actuaciones proporcionando un conjunto de procedimientos de manipulación

fiables y bien probados. Éstos avanzan un paso en este sentido haciendo los datos

críticos accesibles indirecta y exclusivamente mediante un conjunto de

procedimientos públicos disponibles.

Los monitores encapsulan los datos utilizados por los procesos

concurrentes y permiten su manipulación sólo por medio de operaciones

adecuadas y sincronizadas. Nunca existirá peligro de actualización inconsistente

por entrelazamiento de llamadas concurrentes ya que los procesos del monitor

siempre se ejecutarán en exclusión mutua.

Continuación de Monitores

Page 22: Comunicación y sicronización entre procesos

Mensajes

Un mensaje es una colección de información que puede ser

intercambiada entre un proceso emisor y un proceso receptor.

Un mensaje puede contener datos, órdenes de ejecución e, incluso,

código a transmitir entre dos o más procesos. Aunque, en general, el contenido

de un mensaje quedaría dividido en dos campos bien separados; Por un lado, la

cabecera que habitualmente tiene un formato fijo para cada sistema operativo-y,

por otro lado, el cuerpo del mensaje que contiene el mensaje en sí y cuya

longitud puede variar incluso dentro de un mismo SO. Las operaciones de

mensaje típicas proporcionadas por el SO son: enviar (send) y recibir (receive).

Page 23: Comunicación y sicronización entre procesos

Mensajes

Las implementaciones del envío y recepción de mensajes pueden diferir

en una serie de detalles pero todas ellas mantienen la importancia de un

conjunto de cuestiones que son:

1) Denominación o direccionamiento

2) Copia

3) Intercambio síncrono vs intercambio asíncrono.

4) Longitud

Page 24: Comunicación y sicronización entre procesos

Solución por Hardware de Exclusión Mutua

Existe una forma de implementar la exclusión mutua utilizando

directamente las funciones de hardware. Se trata de habilitar y deshabilitar las

interrupciones de hardware, vía que es utilizada para el control de la

conmutación entre procesos. Claro, su efectividad es debida a que cuando se

deshabilita las interrupciones nadie más podrá utilizar los recursos del sistema

hasta que se vuelvan a habilitar las interrupciones. Ya los semáforos

desaparecen pero todos los recursos son considerados como un "todo" donde

mientras uno lo usa los demás quedan excluidos de tal posibilidad, aunque las

variables implicadas sean distintas.

Page 25: Comunicación y sicronización entre procesos

Solución por Hardware de Exclusión Mutua

Así existen las funciones de Hardware:

DI: para deshabilitar las interrupciones.EI: para habilitar las interrupciones.De esta forma el proceso queda:...DISección Crítica;EI...Aunque ciertos procesadores cuentan con otros funciones diseñadas con el fin de satisfacer las necesidades de la exclusión mutua esta es la forma que está presente en casi todos los microprocesadores y microcontroladores existentes en el mercado.

Page 26: Comunicación y sicronización entre procesos

Interbloqueo

Una situación de interbloqueo tiene lugar cuando ninguno de los procesos

que compiten por los recursos del sistema o interactúan entre sí puede avanzar por

carecer de algún recurso o esperar a que se produzca algún tipo de evento.

Deben darse tres condiciones para que se produzca interbloqueo

1. Que exista acceso a algún recurso en exclusión mutua.

2. Que un proceso pueda retener los recursos que le han sido asignados mientras

espera que se le asignen los que necesitan.

3. Que ningún proceso pueda ser obligado a abandonar los recursos que retenga.

Estas tres condiciones de interbloqueo son condiciones necesarias pero no suficientes, es decir, pueden producirse tales situaciones y que el sistema no evolucione a un interbloqueo.

Page 27: Comunicación y sicronización entre procesos

LA RED, D (2001). Sistema Operativos. Universidad Nacional del Noroeste , Argentina

RUIZ, P (2004). Sistema Operativos. California, USA: Commons.

Referencias Bibliográficas