Sei sulla pagina 1di 22

Sistemas Operativos Distribuidos

6-1

Las dos formas de implantar los sistemas distribuidos; sistemas multiprocesadores y sistemas multicomputadoras, imponen caractersticas distintas en el uso de la memoria. Los diseadores de algoritmos para compartir de la memoria prefieren los sistemas multiprocesadores dado que ya se tiene gran experiencia en la comparticin de la memoria entre varios procesos en ejecucin ( sistemas multiprogramados ). Todos los procesos en ejecucin concurrente leen y escriben sobre la misma memoria. Para evitar problemas, las reas compartidas deben accederse por medio de secciones crticas protegidas mediante la exclusin mutua. Semforos y monitores pueden utilizarse para practicar la exclusin mutua requerida. En un sistema multicomputador, cada computadora cuenta con su propia memoria y los procesos en ejecucin en diferentes estaciones se comunican mediante el pase de mensajes. En este ambiente la comparticin de las memorias entre los procesos en ejecucin plantea problemas no encontrados en los sistemas multiprocesador. Como se puede compartir una estructura de datos presente en la memoria de una estacin entre procesos que se ejecutan en estaciones distintas ?. El enviar una copia de la estructura de datos a cada estacin resuelve el problema, pero crea otros relativos a la consistencia de los datos. Una estacin puede actualizar la estructura haciendo que los datos presentes en las otras estaciones sean invlidos. El mecanismo de pase de mensajes, an con el ocultamiento de su complejidad derivado del uso de los RPCs no puede manejar con eficiencia la transferencia de grficas y otras estructuras de datos con apuntadores. Otro problema lo plantea el uso de variables globales cuando los procesos que las utilizan residen en estaciones distintas. En resumen, en la perspectiva de un diseador de software, los multiprocesadores son en definitivo preferibles a las multicomputadoras lo cual plantea un dilema, puesto que en la perspectiva del implantador, es mucho ms fcil y barato implantar un sistema distribuido mediante varias estaciones de trabajo conectadas por medio de una red. Lo que se necesitan son sistemas fciles de construir y programar. El concepto de memoria compartida distribuida fue propuesto originalmente por Li ( 1986 ) y Li y Hudak ( 1989 ). En resumen proponan tener una coleccin de estaciones de trabajo conectadas por una LAN y compartiendo un solo espacio de direcciones virtuales con pginas. En la variante ms simple, cada pgina esta presente en una mquina. Un intento por acceder a una pgina de alguna computadora diferente causa un fallo de pgina en hardware, el cual realiza un sealamiento al sistema operativo. El SO enva un mensaje a la mquina remota, quin encuentra la pgina necesaria y la enva al procesador que la solicito. Entonces se reinicia la instruccin detenida y se puede concluir. Este esquema se asemeja al de memoria virtual paginada en un sistema tradicional. La nica diferencia es que las pginas requeridas en lugar de ser tomadas del disco del sistema, se solicitan a una mquina remota. De hecho Li y Hudak disearon un sistema que es fcil de programar ( memoria compartida lgicamente ) y fcil de construir ( sin memoria compartida fsicamente ). Desafortunadamente, esta propuesta ocasiona que las pginas de memoria anden de un lado a otro en la red generando un fuerte trfico. Las nuevas propuestas tienen como objetivo minimizar el trfico de la red y reducir la latencia entre el momento de una solicitud a memoria y el momento que se satisface sta. La memoria compartida.

Ing. Fausto M. Orozco Carvajal

Sistemas Operativos Distribuidos

6-2

La forma en que se comparte la memoria en los sistemas multiprocesadores ha inspirado algunos algoritmos para implantar la memoria compartida distribuida. Se analizan enseguida algunos esquemas de comparticin de memoria en sistemas multiprocesadores. Memoria en circuitos. En esta forma de implantacin, la memoria esta integrada en un mismo chip junto con el CPU. Direcciones y lneas de datos conectan la CPU con la memoria ( Fig. 6.1(a.)). Una modificacin a dicha configuracin permite conectar varios CPUs a las lneas que van hacia la memoria logrando compartir sta entre todos los CPUs ( Fig. 6.1(b) ). Esta implantacin sera muy complicada y poco usual adems de imprctica desde el punto de vista de la ingeniera.
Paquete de circuitos

CPU CPU
MEMORIA

CPU
Direcciones y lneas de datos que conectan el CPU con la memoria (a)
. . .

MEMORIA

CPU

CPU

(b)

Fig. 6.1 (a ) una computadora con un solo circuito. ( b ) un multiprocesador de memoria Compartida hipottico. Multiprocesadores basados en bus. Una coleccin de cables que conducen seales de datos, direcciones y control conforman un bus. El bus esta integrado en una tarjeta impresa ( como en el caso de las mquinas de escritorio ) o puede ser un cable externo que permite la interconexin de los componentes perifricos ( como en las macrocomputadroras ). La forma ms simple y prctica de construir un sistema multiprocesador es basarlo en un bus con ms de un CPU y una sola memoria compartida entre todos. ( Fig. 6.2. )

Ing. Fausto M. Orozco Carvajal

Sistemas Operativos Distribuidos

6-3

CPU

CPU

CPU

Memoria

Bus

Fig. 6.2. Un multiprocesador sencillo. En esta implantacin se requiere implementar algn protocolo de acceso al bus para evitar que dos o ms CPUs intenten acceder simultneamente al bus. La desventaja principal de esta implantacin es que con unos cuantos CPUs el bus se sobrecargar cuando se acceda a la nica memoria que posee el sistema. Una forma de reducir el nmero de accesos a la memoria es dotar a cada CPU con un pequeo cach de memoria, llamado cach husmeador por el hecho de estar pendiente de la actividad del bus y atrapar algunos accesos. ( Fig. 6.3 )

CPU
Cach

CPU
Cach

CPU
Cach

Memoria

Bus

Fig. 6.3. Un multiprocesador con cach husmeador. Importante en esta forma de implantacin son los protocolos de consistencia del cach, es decir, las reglas para asegurarse de que los diferentes cachs no contengan valores diferentes para la misma localidad de memoria. Un protocolo en particular comn es el de escritura a travs del cach. Cuando un CPU lee por primera vez una palabra de memoria, esa palabra es llevada por el bus y guardada en el cach del CPU solicitante. Si ms tarde se necesita esa palabra, el CPU la toma del cach sin necesidad de hacer otra solicitud a memoria, reduciendo as el trfico del bus. Cada CPU realiza el ocultamiento en forma independiente de los dems. En consecuencia es posible que una palabra en particular se oculte en dos o ms CPUs al mismo tiempo. En este caso, Que sucede cuando se realiza una escritura ?. Si la palabra se encuentra en el cach del CPU que realiza la escritura, la entrada se actualiza. Est o no en el cach, tambin se escribe en el bus para actualizar la memoria. Todos los dems cachs que estn husmeando el bus se dan cuenta de esta actividad y si estn ocultando la misma palabra, proceden a invalidarla de forma tal que cuando la referencen tendrn que obtenerla de la memoria. Una alternativa es que los cachs sean actualizados en lugar de invalidar sus entradas. Pero lo primero es ms lento que lo segundo, dado que la invalidacin implica solo proporcionar una direccin, mientras que la actualizacin implica proporcionar la direccin ms el valor a registrar.

Ing. Fausto M. Orozco Carvajal

Sistemas Operativos Distribuidos

6-4

La tabla siguiente resume el protocolo de escritura a travs del cach. La primera columna muestra los evento bsicos que pueden suceder. La columna 2 muestra lo que hace el cach en respuesta a las acciones del propio CPU. La tercer columna indica lo que sucede cuando un cach ve ( al husmear ) que un CPU diferente tiene xito o fracaso. Accin realizada por un cach en respuesta Accin realizada por un a la operacin de su propio CPU en respuesta a una un CPU remoto. No hay accin No hay accin No hay accin Invalida la entrada del cach

cach operacin de Evento Fracaso de lectura Buscar datos en memoria y guardar en el cach xito de lectura Buscar datos del cach local Fracaso de Actualizar los datos en memoria y guardar escritura en cach xito de escritura Actualizar memoria y cach

Este protocolo es fcil de entender e implantar, pero tiene la seria desventaja de que todas las escrituras utilizan el bus. Aunque es cierto que el protocolo reduce el trfico del bus en cierta medida, el nmero de procesadores que se conectan al bus es an pequeo como para permitir la construccin de multiprocesadores a gran escala que lo utilicen. De la observacin del uso de variables por parte de los programas en ejecucin se desprende el hecho de que una vez que un CPU ha escrito una palabra es probable que la necesite otra vez, y es poco probable que otro CPU la utilice con rapidez. Esto sugiere que un CPU que ha actualizado una palabra adquiera una cierta membresa sobre la misma, de forma tal que posteriores actualizaciones no ocurran en la memoria hasta que otro CPU exhiba un inters en la misma palabra. Goodman ( 1983 ) dise un protocolo llamado de una escritura basado en un bus existente y ms complicado de lo estrictamente necesario. Se revisa aqu una versin simplificada de ste ( Fig. 6.4 ). El protocolo maneja bloques de cach que pueden estar en uno de 3 estados posibles: 1. INVALIDO. Este bloque de cach no contiene datos vlidos. 2. LIMPIO. La memoria est actualizada; el bloque puede estar en otros cachs. 3. SUCIO. La memoria es incorrecta; ningn otro cach puede contener al bloque. La idea bsica es que una palabra leda por varios CPU est presente en todos sus cachs. Una palabra en la que una mquina escribe repetidamente se guarda en su cach y no se vuelve a escribir en memoria despus de cada escritura, para reducir el trfico del bus. La Fig. 6.4. ilustra un protocolo de membresa de cach. En la Fig. 6.4(a) el procesador B lee la palabra W de la memoria obteniendo el valor W1 que almacena en su cach, que se marca como LIMPIO. En la Fig. 6.4(b) el procesador A obtiene tambin el valor de W y lo guarda en su cach marcndose tambin como LIMPIO al igual que el de B. En la Fig. 6.4(c) el procesador A escribe un nuevo valor W2 para W. Puesto que el cach de B esta husmeando el bus se da cuenta de esta accin e invalida su entrada. A marca su cach como SUCIO dado que la memoria no esta actualizada. En la Fig. 6.4(d). A vuelve a escribir un nuevo valor W3

Ing. Fausto M. Orozco Carvajal

Sistemas Operativos Distribuidos

6-5

para W en su cach. El estado de los cachs no cambia. En la Fig. 6.4(e) C lee la variable W de la memoria. Puesto que el cach de A esta husmeando el bus, se da cuenta de la peticin y enva el valor W3 de W al procesador C. A marca su cach como INVALIDO y C marca el suyo como SUCIO dado que tiene la copia actualizada de W. En este momento C puede leer o escribir en el cach sin requerir accesos a la memoria. La memoria se actualiza cuando W se elimine del cach de C por razones de espacio.
CPU
La memoria es correcta Estado inicial. La palabra " que contiene el valor W1 est en la memoria y tambin est en el cach de B

W1

W1

LIMPIO

(a) La memoria es A lee la palabra W y obtiene W1. B no responde a la lectura, pero la memoria correcta si.

W1

W1

W1

LIMPIO

LIMPIO
(b) La memoria es correcta A escribe un valor W2. B husmea en el bus, ve la escritura e invalida su entrada. La copia de A se marca como SUCIO

W1

W2

W1

SUCIO

INVALIDO

(c) La memoria es correcta A escribe W de nuevo. Esta y olas escrituras posteriores por A se realizan de manera local, sin trfico en el bus.

W1

W3 SUCIO

W1

INVALIDO

(d) La memoria es correcta C lee o escribe W. A ve la solicitud al husmear en el bus, proporciona el valor e invalida su propia entrada. C tiene ahora la nica copia vlida.

W1

W3

W1

W3 (e)

INVALIDO INVALIDO SUCIO

Ing. Fausto M. Orozco Carvajal

Sistemas Operativos Distribuidos

6-6

Fig. 6.4. Un ejemplo de cmo funciona un protocolo de membresa de cach. Muchos procesadores pequeos utilizan un protocolo de consistencia de cach similar al anterior, por lo general con pequeas variaciones. Tres propiedades son importantes: 1. La consistencia se logra haciendo que todos los cachs husmeen el bus. 2. El protocolo se integra dentro de la unidad de administracin de memoria. 3. todo el algoritmo se realiza en un ciclo de memoria. Como se ver posteriormente, nada de esto es vlido para la memoria compartida distribuida.

Multiprocesadores basados en anillo. En este tipo de configuraciones se tiene un conjunto de procesadores interconectados formando un anillo y comunicndose utilizando el pase de ficha. Cada procesador tiene su propia memoria ( no hay memoria centralizada ) la cual se divide en una parte privada y una compartida o pblica. La memoria compartida se divide en bloques que es la unidad de transferencia en el sistema. Cada procesador posee un cach para el ocultamiento y una unidad de gestin de la memoria. Cuando se accede a una palabra no presente en el cach, el procesador espera que le llegue la ficha y enva una peticin por el bloque que contiene la palabra. El bloque deber estar presente en algn procesador del sistema el cual, cuando llegue la ficha con la peticin lo colocar en el mensaje cambiando el tipo de ficha para que los otros procesadores no lo procesen. Los protocolos de consistencia del cach son similares al de los multiprocesadores basados en bus. La diferencia con esta forma de implantacin es que la memoria no esta en un solo lugar, sino que esta distribuida en todos los procesadores. La mquina de Memnet ( 1988 ) es un ejemplo de esta implantacin ( Fig. 6.5 ).
Dispositivo de Memnet

CPU

CPU

CPU

CPU

CPU

CPU

Fig. 6.5. El anillo de memnet. En el dispositivo de Memnet presente en cada computadora se integran la interfaz del anillo, la MMU ( unidad de administracin de memoria ), el cach y una parte de la memoria. Multiprocesadores con conmutador. Aunque los multiprocesadores basados en bus y los basados en anillo trabajan bien para sistemas pequeos ( alrededor de 64 CPUs ), no se escalan bien a sistemas con cientos o miles de CPUs. Al agregar un CPU, en algn punto se satura el ancho de banda del bus o el anillo. Aadir ms CPUs no mejora el desempeo del sistema.

Ing. Fausto M. Orozco Carvajal

Sistemas Operativos Distribuidos

6-7

Se tienen dos mtodos para atacar el problema del ancho de banda insuficiente: 1. Reducir la cantidad de comunicacin. 2. Incrementar la capacidad de comunicacin. El uso de los cachs es un intento por reducir la cantidad de comunicacin mediante el ocultamiento. Se pueden buscar mejores protocolos para el ocultamiento, optimizar el tamao del bloque intercambiado entre cachs y memoria, reorganizar los programas para incrementar los xitos debido a datos presentes en los cachs, pero llegar el momento en que se hayan probado todas las alternativas y no podrn adicionarse ms CPUs debido a la saturacin del bus. La nica salida ser incrementar el ancho de banda del bus o modificar el esquema de conexin de los CPUs. Se puede cambiar la topologa de la interconexin cambiando un bus por dos, o un rbol o una cuadrcula tratando de lograr una capacidad de comunicacin adicional. Un mtodo diferente consiste en construir el sistema como una jerarqua. Varios CPUs conectados en bus con su memoria constituye una unidad de interconexin. Se pueden conectar varias unidades entre s mediante buses de alta velocidad. Mientras ms CPUs se comuniquen principalmente dentro de su unidad, habr relativamente menos trfico entre las unidades. Si un bus entre las unidades es inadecuado, se aade un segundo bus de este tipo, o se ordenan las unidades en un rbol o cuadrcula. Si se necesita mayor ancho de banda, se rene un bus, un rbol o una cuadrcula de unidades en una superunidad, y se separa al sistema en varias superunidades. Las superunidades se pueden conectar mediante un bus, rbol, o cuadrcula, y as en lo sucesivo ( Fig. 6.6 ).
Unidad C C C M C C C M C C C M

Bus entre unidades

Interfaz

(a)

Bus entre superunidades

(b)

Fig. 6.6. (a) tres grupos conectados por un bus entre unidades para formar una superunidad. (b) dos superunidades conectadas mediante un bus de superunidad.

Ing. Fausto M. Orozco Carvajal

Sistemas Operativos Distribuidos

6-8

Un ejemplo de esta forma de implementacin lo constituye la mquina Dash ( Directory and Architecture for Shared Memory ) propuesta por la Universidad de Stanford ( Lenosky 1992 ) que esta formada por 64 CPUs distribuidos en 16 unidades, cada una de las cuales tiene 4 CPUs, 16 MB de memoria global y algo de equipo de E/S. Cada CPU esta equipado con un cach husmeador y el ocultamiento se practica con un protocolo basado en la membresa y la invalidacin. El espacio total de memoria es de 256 MB dividido en 16 regiones de 16 MB cada una. La memoria global de la unidad 0 contiene las direcciones de la 0 a la 16 MB, la unidad 1 contiene las direcciones de 16MB a 32 MB, etc. El bloque de transferencia entre unidades es de 16 bytes de modo que en cada unidad hay espacio para manejar hasta 1 M de bloques.

Maquinas NUMA y Multiprocesadores UMA. Como debe quedar claro, el ocultamiento del hardware en grandes multiprocesadores no es simple. El hardware y algunos intrincados protocolos deben mantener estructuras de datos complejas integrados al controlador del cach o MMU. La consecuencia de ello es que los multiprocesadores grandes son caros y no tienen uso amplio. Los investigadores han invertido mucho esfuerzo buscando alternativas de diseo que no requieran intrincados esquemas de ocultamiento. Una de estas propuestas es el procesador NUMA ( Non Uniform Memory Access ). Como un multiprocesador UMA ( Uniform Memory Access ) tradicional, una mquina NUMA tiene un espacio de direcciones virtuales visible para todos los CPUs. Cuando cualquier CPU escribe un valor en una localidad, una lectura posterior por un procesador diferente a la misma localidad regresar el valor recin escrito. La diferencia entre las mquinas NUMA y UMA no slo descansa en la semntica sino tambin en el desempeo. En la mquina NUMA el acceso a la memoria remota es mucho ms lento que el acceso a una local, y no se intenta ocultar este hecho mediante un ocultamiento de hardware. Dos ejemplos de mquinas NUMA son la Cm* ( Jones 1977 ) ( Fig. 6.7 ) que estaba formada por varias unidades, cada una con un CPU, un MMU microprogramable, un mdulo de memoria y posiblemente algunos dispositivos de I/O, todos conectados mediante un bus. No haba cachs y no se husmeaba al bus. Las unidades se interconectaban mediante buses. La mquina BBN Butterfly ( Fig. 6.7 ) es otra mquina NUMA en la que cada CPU se acopla de forma directa a una memoria. Los procesadores se conectan a conmutadores con varios puertos de entrada y salida. Las solicitudes de memoria local se manejan de forma directa; las solicitudes remotas se cambian por paquetes de solicitudes y se envan a la memoria apropiada por medio de la red de conmutadores. Los programas se pueden ejecutar en forma remota pero con una falla tremenda en el desempeo. Las mquinas NUMA tienen tres propiedades claves de inters: 1. Es posible el acceso a la memoria remota. 2. El acceso a la memoria remota es ms lento que el de la memoria local. 3. El tiempo de acceso remoto no se oculta mediante el uso de los cachs.

Ing. Fausto M. Orozco Carvajal

Sistemas Operativos Distribuidos

6-9

El ltimo punto es de primordial importancia en el desempeo de las maquinas NUMA Cuando un CPU tiene acceso a una pgina que no se encuentra asociada en ese momento en su espacio de direcciones, ocurre un fallo de pgina. El SO nota este fallo y toma una decisin. Si la pgina es exclusiva para lectura, la opcin es duplicar la pgina ( es decir, crear una copia local sin perturbar la original ) o asociar la pgina virtual con la memoria remota, lo que obliga entonces a un acceso remoto para todas las direcciones de esa pgina. Si la pgina puede utilizarse para lectura y escritura, la opcin consiste en mover la pgina al procesador que fall ( invalidando la pgina original ) o asociar la pgina virtual en la memoria remota. Las consecuencias de esto son sencillas. Si se cre una copia local ( rplica o migracin ) y la pgina no se vuelve a utilizar demasiado, habr un gasto considerable de tiempo perdido por nada. Por otro lado, si
Conmutador CPU
0 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Unidad

2 3

CPU

E/S

M
Bus local

4 5 6

Bus entre unidades

CPU

E/S

7 8

Memoria local

9 10 11 12

CPU

E/S

MMU microprogramado

13 14 15

(a)

(b)

Fig. 6.7. (a) Una vista simplificada del sistema Cm*. (b) BBN Butterfly. Los CPU de la Derecha son los mismos que los de la izquierda ( es decir, la arquitectura es en realidad un cilindro ).

Ing. Fausto M. Orozco Carvajal

Sistemas Operativos Distribuidos

6 - 10

no se realiza ninguna copia, la pgina se asocia de manera remota, y vendrn muchos accesos, que sern muy lentos. En esencia, el sistema operativo tiene que ver si la pgina ser utilizada con frecuencia en el futuro. Si falla, ser una falla en el desempeo.

Comparacin de los sistemas con memoria compartida. Los sistemas de memoria compartida cubren un espectro amplio, desde los sistemas que mantienen la consistencia por completo en hardware hasta aquellos que lo hacen en software. La Fig.6.8 muestra el especto de manera explcita con indicaciones de sistemas en los cuales se han implementado los diferentes modelos.

Ocultamiento controlado por el hardware

Ocultamiento controlado por el software

Controlado por MMU

Controlador por el Sistema Operativo

Controlado por el sistema de timepo de ejecucin del lenguaje

Multiprocesador con bus

Multiprocesador con conmutador

Mquina NUMA

DSM basado en pginas

DSM con variables compartidas

DSM basado en objetos

Fuertemente acoplado

Sequent Firely

Dash Alewife
Bloque cach

Cm* Butterfly Pgina

Ivy MIrage Pgina

Munin Midway Estructura de datos

Unidad Bloque de cach transferencia

Linda Orca Vagamente acoplado Objeto

Acceso remoto en hardware

Acceso remoto en software

Fig. 6.8. El especto de mquinas de memoria compartida. Del lado izquierdo de la Fig. 6.8. tenemos los multiprocesadores con un bus, con cachs en hardware y que mantienen la consistencia al husmear en el bus. Estas son las mquinas de memoria compartidas ms sencillas y operan por completo en hardware. Estos diseos trabajan bien para un nmero pequeo o mediano de CPU, pero se degradan con rapidez al saturarse el bus. Despus vienen los multiprocesadores conmutadores que tambin tienen ocultamiento de hardware pero utilizan directorios y otras estructuras de datos para llevar un registro de los CPU o unidades que tienen ciertos bloques de cachs. Utilizan protocolos complicados para la consistencia del cach que se guardan en el microcdigo de la MMU y se cuentan como implantaciones en hardware.

Ing. Fausto M. Orozco Carvajal

Sistemas Operativos Distribuidos

6 - 11

Luego vienen las mquinas NUMA que son hbridas entre el control del hardware o del software. Aqu el ocultamiento queda controlado por el software y no por el hardware. Siguiendo en el espectro estn las mquinas que ejecutan un sistema de memoria compartida distribuida basado en pginas. Luego vienen los sistemas que comparten solo una porcin selecta de sus espacios de direcciones, como las variables compartidas y otras estructuras de datos. Se requiere informacin adicional del usuario para determinar cules variables son compartidas y cules no. En estos sistemas, el enfoque cambia de pretender que existe una memoria comn, a cmo mantener consistente un conjunto de estructuras de datos distribuidas duplicadas frente a las actualizaciones, potencialmente desde todas las mquinas que utilizan los datos compartidos. Por ltimo se tienen los sistemas que trabajan con memoria compartida distribuida basada en objetos. A diferencia de los dems, aqu los programas no pueden slo tener acceso a los datos compartidos. Tienen que recorrer mtodos protegidos, lo que significa que el sistema de ejecucin puede tener siempre el control de cada acceso para ayudar a mantener la consistencia. Todo se hace en software, sin ningn tipo de soporte de hardware. Las diferencias entre estos seis tipos de sistemas se resumen en la tabla siguiente que muestre desde el hardware fuertemente acoplado a la izquierda hasta el software vagamente acoplado a la derecha. Multiprocesadores Con conmutador Si Basado en Pginas Si DSM Con vars. compartid as No Basado en Objetos No

Punto Tienen un espacio de direcciones virtuales, compartido y lineal ? Operaciones posibles Encapsulado y mtodos ? Es posible el acceso remoto en hardware ? Es posible una memoria no conectada ? Quin convierte los accesos a memoria remota en mensajes ? Medio de transferencia La migracin de datos es Realizada mediante Unidad de transferencia

Un bus Si

NUMA Si

L/E No Si

L/E No Si

L/E NO Si

L/E No No

L/E No No

General Si No

Si

Si

Si

No

No

No

MMU

MMU

MMU

Sistema Sistema Operativ de o tiempo de ejecucin

Bus Bus Hardwar Hardware e Bloque Bloque

Bus Red Red Softwar Software Software e Pgina Pgina Variable Objeto Compartid

Sistema de tiempo de ejecucin Red Software

Ing. Fausto M. Orozco Carvajal

Sistemas Operativos Distribuidos

6 - 12

a Tabla 6.1. Comparacin de los seis tipos de sistemas de memoria compartida.

Modelos de consistencia. El problema del mantenimiento de la consistencia cuando las pginas que se escriben son compartidas entre varios procesadores presenta un problema fundamental en las implantaciones de la memoria compartida distribuida. Si se permite slo una copia de cada pgina muy utilizada para escritura se puede tener un serio cuello de botella en cuanto al desempeo. Si se permite la existencia de varias copias , se facilita el problema del desempeo, pues basta con actualizar cualquier copia, pero esto introduce de nuevo el problema de mantener consistentes las diversas copias. El mantenimiento de una consistencia es particularmente difcil cuando las diversas copias se encuentran en mquinas diferentes que slo puede comunicarse al enviar mensajes por una red lenta. En algunos sistemas DSM ( y multiprocesadores ), la solucin consiste en aceptar una menos perfecta como precio de mejor desempeo. Un modelo de consistencia es en esencia un contrato entre el software y la memoria ( Adve y Hill, 1990 ). Dice que si el software acuerda obedecer ciertas reglas, la memoria promete trabajar de forma correcta. Si el software viola estas reglas, todo acaba y ya no se garantiza que la operacin de la memoria sea la correcta.

Consistencia estricta. Es el modelo de consistencia ms estricto. Se define mediante la condicin siguiente: Cualquier lectura a una localidad de memoria x regresa el valor guardado por la operacin de escritura ms reciente en x. Los sistemas con un solo procesador han observado tradicionalmente la consistencia estricta y los programadores esperan que este comportamiento sea el normal. En un sistema DSM, el asunto es ms complicado. Para explicar este tipo de consistencia y los problemas que se presentan en su ausencia en la Fig. 6.9 (a) y (b) se presentan dos procesos P1 y P2 que acceden a una variable compartida x presente en la mquina que ejecuta P2. W(x)1 indica que el proceso correspondiente ejecuta una escritura sobre x cambiando su valor a 1. R(x)0 indica que un proceso ley la variable x y obtuvo el valor 0. En la Fig. 6.9(a) se presenta lo que sucede cuando se practica la consistencia estricta. En la Fig. 6.9(b) el proceso P1 envo un mensaje de escritura cambiando el valor a 1. P2, con una pequea diferencia de tiempo en relacin al tiempo en que se gener el mensaje de escritura, lee la variable x obteniendo el valor anterior no actualizado de 0. Si en algn tiempo posterior P2 vuelve a leer la misma variable x obtendr ya el valor actualizado 1. En este caso falla la consistencia

Ing. Fausto M. Orozco Carvajal

Sistemas Operativos Distribuidos

6 - 13

estricta por el retardo de la recepcin del mensaje de escritura en relacin a la primer lectura de la variable por parte de P2.
P1: P2: W(x)1 R(x)1 (a) P1: P2: W(x)1 R(x)0 (b) R(x)1

Fig. 6.9 El comportamiento de dos procesos. El eje horizontal es el tiempo. (a) Memoria con consistencia estricta. (b) Memoria sin consistencia estricta. En resumen, cuando la memoria tiene consistencia estricta, todas las escrituras son visibles al instante a todos los procesos y se mantiene un orden de tiempo global absoluto. Si se cambia una localidad de memoria, todas las lecturas posteriores desde esa localidad ven el nuevo valor, sin importar qu tan pronto se haga la lectura despus del cambio y sin importar los procesos que estn haciendo la lectura ni la posicin de stos. De manera anloga, si se realiza una lectura, se obtiene el valor actual, sin importar lo rpido que se realice la siguiente escritura.

Consistencia secuencial. Es un modelo de memoria un poco ms dbil que la consistencia estricta. Fue definida por primera vez por Lamport ( 1979 ), quin dijo que una memoria con consistencia secuencial es la que satisface la siguiente condicin: El resultado de cualquier ejecucin es el mismo si las operaciones de todos los procesos fueran ejecutados en algn orden secuencial, y las operaciones de cada proceso individual aparecen en esta secuencia en el orden especificado por su programa. Lo que significa esta definicin es que cuando los procesos se ejecutan en paralelo en diferentes mquinas ( o aun en pseudoparalelo en un sistema de tiempo compartido ), cualquier intercalado vlido es un comportamiento aceptable, pero todos los procesos deben ver la misma serie de llamadas a memoria. Una memoria donde un proceso ( o procesos ) ven un intercalado y otro proceso ve otro distinto no es una memoria con consistencia secuencial. La memoria con consistencia secuencial no garantiza que una lectura regrese el valor escrito por otro proceso un nanosegundo antes, un microsegundo antes, o incluso un minuto antes. Slo garantiza que todos los procesos vean todas las referencias a memoria en el mismo orden. Si el programa que general la Fig. 6.10(a) se ejecuta de nuevo, podr dar el resultado de la figura 6.10(b).
P1: P2: W(x)1 R(x)0 R(x)1 (a) P1: P2: W(x)1 R(x)1 R(x)1 (b)

Fig. 6.10. Dos resultados posibles de ejecutar el mismo programa.

Ing. Fausto M. Orozco Carvajal

Sistemas Operativos Distribuidos

6 - 14

Una memoria con consistencia secuencial se puede construir en un sistema DSM o multiprocesador que duplique las pginas que se pueden escribir, garantizando que ninguna operacin de memoria comienza hasta que las anteriores hayan concluido. Se han propuesto varios sistemas formales para expresar la consistencia secuencial ( y otros modelos de consistencia ). En el sistema de Ahamad ( 1993 ), la serie de operaciones de lectura y escritura del proceso i se denotan por Hi ( la historia de Pi ). En la Fig. 6.10(a) se muestran dos de estas series, H1 y H2 para P1 y P2, respectivamente, como sigue: H1 = W(x)1 H2=R(x)0R(x)1

El conjunto de todas estas series de series se llama H. Para obtener el orden relativo en que aparecen las operaciones por ejecutar, se deben fusionar las cadenas de operacin H en una cadena S, donde cada operacin que aparezca en H estar una vez en S. S da el orden en que se hubieran realizado las operaciones en el caso de contar con una memoria centralizada. Todos los valores vlidos de S cumplen las restricciones siguientes: 1. Debe mantenerse el orden de los programas. 2. Debe ser respetada la coherencia en la memoria. La primera restriccin significa que si un acceso para lectura o escritura, A aparece antes que otro acceso B, en una de las cadenas de H, A tambin debe aparecer antes que B en S. Si es cierta esta restriccin para todos los pares de operaciones, la S resultante no mostrar operaciones en un orden que viole cualquiera de los programas. La segunda restriccin corresponde a la coherencia de la memoria, significa que una lectura a alguna localidad x regresa siempre el valor ms reciente escrito en x; es decir, el valor v escrito por el W(x)v ms reciente antes que R(x). Para el ejemplo anterior, la nica S vlida es: S= R(x)0W(x)1R(x)1

Se dice que el comportamiento de un programa es correcto si su secuencia de operaciones corresponde a algn valor vlido de S.

Consistencia causal. El modelo de consistencia causal ( Hutto y Ahamad, 1990 ) representa un debilitamiento de la consistencia secuencial que hace una distincin entre los eventos potencialmente relacionados por causalidad y aquellos que no lo estn. Para ver a que se refiere la causalidad considere el ejemplo siguiente. Suponga que el proceso P1 escribe una variable x. Despus P2 lee x y escribe y. Aqu la lectura de x y la escritura de y estn potencialmente relacionadas de forma causal, pues el clculo de y podra depender del valor de x ledo por P2 ( es decir, el valor escrito por P1 ). Por otro lado, si dos procesos escriben de forma espontnea y simultnea en dos variables, no estn relacionados de forma

Ing. Fausto M. Orozco Carvajal

Sistemas Operativos Distribuidos

6 - 15

causal. Cuando ocurre una lectura seguida por una escritura, los dos eventos estn en potencia relacionados de forma causal. De manera anloga, una lectura est relacionada de forma causal con la escritura que proporciona el dato obtenido por la lectura. Las operaciones que no estn relacionadas de forma causal son concurrentes. Para que una memoria sea consistente de forma causal, debe obedecer las siguientes condiciones: Las escrituras potencialmente relacionadas de forma causal son vistas por todos los procesos en el mismo orden. Las escrituras concurrentes pueden ser vistas en un orden diferente en mquinas diferentes.

En la Fig. 6.11 se da un ejemplo de consistencia causal. Aqu tenemos una sucesin de eventos permitida con memoria consistente de forma causal, pero prohibida para una memoria con consistencia secuencial o con consistencia estricta. Lo que hay que observar es que las escrituras W(x)2 y W(x)3 son concurrentes, por lo que no se requiere que todos los procesos los vean en el mismo orden ( P3 y P4 ). Si el software falla cuando procesos diferentes ven eventos concurrentes en orden distinto, se ha violado el contrato de memoria ofrecido por la memoria causal.
P1: W(x)1 P2: P3: P4: R(x)1 R(x)1 R(x)1 W(x)2 R(x)3 R(x)2 R(x)2 R(x)3 W(x)3

Fig.6.11. Esta sucesin est permitida para una memoria con consistencia causal, pero no para una memoria con consistencia secuencial o una memoria con consistencia estricta. En la Fig. 6.12(a) se muestra una falla en la consistencia causal, dado que W(x)2 del proceso 2 depende potencialmente de W(x)1 del mismo proceso 1, ya que el valor 2 puede ser resultado de un clculo a partir del valor 1 ledo por el proceso. Esto obliga a que todos los procesos vean las operaciones de escritura en el mismo orden ( que no sucede en los procesos 3 y 4 ). Por el contrario, en la Fig. 6.12(b) se mantiene la consistencia causal. Se ha suprimido la lectura R(x)1 del proceso 2. Esto hace que W(x)1 del proceso 1 y W(x)2 del proceso 2 sean operaciones concurrentes no obligando al resto de los procesos a observarlas en el mismo orden.
P1: W(x)1 P2: P3: P4:
(a)

P1: W(x)1 R(x)1 W(x)2 R(x)2 R(x)1 R(x)1 R(x)2 P2: P3: P4:
(b)

W(x)2 R(x)2 R(x)1 R(x)1 R(x)2

Ing. Fausto M. Orozco Carvajal

Sistemas Operativos Distribuidos

6 - 16

Fig. 6.12. (a) una violacin a la memoria causal. (b) una sucesin correcta de eventos En la memoria causal. La implantacin de la consistencia causal mantiene un registro de cules procesos han visto cules escrituras. Esto significa que debe construirse y mantenerse una grfica de dependencia con las operaciones que dependen de otras. Hacer esto implica cierto costo.

Consistencia PRAM y consistencia del procesador. En la consistencia causal se permite que las escrituras concurrentes sean vistas en diferente orden en varias mquinas, aunque las relacionadas de forma causal deben verse en el mismo orden por todas las mquinas. En siguiente paso en el relajamiento de memoria es eliminar este ltimo requisito. Al hacer esto se tiene la consistencia PRAM ( Pipeline RAM), sujeta a la condicin: Las escrituras realizadas por un proceso son recibidas por los otros procesos en el orden en que son realizadas, pero las escrituras de procesos diferentes pueden verse en un orden diferente por procesos diferentes. La consistencia PRAM se debe a Lipton y Sandberg ( 1988 ). El entubamiento de la RAM significa que las escrituras realizadas por un proceso pueden entubarse; es decir, el proceso no tiene que quedarse esperando que termine cada una antes de comenzar la siguiente. En la Fig. 6.13 se muestran eventos permitidos en una memoria con consistencia PRAM pero no con los dems modelos ms fuertes anteriores.
P1: W(x)1 P2: P3: P4: R(x)1 W(x)2 R(x)1 R(x)2 R(x)2 R(x)1

Fig. 6.13. Una sucesin de eventos vlida para la consistencia PRAM Esta consistencia es fcil de implantar. De hecho dice que no existen garantas acerca del orden en que los diferentes procesos ven las escrituras, excepto que dos o ms escrituras de una fuente llegan en orden, como si estuvieran en un entubamiento. Dicho en otras palabras, en este modelo, todas las escrituras generadas por procesos diferentes son concurrentes. La consistencia del procesador ( Goodman 1989 ) es tan cercana a la consistencia PRAM que algunos autores la consideran iguales. Sin embargo, Goodman dio un ejemplo que sugiere el establecimiento de una condicin adicional sobre una memoria con consistencia del procesador, a saber, la coherencia de la memoria. En otras palabras, para cada posicin de memoria x existe un acuerdo local acerca del orden de las escrituras en x. Las escrituras en diferentes posiciones no tienen que ser vistas en el mismo orden por los diferentes procesos.

Ing. Fausto M. Orozco Carvajal

Sistemas Operativos Distribuidos

6 - 17

Consistencia dbil. Aunque la consistencia PRAM y la del procesador proporcionan mejor desempeo que los modelos ms fuertes, siguen siendo innecesariamente restrictivos para muchas aplicaciones, pues requieren que las escrituras generadas en un proceso sean vistas en todas partes en orden. No todas las aplicaciones requieren todas las escrituras y mucho menos en orden. Considere el caso de un proceso dentro de una seccin crtica, donde se leen y escriben algunas variables en un ciclo. Aunque se supone que los dems procesos no tocan las variables hasta que el primer proceso salga de su seccin crtica, la memoria no tiene forma de saber cundo un proceso est en una seccin crtica y cundo no, de modo que debe propagar todas las escrituras a todas las memorias de la manera usual. La mejor solucin consiste en dejar que el proceso termine su seccin crtica y garantizar entonces que los resultados finales se enven a todas partes, sin preocuparse demasiado porque todos los resultados intermedios han sido propagados a todas las memorias en orden, o incluso si no fueron propagados. Esto puede lograrse con el uso de una variable de sincronizacin utilizada para mantener la memoria sincronizada. Cuando termina una sincronizacin, todas las escrituras realizadas en esa mquina se propagan hacia fuera y todas las escrituras realizadas en otras mquinas son tradas hacia la mquina en cuestin. En otras palabras, toda la memoria ( compartida ) esta sincronizada. Dubois ( 1986 ) define este modelo, llamado consistencia dbil diciendo que tiene tres propiedades: 1. Los accesos a las variables de sincronizacin son secuencialmente consistentes. 2. No se permite realizar un acceso a una variable de sincronizacin hasta que las escrituras anteriores hayan terminado en todas partes. 3. No se permite realizar un acceso a los datos ( lectura o escritura ) hasta realizar todos los accesos anteriores a las variables de sincronizacin. El punto 1 asegura que todos los procesos ven los accesos a las variables de sincronizacin en el mismo orden. El punto 2 obliga a terminar en todas partes las escrituras que estn en progreso, terminadas o de forma parcial en algunas memorias pero no en otras. Cuando termina una variable de sincronizacin, tambin se garantiza que han terminado todas las escrituras anteriores. Al realizar una sincronizacin despus de actualizar los datos compartidos, un proceso enva los nuevos valores a las dems memorias. El punto 3 dice que cuando se tiene acceso a las variables ordinarias ( es decir, que no son de sincronizacin ), ya sea para lectura o escritura, se han realizado todas las sincronizaciones anteriores. Al realizar una sincronizacin antes de leer los datos compartidos, un proceso puede estar seguro de obtener los valores ms recientes. Existe algo de confusin en relacin a lo que debe entenderse por realizados en el contexto de DSM. Se dice que una lectura ha sido realizada cuando ninguna escritura posterior afecta el valor regresado. Se dice que una escritura ha sido realizada en el instante en que todas las lecturas posteriores regresan el valor escrito por la escritura. Se dice que una sincronizacin ha sido realizada cuando todas las variables compartidas han sido actualizadas. Tambin debe distinguirse entre las operaciones que se realizan de manera local o global.

Ing. Fausto M. Orozco Carvajal

Sistemas Operativos Distribuidos

6 - 18

A diferencia de los modelos anteriores de memoria, ste apoya la consistencia en un grupo de operaciones, no en lecturas y escrituras individuales. Este modelo es ms til cuando no son comunes los accesos aislados a las variables compartidas, la mayora de los cuales aparece por grupos ( muchos accesos en un perodo breve y despus ninguno durante un perodo largo ). En la Fig. 6.14(a) siguiente vemos que el proceso P1 realiza dos escrituras en una variable ordinaria y despus realiza una sincronizacin ( indicada por la letra S). Si P2 y P3 no han sido sincronizados todava, nada garantiza lo que vern, por lo que este serie de eventos es vlida. La Fig. 6.14(b) es diferente. En este caso, se ha sincronizado P2, lo que significa que su memoria se ha actualizado. Al leer x, debe obtener el valor 2. Con la consistencia dbil no puede obtener el valor 1, como lo muestra la figura.
P1: W(x)1 W(x)2 P2: P3: (a) S R(x)1 R(x)2 S R(x)2 R(x)1 S (b) P1: W(x)1 W(x)2 S P2: S R(x)1

Fig. 6.14. (a) una secuencia vlida de eventos para la consistencia dbil. (b) Una secuencia no vlida para la consistencia dbil.

Consistencia de liberacin. La consistencia dbil tiene el problema de que, cuando se tiene acceso a una variable de sincronizacin, la memoria no sabe si esto se realiza debido a que el proceso ha terminado de escribir en las variables compartidas o est a punto de iniciar una lectura. En consecuencia, debe realizar las acciones necesarias en ambos casos, a saber, garantizar que todas las escrituras iniciadas localmente han sido terminadas ( es decir, propagadas a las dems mquinas ), as como recoger todas las escrituras de las dems mquinas. Si la memoria establece la diferencia entre la entrada a una regin crtica y salir de ella, sera posible una implantacin ms eficiente. Para proporcionar esta informacin, se necesitan dos tipos de variables u operaciones de sincronizacin. La consistencia de liberacin ( Gharachorloo, 1990 ), proporciona estos dos tipos . Los accesos de adquisicin indican a la memoria del sistema que est a punto de entrar a una regin crtica. Los accesos de liberacin dicen que acaba de salir de una regin crtica. Estos accesos se implantan como operaciones ordinarias sobre variables o como operaciones especiales. Es responsabilidad del programador colocar el cdigo explcito en el programa para indicar el momento de realizarlos. Con la consistencia de liberacin es tambin posible utilizar barreras en vez de las regiones crticas. Una barrera es un mecanismo de sincronizacin que evita que cualquier proceso inicie la fase n + 1 de un programa hasta que todos los procesos terminan la fase n. Cuando un proceso llega a una barrera, debe esperar que todos los dems procesos lleguen ah tambin.

Ing. Fausto M. Orozco Carvajal

Sistemas Operativos Distribuidos

6 - 19

Cuando llegue el ltimo, todas las variables compartidas se sincronizan y continan entonces todos los procesos. La salida de la barrera es la adquisicin y la llegada es la liberacin. La adquisicin y la liberacin no tiene que aplicarse a toda la memoria, sino para proteger slo algunas variables compartidas especficas, en cuyo caso slo stas se mantienen consistentes. Las variables compartidas que se mantienen consistentes son protegidas. El contrato entre la memoria y el software en la consistencia de liberacin dice que cuando el software realiza una adquisicin, la memoria se asegurar de que todas las copias locales de las variables protegidas sean actualizadas de manera consistente con las remotas, en caso de ser necesario. Al realizar una liberacin, las variables protegidas que hayan sido modificadas se propagan hacia las dems mquinas. La realizacin de una adquisicin no garantiza que los cambios realizados de manera local sean enviados a las dems mquinas de inmediato. De manera anloga, la realizacin de una liberacin no necesariamente importa las modificaciones de las dems mquinas. En la figura 6.15 se muestra una secuencia de eventos vlida para la consistencia de liberacin. El proceso P1 realiza una adquisicin, modifica una variable compartida dos veces, y despus realiza una liberacin. El proceso P2 realiza una adquisicin y lee x. Se garantiza que obtiene el valor de x al momento de la liberacin, es decir, 2 ( a menos que la adquisicin de P2 se realice antes de la adquisicin de P1). Si la adquisicin fue realizada antes de la liberacin de P1, la adquisicin tendra que retrasarse hasta que ocurra la liberacin. Puesto que P3 no puede realizar una adquisicin antes de leer una variable compartida, la memoria no tiene la obligacin de darle el valor actual de x, de modo que se permite que regrese 1.
P1: P2: P3: Acq(L) W(x)1 W(x)2 Rel(L) Acq(L) R(x)2 Rel(L) R(x)1

Fig. 6.15. Una secuencia de eventos vlida para la consistencia de liberacin. En general, una memoria compartida distribuida que tiene consistencia de liberacin debe cumplir las reglas siguientes: 1. Antes de realizar un acceso ordinario a una variable compartida, deben terminar con xito todas las adquisiciones anteriores del proceso en cuestin. 2. Antes de permitir la realizacin de una liberacin, deben terminar las lecturas y escrituras anteriores del proceso. 3. Los accesos de adquisicin y liberacin deben ser consistentes con el procesador ( no se pide la consistencia secuencial ). Si se cumplen estas condiciones y los procesos utilizan la adquisicin y liberacin de manera adecuada ( en pares adquisicin-liberacin ), los resultados de cualquier ejecucin sern iguales a lo que ocurrira en una memoria con consistencia secuencial. De hecho, los bloques de acceso a las variables compartidas son atmicos debido a las primitivas de adquisicin y liberacin, con el fin de evitar el intercalado.

Ing. Fausto M. Orozco Carvajal

Sistemas Operativos Distribuidos

6 - 20

Una implantacin diferente de la consistencia de liberacin es la consistencia de liberacin con laxitud ( Kheleher 1992 ). La consistencia de liberacin, tal como se explic, se denomina consistencia de liberacin fuerte. La diferencia entre las dos estriba en el hecho de que en la consistencia de liberacin fuerte, cuando ocurre una liberacin, el procesador que la realiza expulsa todos los datos modificados hacia los dems procesadores que tienen una copia en cach y que podran necesitarlos. No existe forma de determinar si en realidad los utilizarn, de modo que para estar seguros, todos obtienen lo que se modifica. En la consistencia de liberacin con laxitud, al momento de la liberacin nada se enva, sino que cuando se realiza una adquisicin, el procesador que intenta realizar sta debe obtener los valores ms recientes de las variables de la mquina o mquinas que los contienen. Se puede utilizar un protocolo con marcas de tiempo para determinar cul de las variables debe transmitirse. El resultado neto, es que con la consistencia de liberacin con laxitud, no se genera trfico alguno en la red hasta que otro procesador realiza una adquisicin. Las parejas adquisicinliberacin repetidas por un mismo procesador en ausencia de competencia del exterior son gratuitas.

Consistencia de entrada. Este modelo de consistencia, diseado para su uso con las secciones crticas, fue diseado por Bershad ( 1993 ). Al igual que en la consistencia de liberacin, se requiere que el programador ( o el compilador ) utilice la adquisicin y la liberacin al principio y al final de cada seccin crtica, respectivamente. Sin embargo, a diferencia de la consistencia de liberacin, la consistencia de entrada requiere que cada variable compartida ordinaria se asocie con alguna variable de sincronizacin, como una cerradura o una barrera. Cuando se realiza una adquisicin sobre una variable de sincronizacin, slo se pide la consistencia de las variables compartidas ordinarias protegidas por esa variable de sincronizacin. La diferencia entre la consistencia de entrada y la de liberacin con laxitud es que esta ltima no asocia las variables compartidas con cerraduras o barreras y en el momento de la adquisicin debe determinar de manera emprica las variables que necesita. Desde el punto de vista forma, una memoria exhibe la consistencia de entrada si satisface las siguientes condiciones ( Bershad y Sekauskas, 1991 ): 1. No se permite realizar un acceso de adquisicin a una variable de sincronizacin con respecto de un proceso hasta que se realicen todas las actualizaciones de los datos compartidos protegidos con respecto de ese proceso. 2. Antes de permitir la realizacin de un acceso en modo exclusivo a una variable de sincronizacin por un proceso, ningn otro proceso debe poseer la variable de sincronizacin, ni siquiera en modo no exclusivo. 3. Despus de realizar un acceso en modo exclusivo a una variable de sincronizacin, no se puede realizar el siguiente acceso en modo no exclusivo de otro proceso a esa variable de sincronizacin hasta haber sido realizado con respecto del propietario de esta variable. La primera condicin dice que cuando un proceso realiza una adquisicin, sta podra no concluir ( es decir, regresar el control al siguiente enunciado ) hasta actualizar todas las

Ing. Fausto M. Orozco Carvajal

Sistemas Operativos Distribuidos

6 - 21

variables compartidas protegidas. En otras palabras, en una adquisicin, deben ser visibles todas las modificaciones remotas a los datos protegidos. La segunda condicin dice que antes de actualizar una variable compartida, un proceso debe entrar a una regin crtica en modo exclusivo para garantizar que ningn otro proceso intente actualizarla la mismo tiempo. La tercer condicin dice que si un proceso desea entrar a una regin crtica en modo no exclusivo, primero debe verificar con el propietario de la variable de sincronizacin que protege la regin crtica para buscar las copias ms recientes de las variables compartidas protegidas.

Resumen de los modelos de consistencia. Aunque se han propuesto otros modelos de consistencia, hemos analizado los principales. Difieren en sus restricciones, lo complejo de sus implantaciones, la facilidad para programarlos, y su desempeo. La consistencia estricta es la ms restrictiva, pero debido a que su implantacin en un sistema DSM es en esencia imposible, nunca se utiliza. La consistencia secuencial es factible, popular entre los programadores y de uso amplio. Sin embargo, tiene el problema del desempeo pobre. La forma de darle la vuelta a este resultado es relajar el modelo de consistencia. Algunas de las posibilidades aparecen en la Fig. 6.16(a), con un orden aproximado de restricciones decrecientes. Consistencia Estricta Secuencial Causal De procesador PRAM Descripcin Ordenamiento absoluto con respecto del tiempo de todo lo relacionado con el acceso a la memoria. Todos los procesos ven todos los accesos compartidos en el mismo orden. Todos los procesos ven los accesos compartidos causalmente en el mismo orden. Consistencia PRAM + coherencia de memoria relacionados

Todos los procesos ven las escrituras de cada procesador en el orden en que fueron ejecutadas. Las escrituras de procesadores diferentes podran no ser vistas en el mismo orden. (a) Los datos compartidos slo pueden considerarse como consistentes despus de realizar una sincronizacin. Los datos compartidos son consistentes al salir de una regin crtica. Los datos compartidos pertenecientes a una regin crtica son consistentes despus de salir de una regin crtica.

Dbil De liberacin De entrada

(b) Fig. 6.16.(a) modelos de consistencia que no utilizan las operaciones de sincronizacin, (b) modelos con

Ing. Fausto M. Orozco Carvajal

Sistemas Operativos Distribuidos

6 - 22

operaciones de sincronizacin. La consistencia causal, de procesador y la PRAM representan condiciones menos estrictas donde no existe un acuerdo global del orden de las operaciones. Los diversos procesos pueden ver diferentes secuencias de operaciones, que pueden diferir en trminos de las secuencias permitidas y las prohibidas, pero en todos los casos, el programador debe evitar ciertas cosas que funcionan slo si la memoria tiene una consistencia secuencial. Un mtodo diferente consiste en introducir variables explcitas de sincronizacin, como la consistencia dbil, la de liberacin y de entrada. Estos tres tipos se resumen en la Fig. 6.16(b). Cuando un proceso realiza una operacin sobre una variable compartida ordinaria, no existen garantas del momento en que los resultados sern vistos por otros procesos. Las modificaciones slo se propagan cuando se tiene acceso a una variable de sincronizacin. Los tres modelos difieren en el funcionamiento de la sincronizacin, pero en todos los casos, un proceso puede realizar varias lecturas y escrituras en una seccin crtica sin llamar al transporte de datos. Al concluir la seccin crtica, el resultado final se propaga a los dems procesos o est listo para la propagacin en caso de que alguien ms exprese su inters por ello. En resumen, la consistencia dbil, la de liberacin y la de entrada requieren construcciones de programacin adicional que, cuando se utilizan de la manera indicada, permiten a los programadores suponer que la memoria tiene una consistencia secuencial, cuando de hecho no la tiene. En principio, estos tres modelos que utilizan la sincronizacin explcita deben poder ofrecer el mejor desempeo, pero es probable que diferentes aplicaciones produzcan resultados un tanto distintos. Se necesita mayor investigacin antes de poder establecer concusiones firmes en estos aspectos.

Ing. Fausto M. Orozco Carvajal

Potrebbero piacerti anche