SISTEMAS OPERATIVOS DISTRIBUIDOS
JOSE FERNANDO BASTIDAS C.HERBERT CARRILLO G.
DAVID EDUARDO CIFUENTES C.MARIA FERNANDA SERRANO B.
ANDRES VARGAS CABASAlumnos del curso de Investigación de VIII Semestre de Ingeniería de Sistemas dellCESI
OBJETIVOS
- Dar un concepto claro de lo que esun Sistema Distribuido, tocando algunos temas técnicos importantes,pero explicándolos de manera quelleguen fácilmente a las personas.
- Dar a conocer la importancia de apoyar la investigación en este campo,que apenas está surgiendo, pero quepromete mucho para el desarrollotecnológico mundial.
- Conocer la manera como cooperany se sincronizan los procesos entresí, en un Sistema Distribuido, asícomo la forma de implantar regionescríticas o asignar recursos.
Conocer las características y componentes de un Sistema Distribuidode archivos.
- Exponer los puntos fundamentalesen la Implantación de un SistemaDistribuido de archivos.
- Lograr captar el interés de todasaquellas personas interesadas en
consultar este libro, específicamente de quienes se encuentran de unau otra forma vinculados con el análisis y desarrollo del software, paraque empiecen a interesarse en lacreación de aplicaciones enfocadashacia la distribución, las cuales deben conducir a que, en un futuro nomuy lejano, podamos hablar de comunicaciones a nivel mundial, realmente confiables, transparentes yeficientes.
INTRODUCCION
Desde hace algunos años el uso delos computadores ha cambiado enormemente, debido a la transición, desde lossistemas centralizados que constan deun único CPU, sus periféricos de memoria y algunas terminales, hacia sistemas de cómputo compuestos por ungran número de CPUs, conectados mediante una red de alta velocidad, conocidos como Sistemas Distribuidos. Aunque los sistemas operativos necesarios
¡,f"
114 __-':._:1:1_:1:=:=::=:=::::::::::===::::/CES/
Ventajas de los Sistemas Distribuidos con respecto de los Centralizados.
:========================:~115/CES/
na su propio computador para que locont~ole. Al conectarse éstos, se tieneun Sistema Distribuido Industrial.
Otra ventaja potencial de un SistemaDistribuido sobre uno Centralizado esuna mayor confiabilidad. Al distribuir lacarga de trabajo en muchas máquinas,la falla de un chip descompondrá, a losumo, una máquina, pero el resto seguirá intacto. Para el caso de aplicaciones críticas, como el control de los reactores nucleares o de los aviones, el usode un sistema distribuido, para lograruna mayor confiabilidad, puede ser elfactor dominante.
Por último, el crecimiento por incre~entos también es una ventaja potencial. Con frecuencia ocurre que una compañía compra un "mainframe", con laintención de hacer todo su trabajo en él.Si la .compañía prospera y la carga detrabajO aumenta, el "mainframe" no seráadecuado en cierto momento. Las ideasde reemplazar el "mainframe" por otromás grande (si existe) o añadir un segundo "mainframe", pueden dar un tremendo castigo a las operaciones de lacompañía. Por el contrario, con un sistema distribuido, podrían añadirse simplemente más procesadores al sistema,lo que permitiría un desarrollo gradual,conforme surjan las necesidades.
Los microprocesadores ofrecen una mejorproporción precio-rendimiento que los
mainframes.
Un sistema distribuido puede tener un mayorpoder de cómputo que un mainframe.
Alguna,s aplicaciones utilizan máquinas queestan separadas una cierta distancia.
Si una máquina se descompone, sobrevive elsistema como un todo.
Se puede añadir poder de cómputo enpequeños incrementos.
ECONOMIA
VELOCIDAD'
DISTRIBUCIONINHERENTE
CONFIABILIDAD
CRECIMIENTO PORINCREMENTOS
colección de microprocesadores no sólofacilita una mejor proporCión precio/desempeño que un único "mainframe", sinoque puede producir un mejor rendimiento del que podría proporcionar cualquier"mainframe" a cualquier precio. Porejemplo, con la tecnología actual es posible construir un sistema a partir de los1.000 chips de un computador moderno, cada uno de los cuales tiene unaejecución de 20 MIPS (millones de instrucciones por segundo), para un rendimie~t? total de 20.000 MIPS. Para queun UnlCO procesador (es decir, CPU) logre esto, tendría que ejecutar una instrucción en 0,05 nanosegundos (50picosegundos). Ninguna máquina existente llega a acercarse a esta cifra ademá~ de ~u~ consideraciones teóri~as yde Ingenlerla lo consideran improbabledurante algún tiempo. Así, si el objetivoes un rendimiento normal a bajo costo,o un alto rendimiento con un mayor costo, los Sistemas Distribuidos tienen mucho que ofrecer.
Otra razón para la construcción deun Sistema Distribuido es que ciertasaplicaciones son dispuestas en formainherente. En un sistema de automatización de una fábrica, que controle losrobots y las máquinas, a lo largo de unalínea de ensamblaje, con frecuencia tiene sentido darle a cada robot o máqui-
1.2.1. Ventajas de los SistemasDistribuidos respectode los Centralizados
La fuerza real, detrás de la tendencia hacia la descentralización, es la economía. Por unos cuantos cientos dedólares es posible comprar un CHIP deCPU, que puede ejecutar más instrucciones, por segundo, de las que realizaba uno de los más grandes "mainframes"de los años ochenta. Si uno está dispuesto a pagar el doble, se obtiene elmismo CPU, sólo que con una velocidad un poco mayor. Como resultado, lasolución más eficaz, en cuanto a costos, es limitarse a un gran número deCPUs baratos, reunidos en un mismosistema. Así, la razón número uno de latendencia hacia los Sistemas Distribuidos es que éstos tienen en potencia unaproporción precio/desempeño muchomejor que la de un único sistema centralizado.
Una ligera variación, con respeto aeste tema, es la observación de que una
1.2. Ventajas y desventajas de losSistemas Distribuidos
un milisegundo o un tiempo parecido. Lamayor cantidad de datos se puede desplazar, entre las máquinas, a razón de10 millones de bits/segundo y aun más.
Hoy en día es fácil reunir sistemasde cómputo, compuestos por un grannúmero de CPUs, conectados mediante una red de alta velocidad, los cualesreciben el nombre genérico de SistemasDistribuidos, en contraste con los Sistemas Centralizados que constan de unúnico CPU, sus periféricos de memoriay algunas terminales.
Los Sistemas Distribuidos necesitanun software radicalmente distinto del delos sistemas centralizados. En particular,aunque los sistemas operativos, necesarios para estos Sistemas Distribuidos, están apenas en una etapa de surgimiento, ya se sabe bastante acerca deellos.
1.1. Historia
El uso de los computadores está apunto de sufrir una revolución. Desde1945, cuando comenzó la era del computador moderno, hasta 1985, los computadores eran grandes y caros, incluyendo los minicomputadores. Como resultado, las organizaciones tenían ungrupo pequeño de computadores queoperaban independientemente, por carecer de una forma para conectarlos.
A partir de 1985 comenzó a cambiaresta situación. Primero, con el desarro110 de poderosos microprocesadores, sedisponía de máquinas de 8 bits, peropronto se volvieron comunes las CPUde 16,32 e incluso 64 bits, muchas delas cuales tenían el poder de cómputode un "mainframe" respetable; y segundo, con la invención de redes locales dealta velocidad (LAN), las cuales permitieron conectar docenas e incluso cientos de máquinas, de tal forma que sepudiesen transferir pequeñas cantidades de información, entre ellas, durante
1. INTRODUCCION A LOSSISTEMAS DISTRIBUIDOS
para estos Sistemas Distribuidos estánapenas en etapa de surgimiento, ya esbastante lo que conocemos acerca deellos.
Nuestro objetivo es presentar a ustedes, de manera clara y sencilla, los conceptos básicos acerca de los SistemasDistribuidos, sus principales características, las ventajas y desventajas, elmanejo de la comunicación y la sincronización dentro de estos sistemas, lossistemas distribuidos de archivos y unestudio de los procesos y procesadoresde los Sistemas Distribuidos.
Esperamos que el lector comprendala filosofía de los Sistemas Distribuidos,después de haber leído nuestra obra, ypueda llenar, si no todas, muchas de lasexpectativas que tenga acerca de estenovedoso campo de los sistemas decomputación.
Ventajas de los Sistemas Distribuidos respecto de los pe
116-:-:==:==:=::::====::::::::::::'CES'
DATOS COMPARTIDOS Permite que varios usuarios tengan accesoa una base de datos común.
DISPOSITIVOS Permiten que varios usuarios compartanCOMPARTIDOS periféricos caros, como las impresoras de color.
COMUNICACION Facilita la comunicación de persona a persona;por ejemplo, mediante el correo electrónico.
FLEXIBILIDAD Difunde la carga de trabajo entre las máquinasdisponibles, de la forma más eficaz,
en cuanto a los costos.
La siguiente categoría es SIMD("Single Instruction Multiple Data"), conun flujo de instrucciones y varios flujosde datos. En este tipo, se ordenan losprocesadores con una unidad que busca una instrucción y, después, ordena avarias unidades de datos para que la lleven a cabo, en paralelo, cada una consus propios datos. Ciertos supercomputadores son SIMD.
La siguiente categoría es MISO(Multiple Instruction Single Data), conflujo de varias instrucciones y un soloflujo de datos. Ninguno de los computadores conocidos se ajusta a este modelo.
Por último viene MIMD (MultipleInstruction Multiple Data), que significaun grupo de computadores independiente, cada uno con su propio contador delprograma, programas y datos.Todos lossistemas distribuidos son MIMD.
los que no tienen que ver; por lo tanto,es preferible tener un computador personal aislado, sin conexiones de red conlas demás máquinas, para que los datos se mantengan en secreto.
A pesar de estos problemas potenciales, se puede ver que las ventajas tienen mayor peso que las desventajas y,de hecho, es probable que en unoscuantos años muchas organizacionesconecten la mayoría de sus computadores a grandes sistemas distribuidos,para proporcionar un servicio mejor, másbarato y más conveniente para sususuarios.
Existe poco software para los sistemasdistribuidos en la actualidad.
La red se puede saturar o causar otrosproblemas.
Un acceso sencillo también se aplica adatos secretos.
REDES
SOFTWARE
SEGURIDAD
1.3. Conceptos de hardware
Aunque todos los sistemas distribuidos constan de varios CPUs, existen diversas formas de organizar el hardware;en particular, en la forma de interconectarse y comunicarse entre sí. Sehan propuesto diversos esquemas, peroninguno de ellos ha tenido un éxito completo.
Es probable que la taxonomía máscitada sea la de Flynn (1972), aunquees algo rudimentaria. Flynn eligió doscaracterísticas, consideradas por élcomo esenciales: el número de flujos deinstrucciones y el número de flujos dedatos.
Un computador, con un solo flujo deinstrucciones y un solo flujo de datos,se llama SISO ("Single Instruction SingleData"). Todos los computadores de un5010 procesador caen dentro de estacategoría.
Desventajas de los Sistemas Distribuidos.
añadirse una segunda. En ambos casos, hay que tender cables en uno o másedificios, con un gran costo; o bien, hayque reemplazar las tarjetas de interfazde la red..Una vez que el sistema llegaa depender de la red, la pérdida o saturación de ésta puede desvirtuar algunasde las ventajas que el sistema distribuido tenía.
Por último, la seguridad es, con frecuencia, un problema, debido a que silas personas pueden tener acceso a losdatos en todo el sistema, entonces también pueden tener acceso a datos con
:::::::::::::::::::::::=:::~117ICES'
r~.,
\.
Un segundo problema potencial esel ocasionado por las redes de comunicación, ya que se pueden perder mensajes, por lo cual se requiere de un software especial para su manejo y éstepuede verse sobrecargado. Al saturarse la red, ésta debe reemplazarse o
en un sistema distribuido, es lograr unamayorcomunicación entre las personas,en donde, según la gente, el correo electrónico tiene numerosos atractivos respecto del correo con cartas, el teléfonoo el fax.
Por último, un sistema distribuido tiene una mayor flexibilidad potencial queel hecho de darle a cada usuario uncomputador personal aislado. No 5610existe el método de conectar un grupode computadores personales, mediante una LAN, sino también tener unamezcla de computadores personales ycompartidos, tal vez con distintos tamaños, y dejar que 105 trabajos se ejecuten de la forma más adecuada, en vezde ejecutarlos siempre en el computador del propietario. De esta manera, lacarga de trabajo se puede difundir entre105 computadores, de forma más eficaz,y la pérdida de unas cuantas máquinasse puede compensar, si se permite a laspersonas que ejecuten sus trabajos enotra parte.
1.2.3. Desventajas de los SistemasDistribuidos
El peor de 105 problemas de 105 sistemas distribuidos es el software, debido a que no se tiene mucha experiencia en el diseño, implantación y uso delsoftware distribuido.
1.2.2. Venta/as de los SistemasDistribuidos respectode los pe independientes.
Muchos usuarios necesitan compartir ciertos datos. Por ejemplo, 105 empleados de reservaciones, en las líneasaéreas, necesitan tener acceso a la basemaestra de datos de los vuelos y reservaciones existentes. Si se le diera a cadaempleado una copia particular de todala base de datos, eso no funcionaría,puesto que nadie conocería 105 asientos vendidos por 105 demás empleados.Los datos compartidos son absolutamente esenciales para ésta yotras aplicaciones, de modo que las máquinasdeben estar conectadas entre sí. Losdatos no son 105 únicos elementos quese pueden compartir; otros candidatosson también 105 periféricos caros, comolas impresoras láser de color, los equipos de fotocomposición y 105 dispositivos de almacenamiento masivo (porejemplo, las cajas ópticas).
Una tercera razón, para la conexiónde un grupo de computadores aislados
118~=======================::=ICESI ::==:==::::=:=::=:=======:=~119Icesl
BUS
dar de cruceta y hace la misma función,pero tiene un problema de retraso, pueses muy lenta. Los investigadores diseñaron NUMA (Acceso no uniforme a lamemoria), la cual tiene un rápido acceso a su memoria, pero un lento accesoa la memoria de los demás.
En resumen, los multiprocesadoresbasados en buses, incluso con cachésmonitores, quedan limitados como máximo a 64 CPUs, por la capacidad del bus.Para rebasar estos límites es necesario una red de conmutador, como unconmutador de cruceta, una red omegao algo similar. Los grandes conmutadores de cruceta son muy caros y las grandes redes omega son caras y lentas.Las máquinas NUMA necesitan complejos algoritmos para un buen software decolocación. La conclusión es clara: Laconstrucción de un multiprocesadorgrande, fuertemente acoplado y conmemoria compartida, es difícil y cara.
él, también sea escrita en la memoria; yadem{.s. este caché mantiene un monitoreo permanente del bus, para sabercuándo una palabra que está en él hasido modificada y, por lo tanto, tambiénmodificarla en él. Mediante el uso deeste caché es posible colocar de 32 a64 CPUs en el mismo bus.
CPU CPU CPUMEMORIA
I caché 1 I caché 1 I caché I
se encuentra en memoria caché. Perotambién se presenta un problema dememoria incoherente, en el caso de quedos CPUs lean la misma palabra en susrespectivos cachés y uno de ellos lamodifique y el otro lea el valor viejo dela palabra. Los investigadores han solucionado esto con el diseño de un cachéque cuando una palabra sea escrita en
1.3.2. Muniprocesadorescon conmutador
Para construir un multiprocesadorcon más de 64 procesadores, es necesario un método distinto para conectarcada CPU con la memoria. Una posibilidad es dividir la memoria en módulos yconectarlos a la CPU con un conmutador. Cada CPU y cada memoria tienenuna conexión que sale de él. En cadaintersección está un delgado Conmutador del punto de cruce electrónico.que el hardware puede abrir y cerrar.Cuando un CPU desea tener acceso auna memoria particular, el conmutadordel punto de cruce qtle los conecta secierra de manera momentánea, para quetenga lugar dicho acceso. Esta descripción es del Conmutador de Cruceta,pero los Investigadores han dado a conocer otros tipos de conmutación, comoes la Red Omega, que utiliza muchomenos conmutadores que el conmuta-
f,
En general, los multiprocesadorestienden a estar más fuertemente acopiados que los multicomputadores,puesto que pueden intercambiar datosa la velocidad de sus memorias, peroalgunos multicomputadores, basados enfibras ópticas, pueden funcionar también con velocidad de memoria.
Aunque el estudio de multiprocesadores y multicomputadores, conbase en bus y con conmutador, no afecta directamente el estudio de los sistemas operativos distribuidos, es importante tener un concepto claro acerca decada uno de ellos.
1.3.1. Multiprocesadores con baseen buses
Los multiprocesadores con base enbuses constan de cierto número deCPUs, conectados a un bus común, junto con un módulo de memoria. Una configuración sencilla consta de un planode base ("backplane") de alta velocidado tarjeta madre, en la cual se puedeninsertar varias tarjetas de memoria y elCPU.
Para leer una palabra de memoria,un CPU coloca la dirección de la palabra deseada en las líneas de direccióndel bus y una señal en las líneas adecuadas de control, para indicar que desea leer. La memoria responde y colocael valor de la palabra en las líneas dedatos, para permitir la lectura de éstapor parte del CPU solicitante. La escritura funciona de manera similar.
El problema con este esquema esque si sólo se dispone de 4 ó 5 CPUs; elbus estará, por lo general, sobrecargado y el rendimiento disminuirá en formadrástica. La solución es añadir una Memoria Caché de alta velocidad entre elCPU y el bus, donde se guardan laspalabras de acceso reciente y no haynecesidad de utilizar el bus para ir abuscar, en la memoria, una palabra que
Los Computadores MIMO se puedendMdlren-dos grupos: aquellos que tienen memoña':compartida, que, por logeneral, se Daman Multiprocesadoresy aquellos que no, que a veces recibenel nombre de Multicomputadores. Ladiferencia esencial es que un Multiprocesador tiene un solo espacio dedirecciones virtuales, compartido portodos los CPU; yen un Multicomputador,cada máquina tiene su propia memoriaparticular.
Estas dos categorías se pueden subdividir, con base en la arquitectura de lared de interconexión, en Bus y conConmutador. En la primera queremosindicar que existe una sola red, planode base, bus, cable u otro medio queconecta todas las máquinas, como esel caso de la televisión comercial porcable; los sistemas con Conmutador notienen una sola columna vertebral comola televisión por cable, sino que tienencables individuales de una máquina aotra y utilizan varios patrones diferentes de cableado. Los mensajes se mueven a través de los cables y se hace unadecisión explícita de conmutación encada etapa, para dirigir el mensaje a Jolargo de uno de los cables de salida.
En ciertos sistemas las máquinasestán Fuertemente Acopladas y enotras están DébilmenteAcopladas; enun sistema Fuertemente Acoplado el
. retraso que se experimenta, al enviar unmensaje de un computador a otro, escorto y la tasa de transmisión de datos,es decir, el número de bits por segundoque se puede transferir es alto; en unsistema Débilmente Acoplado ocurre locontrario.
Los sistemas luertemente acopladostienden a utilizarse más como sistemasparalelos (para trabajar con un solo problema) y los débilmente acoplados tienden a utilizarse como sistemas distribuidos (para trabajar con varios problemasno relacionados entre sí), aunque estono siempre es cierto.
120~===================:====:=ICESI
eCONMUTADORPUNTO DE CRUCE
IeCPU
C
MEMORIA MEMORIA MEMORIALOCAL LOCAL LOCAL
CPU CPU CPU
El software débilmente acoplado permite que las máquinas y usuarios de unsistema distribuido sean independientesentre sí, en lo fundamental, pero queinteractúen, en cierto grado, cuando seanecesario. Consideremos un grupo decomputadores personales, cada uno delos cuales tiene su propio CPU, su propia memoria, su propio disco duro y supropio sistema operativo, pero que comparten ciertos recursos, tales como lasimpresoras láser y las bases de datos,en una LAN. Este sistema está débilmente acoplado, puesto que las máquinas individuales se distinguen con claridad, cada una de las cuales tiene supropio trabajo por realizar. Si la red fallapor alguna razón, las máquinas individuales continúan su ejecución en ciertogrado considerable, aunque se puedeperder cierta funcionalidad.
En el otro extremo, podríamos tenerel caso de un multiprocesador dedicado a la ejecución de un único programade ajedrez, en paralelo. A cada CPU sele asigna un tablero para su evaluacióny éste ocupa su tiempo, en. la evaluación de este tablero y de los tableros quese pueden generar a partir de él. Al terminar la evaluación, el CPU informa desus resultados y se le proporciona unnuevo tablero para trabajar con él. Elsoftware para este sistema, es decir, elprograma de aplicación y el sistemaoperativo necesario para soportarlo,están más fuertemente acoplados queen el caso anterior.
Con lo que hemos tratado hasta ahora, podemos ver que existen cuatro tipos de hardware distribuido y dos tiposde software distribuido. En teoría, deberían existir ocho combinaciones de hardware y software. Pero sólo existen cuatro, puesto que para el usuario lainterconexión de la tecnología no es visible. Un multiprocesador es un multiprocesador, sin importar si utiliza un buscon cachés monitores o una red omega.
1.4. Conceptos de software
Aunque el hardware es importante,el software 10 es aún más. La imagenque un sistema presenta a sus usuariosy la forma de pensar de éstos, acercadel sistema, queda determinada, en granmedida, por el software del sistema operativo, no por el hardware.
Los sistemas operativos no se pueden colocar fácilmente dentro de unosestándares como el hardware. Por supropia naturaleza, el software es vago yamorfo. Aún así, es más o menos posi·ble distinguir dos tipos de sistemas operativos para los sistemas de variosCPUs: Los Débilmente Acoplados yLos Fuertemente Acoplados.
1.3.4. Municomputadorescon conmutador
Se han propuesto y construido variasredes de interconexión, pero todas tienen la propiedad de que cada CPU tiene acceso directo y exclusivo a su propia memoria particular. Existen dostopologías populares, una Retículay unHipercubo. Las retículas son fáciles decomprender y se basan en las tarjetasde circuitos impresos. Se adecuan mejor a problemas, con una naturalezabidimensional inherente, como la teoríade gráficos o la visión.
Un hipercubo es un cubo-n-dimensional. Cada vértice es un CPU. Cadaarista es una conexión entre dos CPUs.Cada CPU tiene Un" conexiones conotros CPUs. Así, la complejidad delcableado aumenta en proporción logarítmica con el tamaño. Puesto quesólo se conectan los vecinos más cercanos, muchos mensajes deben realizar varios saltos, antes de llegar a sudestino. Los hipercubos con 1.024 CPUsestán disponibles en el mercado desdehace varios años y ya comienzan a es·tar disponibles los hipercubos, con hasta 16.384 CPUs.
:========================~121ICESI
M
ESTACIONDE TRABAJO
M
RED
interconexión, pero sólo es para la comunicación entre un CPU y otro. El volumen del tráfico será menor, varios órdenes, si se utiliza la red de inter·conexión para el tráfico CPU-Memoria;el sistema de interconexión puede tener una LAN de menor velocidad, encomparación con un "backplane".
M
MEMORIAS
ESTACIONDE TRABAJO
M
C
ESTACIONDE TRABAJO
-, ;
1.3.3. Multicomputadorescon base en buses
La construcción de un multicomputador es fácil. Cada CPU tiene unaconexión directa con su propia memorialocal. El único problema consiste en de·finir la forma en que los CPUs se comunican entre sí. Es claro que aquí también se necesita cierto esquema de
122-:-=========================::ICESI :========================~123ICESI
clientes a los servidores, junto con lasrespuestas correspondientes, enviadaspor los servidores de regreso a los clientes. Mientras un servidor reconozca ypueda manejar todas las solicitudes enlos protocolos, no necesita saber algode sus clientes. En forma análoga, losclientes consideran a los servidorescomo "cajas negras". El primer protocolo de NFS maneja el montaje. Un cliente puede enviar el nombre de una rutade acceso a un servidor y solicitar elpermiso para montar ese directorio enalguna parte de su jerarquía de directorios. El segundo protocolo de NFS espara el acceso a los directorios y archivos. Los clientes pueden enviar mensajes a los servidores para el manejo delos directorios y la lectura o escritura dearchivos. Además, también pueden tener acceso a los atributos de archivo,tales como su modo, tamaño y fecha dela última modificación.
• Implantación de NFS: La implantación del código del cliente y del servidor es independiente de los protocolos.Consta de tres capas: la capa superiores la capa de llamadas al sistema; éstamaneja las llamadas del tipo OPEN,READ Y CLOSE. Después de analizarla llamada y verificar los parámetros, llama a la segunda capa, la capa del sistema virtual de archivos (VFS). La tareade la capa VFS es mantener una tabla,con una entrada por cada archivo abierto, análoga a la tabla de ínodos, paralos archivos abiertos en Unix. Despuésde descubrir el nombre de la máquinadonde se localiza el directorio por montar, se relaciona esa máquina buscandoun "file handle" para el directorio remoto. Si el directorio existe y está disponible para su montaje remoto, el servidorregresa, entonces, un ''file handle" parael directorio. Por último, se transfiere el''file handle" al núcleo.
de servidores de archivo en Unix, conCPU de Motorola 68030 o SunSparc.
Existen tres aspectos importantes deNFS: la Arquitectura, el Protocolo y laImplantación.
• La Arquitectura de NFS: La ideafundamental de NFS es permitir que unacolección arbitraria de clientes y servidores compartan un sistema de archivos común. En la mayoría de los casos,todos los clientes y servidores están enla misma LAN, pero esto no es necesario. Es posible ejecutar el NFS en unaWAN. Tomamos a los clientes y servidores como máquinas distintas, peroNFS también permite que cada máquina sea un cliente y un servidor al mismotiempo.
• La característica básica de la arquitectura de NFS es que los servidores exportan directorios y los clientes losmontan de manera remota. Si dos o másclientes montan el mismo directorio almismo tiempo, ellos se pueden comunicar y compartir archivos en sus directorios comunes. Un programa para uncliente puede crear un archivo y un programa para otro cliente distinto, puedeleer dicho archivo. Una vez llevados acabo los montajes, no hay que hacernada especial para lograr compartir losarchivos. Los archivos compartidos están ahí, en la jerarquía de directorios devarias máquinas, y se puede leer o escribir en ellos de la manera usual. Estasencillez es uno de los grandes atractivos de NFS.
• Protocolos de NFS: Puesto queuno de los objetivos de NFS es soportarun sistema heterogéneo, en donde losclientes y servidores podrían ejecutardistintos sistemas operativos en hardware diverso, es esencial que la interfazentre los clientes y servidores esté biendefinida. NFS logra este objetivo mediante la definición de dos protocoloscliente-servidor. Un Protocolo es unconjunto de solicitudes que envían los
de archivos. Cada una de las solicitudes que llegue se examina, se ejecuta yla respuesta se envía de regreso.
Los servidores de archivos tienen, porlo general, un sistema jerárquico de archivos, cada uno de los cuales tiene undirectorio raíz, con sus directorios y archivos. Las estaciones de trabajo pueden importar o montar estos sistemasde archivos, lo que aumenta sus sistemas locales de archivos con aquelloslocalizados en los servidores.
El sistema operativo por utilizar, eneste tipo de ambiente, debe controlartanto las estaciones de trabajo, en loindividual, como a los servidores de archivos, y también debe encargarse dela comunicación entre ellos. Es posibleque todas las máquinas ejecuten el mismo sistema operativo, pero esto no esnecesario. Si los clientes y los servidores ejecutan diversos sistemas, entonces, como mínimo, deben coincidir enel formato y significado de todos losmensajes que podrían intercambiar. Enuna situación como ésta, en la que cadamáquina tiene un alto grado de autonomía y existen pocos requisitos a lo largode todo el sistema, las personas se refieren a ella como un Sistema Operativo de Red.
Uno de los mejores sistemas operativos de red es el Network File System,de Sun Microsystems, conocida en general como NFS. Es un sistema conamplio uso. Sun Microsystems diseñó eimplantó NFS, en un principio para suuso en estaciones de trabajo con baseen UNIX. Ahora lo soportan otros fabricantes tanto para Unix como para otrossistemas operativos (como MS-DOS).NFS soporta sistemas heterogéneos,por ejemplo, clientes de MS-DOS quehacían uso de servidores Unix. Ni siquiera se pide que las máquinas utilicen elmismo hardware. Es común encontrarse con clientes de MS-DOS que utilizanCPU de Intel 386 y obtienen servicios
1.4.1. Sistemas Operativosde Redes y NFS
La combinación más común, en muchas organizaciones, es un softwaredébilmente acoplado en un hardwareigual. Un ejemplo típico es una red deestaciones de trabajo de ingeniería, conectadas mediante una LAN. En estemodelo, cada usuario tiene una estaciónde trabajo para su uso exclusivo, lo mismo que su propio sistema operativo, endonde lo normal es que todos los comandos se ejecuten en forma local, precisamente en la estación de trabajo.
Sin embargo, a veces es posible queun usuario se conecte de manera remota con otra estación de trabajo, mediante un comando.
El efecto de este comando es convertir la propia estación de trabajo delusuario en una terminal remota, enlazada con la máquina remota. Los comandos escritos en el teclado se envían a lamáquina remota y la salida de ésta seexhibe en la pantalla. En cualquier instante, sólo se puede utilizar una máquina y la selección de ésta se realiza enforma manual.
Las redes de las estaciones de trabajo también tienen un comando de copiado remoto, para copiar archivos deuna máquina a otra, pero el usuario debeestar consciente de la posición de losarchivos.
Aunque es mejor que nada, esta forma de comunicación es primitiva en extremo. Un método más conveniente decomunicación y distribución de la información consiste en proporcionar un sistema de archivos global compartido,accesible desde todas las estaciones detrabajo. Una o varias máquinas, llamadas Servidores de Archivos, soportanel sistema de archivos. Los servidoresaceptan solicitudes de los programas deusuarios, los cuales se ejecutan en lasotras máquinas (No servidoras), llamadas Clientes, para la lectura y escritura
124~:::::::::::::::::::::::::==:ICESI
TRANSPARENCIA Los usuarios no pueden indicar la localización deDE LOCALlZACION. los recursos.
TRANSPARENCIA Los recursos se pueden mover a voluntad, sinDE MIGRACION cambiar sus nombres.
TRANSPARENCIA Los usuarios no pueden indicar el número deDE REPLICA. copias existentes.
TRANSPARENCIA Varios usuarios pueden compartir recursos deDE CONCURRENCIA. manera automática.
TRANSPARENCIA Las actividades pueden ocurrir en parelelo, sin elDE PARALELISMO. conocimiento de los usuarios.
2. COMUNICACIONESEN LOS SISTEMAS DISTRIBUIDOS
La diferencia más importante entre unsistema distribuido y un sistema de único procesador es la comunicación entre los procesos. En un sistema con unsolo procesador, la mayor parte de lacomunicación entre procesos supone,de manera implícita, la existencia de lamemoria compartida. Un ejemplo típicoes el problema de los lectores escritores, en donde un proceso escribe en un"buffer" compartido y otro proceso lo lee.Incluso, en las formas más básicas desincronización, como el semáforo, hayque compartir una palabra (La variabledel semáforo). En un sistema distribuido no existe tal memoria compartida, porlo que toda la naturaleza de la comunicación entre procesos debe replantearsea partir de cero.
Comenzaremos con el análisis de lasreglas a las que se deben apegar losprocesos respecto de la comunicación
1.5.5. Esca/amiento - Extensión
La mayoría de los sistemas distribuidos está diseñada para trabajar conunos cuantos cientos de CPUs. Es posible que los sistemas futuros tenganmayores órdenes de magnitud y que lassoluciones que funcionen bien para 200máquinas fallen de manera total para200 millones; por esto, es importante queal construir los sistemas distribuidos sepiense en el número de máquinas queen un futuro se le acondicionarán.
miento (número de trabajos por hora),el uso del sistema y la cantidad consumida de la capacidad de la red. El problema del desempeño se complica porel hecho que la comunicación, factoresencial en un sistema distribuido (yausente en un sistema con un únicoprocesador), es algo lenta por lo general. Así, para optimizar el desempeño,con frecuencia hay que minimizar elnúmero de mensajes.
1.5.4. DesempeñoLa construcción de un sistema distri
buido transparente, flexible y confiableno hará que usted gane premios si esmuy lento. En particular, cuando se ejecuta una aplicación en un sistema distribuido, no debe parecer peor que suejecución en un único procesador.
Se pueden utilizar diversas métricasdel desempeño. El tiempo de respuestaes uno, pero también lo son el rendi-
1.5.3. Confiabllidad
Uno de los objetivos originales de laconstrucción de sistemas distribuidosfue el hacerlos más confiables que lossistemas con un único procesador. Laidea es que si una máquina falla, alguna otra máquina se encargue del trabajo.
::::======:::::=:::::::::::~125ICESI
1.5.2. Flexibilidad
Es importante que el sistema seaflexible, ya que apenas estamos aprendiendo a construir sistemas distribuidos.Es probable que este proceso tengamuchas salidas falsas y una considerable retroalimentación. Las decisiones dediseño que ahora parezcan razonablespodrían demostrar ser incorrectas posteriormente.
Existen dos escuelas de pensamiento en cuanto a la estructura de los sistemas distribuidos. Una escuela dice quecada máquina debe ejecutar un núcleotradicional que proporcione la mayoríade los servicios. la otra sostiene que elnúcleo debe proporcionar lo menos posible y que el grueso de los servicios delsistema operativo se obtenga a partir delos servidores al nivel usuario. La primera escuela, conocida como el núcleomonolítico, opera en el actual sistemaoperativo y centralizado básico, aumentado con las capacidades de la red y laintegración de los servicios remotos. Lasegunda escuela, conocida como elmicronúcleo, opera en los sistemas distribuidos diseñados actualmente.
te acoplado en un hardware igual. Aunque existen varias máquinas de propósito especial en esta categoría (como lasmáquinas dedicadas a las bases de datos), los ejemplos más comunes de propósito general son los multiprocesadores, como los fabricados porSequent y Encare, que operan como unsistema de tiempo compartido de Unix,sólo que con varios CPU en lugar de unosolo.
La característica clave de este tipode sistema es la existencia de una solacola para la ejecución: una lista de todos los procesos, en el sistema, que noestán bloqueados en forma lógica y listos para su ejecución. La cola de ejecución es una estructura de datos contenida en la memoria compartida.
1.5 Aspectos del diseño
1.5.1. Transparencia
Un sistema es transparente cuandohace que las personas piensen que lacolección de máquinas es tan sólo unsistema de tiempo compartido de un soloprocesador, es decir, cuando se le oculta la distribución del sistema y piensanque un solo computador es el que hacetodo el trabajo. Existen cinco tipos detransparencia:
1.4.2. Sistemas realmentedistribuidos
El siguiente paso, en la evolución, esel de un software fuertemente acopladoen un hardware débilmente acoplado (esdecir, multicomputadores). El objetivo deun sistema de este tipo es crear la ilusión, en las mentes de los usuarios, deque toda la red de computadores es unsolo sistema de tiempo compartido, envez de una colección de máquinas diversas. Esto nos lleva a nuestra definición de sistema distribuido: un SistemaDistribuido es aquel que se ejecuta enuna colección de máquinas sin memoria compartida, pero que aparece antesus usuarios como un solo computador
Para que un sistema sea realmentedistribuido, debe existir un mecanismode comunicación global entre los procesos, de forma que cualquier procesopuede hablar con cualquier otro; además, no tiene que haber distintos mecanismos en distintas máquinas o distintos mecanismos para la comunicaciónlocal o la comunicación remota; tambiéndebe existir un esquema global de protección.
1.4.3. Sistemas de multiprocesadorcon tiempo compartido
La última combinación que queremosanalizar es la de un software fuertemen-
conocida como protocolo. Para los sistemas distribuidos, estos protocolos toman con frecuencia la forma de variascapas, cada una con sus propias metasy reglas; luego analizaremos con másdetalle el modelo cliente-servidor, delcual tanto se ha hablado. Finalmente,veremos la forma en que se intercambian los mensajes y las muchas opciones disponibles para los diseñadores delsistema.
2.1. Redes y Comunicaciones
Como vimos en la primera parte, eldisponer de una red es uno de los requisitos para poder hablar de un sistema operativo completamente distribuido; por ello, se hace importante estudiar las características de las comunicaciones, en los diferentes tipos de redes, bien sea en las redes del área local LAN o en las redes de área ampliaWAN. Estas últimas permitirán, en unfuturo, ofrecer la posibilidad de conexiónen el mundo, entre computadores yusuarios; por ello se deben acordar protocolos o reglas de comunicaciónestándar entre los usuarios, e inclusoentre los diferentes tipos de redes.
En el exterior existen diferentes organismos, los cuales han tratado deestablecer protocolos comunes paraseguir en todas las comunicaciones quese puedan llevar a cabo en los diferen-
. tes tipos de redes. Entre los organismosmás destacados vale la pena mencionar la Organización Internacional parala Internacionalización (ISO), con sumodelo de referencia para la interconexión de sistemas abiertos OSI; elComité Consultivo Intemacional para laTelegrafía y las Telecomunicaciones(CCITI) y el Instituto NacionalAmericano de Normas (ANSI).
Entre los conjuntos de normas másimportantes podemos citar el OSI, queabarca una arquitectura de servicios yprotocolos y es comúnmente usado en-
tre las redes de área amplia, y el TCP/IP, utilizado entre los computadores delDepartamento de Defensa de los Estados Unidos.
2.2. Protocolos con capas
Debido a la ausencia de memoriacompartida, todas las comunicacionesen los sistemas distribuidos se basan enla transferencia de mensajes. Cuandoel proceso A quiere comunicarse con elproceso B, construye primero un mensaje en su propio espacio de direcciones. Entonces, ejecuta una llamada alsistema para que éste busque el mensaje y lo envíe, a través de la red, haciaB. Como vemos, esto parece sencillo,pero, para evitar confusiones, A y B deben coincidir en el significado de los bitsque se envíen. Por ejemplo, si A envíaun mensaje, en código ASCII, y B espera un mensaje en el código EBCDIC, lacomunicación no será óptima.
Como vemos, se necesitan muchospuntos de común acuerdo para establecer una buena comunicación. ¿Cuántosvoltios hay que utilizar para la señal correspondiente a un bit cero y cuántospara un bit uno? ¿Cómo sabe el receptor cuál es el último bit del mensaje?¿Cómo puede detectar si un mensajeha sido dañado o perdido, y qué debehacer si lo descubre? ¿Qué longitud tienen los números, cadenas y otros elementos de datos y cuál es la forma enque están representados? De este ejemplo se puede deducir que se necesitanvarios puntos de acuerdo con una amplia gama de niveles, desde los detallesde bajo nivel de los bits hasta los detalles de alto nivel, acerca de la formacomo debe expresarse la información.
2.2.1. Modelo de referencia para lainterconexión de sistemasabiertos OSI
Este modelo está diseñado para permitir la comunicación entre los sistemas
abiertos. Un sistema abierto es aquelpreparado para comunicarse con cualquier otro sistema abierto, mediante regias estándar que gobiernan el formato,el contenido y el significado de los mensajes recibidos. Estas reglas se formalizan en lo que se llaman protocolos. Entérminos básicos, un protocolo es unacuerdo de la forma en que debe desarrollarse la comunicación. Cuando sepresentan una mujer y un hombre, ellapuede optar por extender la mano. El, asu vez, puede decidir si estrechársela obesársela según si, por ejemplo, ella esuna abogada en una junta de negocioso una princesa europea en un baile formal. La violación del protocolo hará quela comunicación sea más difícil o, tal vez,imposible.
El modelo OSI distingue entre dos tipos generales de protocolos: los orientados hacia las conexiones y los que notienen ninguna conexión; los primeros,antes de intercambiar los datos entre elemisor y el receptor, negocian el protocolo por utilizar, mientras que los segundos no necesitan ninguna configuraciónprevia para empezar a transmitir el mensaje. Un ejemplo de comunicación sinconexión podría ser el depositar unacarta en un buzón, ya que el receptorno espera que le llegue la carta que enese momento ha sido depositada y mucho menos ha podido establecer unaconexión previa con el emisor para neogociar las normas que se deberían utilizar en el envío de la carta.
En el modelo OSI, la comunicaciónse divide hasta en siete niveles o ca-
pas, como se muestra en la Figura 2.1.Cada capa se encarga de un aspectoespecífico de la comunicación; de estaforma, el problema se puede dividir enpiezas manejables, cada una de las cuales se puede resolver en forma independiente de las demás. Cada capa proporciona una interfaz con la capa siguiente. La interfaz consiste en un conjuntode operaciones, para definir el servicioque la capa está preparada a ofrecer asus usuarios.
2.2.2. Capas del modelo OSI
El modelo OSI cuenta con siete capas, una serie de interfaces y siete protocolos, los que garantizarán que la comunicación entre el emisor y el receptorsea eficiente y confiable, como se muestra en la Figura 2.1. Las siete capas delmodelo OSI y su utilidad se describirána continuación:
La capa física: Se preocupa por latransmisión de los ceros y los unos.El número de voltios por utilizar (O y1), el número de bits por segundoque se pueden enviar, el hecho quela transmisión se lleve a cabo enambas direcciones, en forma simultánea, son todos aspectos claves enla capa física. Además, el tamaño yforma del conector en la red, asícomo el número de PINS y el significado de cada uno son temas de interés para dicha capa. El protocolode la capa física controlará que,cuando una máquina envíe el bit O,sea realmente recibido como un bitoyno como un bit 1.
126~::::=::::=:::::========:::::ICESI :===::====::=::::::::::::=:~127ICESI
MODELO OSI tal. Sin embargo, como el servicio postal es malo, en cierto momento las dossecretarias deciden abandonarlo y comunicarse por fax. Lo pueden hacer sinmolestar a sus jefes, puesto que su protocolo se refiere a la transmisi6n físicade las órdenes y a su contenido. En forma análoga, el jefe de servicios de pasajeros decide no pedir el pollo y pedirel nuevo especial de Mushy, un filete,sin que esa decisión afecte a las secretarias. Lo que debemos observar es queaquí tenemos dos capas: Los jefes y lassecretarias, y cada capa tiene su propioprotocolo: temas de discusión y tecnología, que se pueden cambiar independientemente el uno del otro.
De la misma forma, cuando un proceso A de la máquina 1 desea comunicarse con el proceso B de la máquina 2,construye un mensaje y lo transfiere ala capa de aplicación en su máquina; elsoftware de dicha capa agregará un encabezado y hará seguir el mensaje pormedio de la interfaz hasta la capa de presentación, en donde se le agregará otroencabezado y así sucesivamente se repetirá el proceso hasta llegar a la capade enlace de datos, como se muestraen la Figura 2.2. Una vez la máquina 1tenga el mensaje, con los encabezadoscorrespondientes, lo enviará a la máquina 2, la cual, realizando el proceso inverso, lo interpretará en la forma correcta.
final de lacapa debase dedatos.Figura 2.2. Un mensaje típico, tal eomo aparece en la red.
EJEMPLO DE UN MENSAJE ENVIADO DE ACUERDO CON EL MODELO OSIEncabezado de la capa de enlace de datos
Encabezado de la capa de red
J!¡EncabezadO de la capa de transporte
f1JncabezadO de la capa de sesión
Dncabezado de la capa de presentación
J j ~ncabezadD de la capa de aplicación
rr::o:IIJ M.","], ~LI 1 Extremo
registro de la parte que está hablando en cierto momento y proporcionafacilidades en la sincronización. Enla práctica, pocas aplicaciones estáninteresadas en la capa de sesión yrara vez se le soporta.
La capa de presentación: Esta capase encarga de dar un formato al mensaje del emisor, para hacerlo entendible por el receptor; dicho formato será una especie de registro, concampos de tamaño adecuado paraalbergar datos como nombres, direcciones, etc.
La capa de aplicación: Esta capa seencarga de establecer protocolospara actividades comunes entre terminales remotas; los más conocidosson el protocolo de correo electrónico XAOO y el servidor de directoriosX.500.
Para entender mejor el porqué de laexistencia de las diferentes capas, en elmodelo de comunicaciones OSI, veamosun ejemplo:
Consideremos la comunicación entredos compañías, ZyppyAirlines ysu proveedor, Mushy Mea/s. /ne. Cada mes, eljefe de servicios de pasajeros, en Zippy,le pide a su secretaria que haga contacto con la secretaria del gerente de ventas en Mushy, para ordenar cien mil cajas de pollo. Por lo general, las órdenesse solicitan por medio de la oficina pos-
:=========================~129ICES'
'J ,,'1',
compañías telefónicas, y el orientado a la no conexión, llamado IP deprotocolo internet, el cual es usadopor el Departamento de Defensa delos Estados Unidos.
- La capa de transporte: Esta capa seencarga de recibir el mensaje proveniente de la capa de sesión, loparte en pequeños pedazos, de forma que cada una se ajuste a un único paquete; le asigna a cada uno unnúmero secuencial y después losenvía al receptor. Existen diferentesprotocolos de transporte, entre ellosestán desde el TPO hasta el TP4,protocolos oficiales de transporteISO; el TCP, protocolo de transportedel Departamento de Defensa de losEstados Unidos; la combinaciónTCP/IP, protocolo de transporte dela mayoría de los sistemas UNIX, yel UDP, utilizado por los programasde usuario que no necesitan las conexiones.
- La capa de sesión: Esta capa es unaversión mejorada de la capa detransporte. Proporciona el control dediálogos, con el fin de mantener un
Máquina 1 Máquina 2
~roceso0 QrocesoD
~ t1 IProtocolo de aplicación
Aplicación r ~ AplicaciónProtocolo de presentación
t 2 Presentación ~ ~ Presentación9
3 Sesión ¡. Protocolo de sesión~ Sesión
4 Transporte ~Protocolo de transporte
~ Transportea Protocolo de red
5 Red ¡.. ~ Redz Protocolo de enlace de dato~61 Enlace de datos ~ Enlace de Datos
71Protocolo físico
Físico ~ ~ Físico
Figura 2.1. Capas, interfaces y protocolos en el modelo OSI.
RED
- La capa de enlace de los datos: Estacapa no sólo detecta los errores sinoque los corrige. lo que hace es agrupar los bits en unidades, que a veces se llaman marcos, y revisar quecada marco se reciba en forma correcta; los marcos están conformados por tres campos: un bit al inicio,un bit al final y otro de verificación,conocido como CKECKSUM; esteúltimo contendrá la suma de todoslos bits del marco, así, en el momento en que el mensaje llegue al receptor, éste sólo tendrá que volver acalcular la suma de los bits del marco ycompararla con el contenido delCKECKSUM, para determinar si lainformación llegó correctamente; encaso contrario, el receptor pedirá alemisor la retransmisión de los datos.
- La capa de la red: Esta capa se encarga de enrutar los datos del emisor, para que lleguen por el caminomás corto posible al receptor. Existen dos protocolos comúnmente usados en las capas de red: el orientado a las conexiones, denominadoX.25, utilizado con frecuencia por las
128~=======================::=ICES'
TRANSFERENCIA DE MENSAJES EN EL MODELO CLIENTE SERVIDOR
Figura 2.3.
130~==========================ICE;
la máquina-destino? ¿Cuál de ellos obtiene el mensaje? El núcleo no tiene forma de decidir. En consecuencia, un esquema que utilice las direcciones en lared para la identificación de los procesos indica que sólo se puede ejecutarun proceso en cada máquina. Aunqueesta limitación no es fatal, a veces esuna seria restricción, razón por la cualsurgen tres tipos de métodos para la dirección de los procesos en un modelocliente-servidor. El primero integra el"machine-number" al código del cliente;es decir, se envían mensajes a los procesos en lugar de enviárselos a las máquinas. Aunque este método eliminatoda la ambigüedad acerca de quién esel verdadero receptor, presenta el problema de cómo identificar los procesos.Un esquema común consiste en utilizarnombres con dos partes, para especificar tanto la máquina como el proceso.Por ejemplo, el número 243.4 me indicará que estoy refiriéndome a la máquina 243 y al proceso 4, como se muestra en la Figura 2.5.
El segundo método será dejar quelos procesos elijan sus direcciones alazar entre un espacio de direccionesgrande y disperso, como lo es el deenteros binarios de 64 bits. la probabi-
Solicitud/Respuesta
Enlace de datos
Física
TRANSFERENCIA DE MENSAJES EN EL MODELO CLIENTE
SERVIDOR
Capas
7
6
5
4
3
2
Debido a esta estructura tan sencillase pueden reducir los servicios de comunicación que presta el micronúcleo;por ejemplo, a dos llamadas al sistema,una para el envío de mensajes y otrapara recibirlos. Estas llamadas al sistema se pueden pedir a través de procedimientos de librerías, como SEND(DEST, &MPTR) Y RECEIVE (ADDR, &MPTR). La primera envía el mensaje alque apunta MPTR, en un proceso quese identifica como DEST, y provoca quequien hace la llamada se bloquee hastacuando se envíe el mensaje. La segunda hace que quien hizo la llamada sebloquee hasta que reciba un mensaje.Cuando llega un mensaje, éste se copia en el "buffer" al que apunta MPTR yquien hizo la llamada se desbloquea. ElparámetroADDR determina la direcciónen la cual escucha el receptor.
Figura 2.4.
2.3.1. Dirección
Para que un cliente pueda enviar unmensaje a un servidor, debe conocer ladirección de éste. Si sólo existe un proceso en ejecución en la máquina-destino cuando se envía el mensaje, el núcleo sabrá qué hacer con el mensajerecibido (dárselo al único proceso enejecución). Sin embargo, ¿qué ocurre siexisten varios procesos en ejecución en
:==========================~131,ICESI
des distancias, el utilizar OSI implicaríacontroles innecesarios y, por ende, desperdicio de tiempo de la CPU y un ~~sto
excesivo comparado con sus benefiCIOS.
Por ello, se hace necesario estructurar el sistema operativo de unaforma diferente, dando origen así almodelo cliente servidor, éste tendrá unsistema operativo estructurado por grupos de procesos en coopera~ión, 1I~",la
dos servidores, que ofreceran serviCIOSa los usuarios, llamados clientes. Lasmáquinas de los clientes y servidoresejecutan, por lo general, el mismomicronúcleo y ambos se ejecutan comoprocesos del usuario.
Para evitar un gasto excesivo en losprotocolos orientados a la conexión, tales como OSI o TCP/IP, lo usual es queel modelo cliente-servidor se base en unprotocolo solicitudlrespuest~, sencillo ysin conexión. El cliente envla Ull' mensaje al servidor, para pedir cierto servicio, por ejemplo, la lectura de un bloquede cierto archivo. El servidor hace el trabajo y regresa los datos solicitados o uncódigo de error, para indicar la razón porla cual un trabajo no se pudo llevar acabo, como se muestra en la Figura 2.3.La principal ventaja de dicho modelo essu sencillez, ya que el cliente envía unmensaje y obtiene una respuesta; porsu parte, como se ve en la Figura 2.4, lapila de capas del modelo es mucho máscorta que la de OSI, contando únicamente con tres capas: la física, la de enlacede datos y la de solicitud y respuesta.
SolicitudCliente Servidor
Respuesta
Núcleo Núcleo
I RED I
2.3. El modelo cllente-servidor
A primera vista, los protocolos concapas, a lo largo de las líneas OSI: seven como una forma fina de organizarun sistema distribuido. En efecto, unemisor establece una conexión; es decir una especie de entubamiento de bitsco~ el receptor y, entonces, empieza abombear los bits que llegan sin error, enorden, al receptor. Surge entonces lapregunta: ¿qué podría estar mal en estemodelo?
A pesar de que el modelo OSI parece ser la forma más eficiente para controlar la comunicación entre el emisor yel receptor, esto sólo se puede afirmarsi es utilizado en redes de tipo WAN, yaque, por tratarse de redes en las q~e
los terminales se encuentran distanciados en muchas ocasiones por kilómetros, no importará tener que recurrir aun modelo tan complicado como el OSI,que a pesar de demandar gran cantid~d
de tiempo en la comunicación, nos brindará la certeza de contar con datosconfiables, sin importar las diferenciasque puedan existir, tanto en hardwarecomo en el sistema operativo entre elemisor y el receptor, diferencias q,uepodrán ser sorteadas fácilmente graciasa sus siete capas de control.
Para las redes de tipo LAND no esaconsejable utilizar este modelo, ya quepor tratarse de comun.ic~cion~s.entreterminales con caractenstlcas Similares,las cuales no están separadas por gran-
Cliente en ejecución
Regreso
... ..Envío del mensaje
general, los diseñadores del sistemaaunque en algunos cuantos sistemas s~dispone de ambos y los usuarios pue·den elegir su favorito. Sin embargo, laventaja de desempeño que ofrecen lasprimitivas sin bloqueo se ve afectada poruna seria desventaja: el emisor puedemodificar el "buffer" de mensajes cuando se envíe el mensaje; en caso de quese modificara, se enviarían datostraslapados. Para solucionar dicho problema, podríamos optar por copiar elmensaje a un "buffer" interno del núcleoy, así, permitir al proceso continuar conel envío del mensaje y, a la vez, dejar elbloqueo.
Otra altemativa sería la primitiva sinbloqueo con interrupción, en la cual, unavez se ha terminado de enviar el mensaje, se interrumpe al emisor para avisarle que ya puede utilizar el "buffer".
Clientebloqueado
'C •Mensajecopiadoal núcleodel "buffer"
Señalamiento
Cliente en ejecución
Figura 2.9. Una primitiva senda sin bloqueo.
PRIMITIVAS DE BLOQUEO VS. NO BLOQUEO
PRIMITIVAS DE BLOQUEO VS. NO BLOQUEO
Cliente en ejecución Cliente en ejecución
Figura 2.8. Una primitiva senda con bloqueo.
-------4- ......f--------I..~Señalamiento r--R-e-g-re-s-o-----
d I. I Cliente bloqueado
e nuc eo del núcleo
Proceso de Procesobloqueado liberado
Envío del mensaje
En RECEIVE, el proceso se suspende hasta cuando llega un mensaje, incluso, aunque tarde varias horas. Enciertos sistemas el receptor puede especificar de quiénes quiere recibir mensajes, en cuyo caso permanece bloqueado hasta que llegue un mensaje delemisor especificado.
Una alternativa a las primitivas conbloqueo son las primitivas sin bloqueo oasíncronas, como se muestra en la Fi·gura 2.9. Si SENO no tiene bloqueo, re·gresa de inmediato el control a quienhizo la llamada, antes de enviar el menosaje. La ventaja de este esquema es queel proceso del emisor puede continuarsu cómputo, en forma paralela con latransmisión del mensaje, en vez de tener inactivo al CPU.
La elección entre las primitivas conbloqueo o sin bloqueo la hacen, por lo
:=========================~133ICES'
1: Transmisión2: Aquí estoy3: Solicitud
4: Respuesta
DIRECCION
DIRECCION
1: Búsqueda2: Respuesta a NS
3: Solicitud
4: Respuesta
Figura 2.7: Búsqueda de dirección pormedio de un servidor de nombres.
2.3.2. Primitivas de bloqueovs. no bloqueo
Las primitivas de transferencia demensajes, descritas hasta el momento,reciben el nombre de primitivas de bloqueo, a veces llamadas primitivassíncronas. Cuando un proceso llama unSENO, especifica un destino yun "buffer"dónde enviar ese destino. Mientras seenvía el mensaje, el proceso del emisorse bloquea. La instrucción que sigue ala llamada SENO se ejecuta cuando elmensaje se envía en su totalidad, comose muestra en la Figura 2.8. Oe maneraanáloga, una llamada a RECEIVE regresa el control cuando realmente se recibe un mensaje Y éste se coloca en el"buffer" de mensajes a donde apunta el
parámetro.
~=.Red
Figura 2.6. Dirección de procesos contransmisión.
Servidor
DIRECCION
1: Solicitud a 243.0
2: Respuesta a 199.0
Figura 2.5. Dirección máquina-proceso.
132~=====================:::==,,..~;;,
lidad de que dos procesos elijan el mismo número es muy pequeña y el método puede utilizarse en sistemas másgrandes. Sin embargo, aquí tambiénexiste un problema: ¿Cómo sabe el núcleo emisor a cuál máquina enviar elmensaje? La respuesta es simple; elnúcleo emisor transmite un paquete especial de localización, con la direccióndel proceso-destino, a toda la red; porsu parte, los núcleos verifican si la dirección en circulación es la suya y encaso que lo sea, regresa un mensajediciendo "aquí estoy", con su direcciónen la red; es decir, el número de la máquina. En ese momento el núcleo emisor utiliza, entonces, esa dirección y lacaptura para evitar el envío de otra transmisión la próxima vez que necesite alservidor, como se muestra en la Figura
2.6.El tercer método, para el direc
cionamiento de procesos en un modelo-cliente servidor, consiste en utilizaruna máquina adicional, llamada servidor de nombres, que me servirá para laasociación, en códigoASCII, de los nombres de los servicios con las direcciones de las máquinas, como se muestraen la Figura 2.7; el servidor de nombresle suministra al cliente el número de lamáquina donde se localiza, en ese momento, el servidor. Una vez obtenida ladirección, se puede enviar la solicitudde manera directa.
2.3.3. Primitivas almacenadasen "buffer" va.no almacenadas
Las primitivas descritas hasta ahorason esencialmente primitivas no almacenadas, Esto significa que una dirección se refiere a un proceso específico.Una llamada RECEIVE (ADDR, &M) leindica al núcleo de la máquina en dónde se ejecuta; además, que el procesoque hace la llamada escucha a la dirección ADDR y está preparada para recibir el mensaje enviado a esa dirección.
PRIMITIVAS ALMACENADAS VS. NOALMACENADAS
Figura 2.10. Transferencia de mensajessin almacenamiento en buffer.
2.3.4. Primitivas confiablesvs. no confiables
Hemos supuesto de una manera implícita que cuando un cliente envía unmensaje, el servidor lo recibirá. Losmensajes se pueden perder, lo cualafecta la semántica del modelo de transferencia de mensajes. Cuando se utilizan las primitivas por bloqueo y el clienteenvía un mensaje, se le suspende hasta que el mensaje ha sido enviado. Sinembargo, cuando vuelve a iniciar, noexiste garantía alguna de que el mensaje ha sido entregado. El mensaje podría haberse perdido. Existen tres distintos enfoques de este problema.
Se dispone de un único "buffer" de mensajes, al que apunta M, con el fin de capturar el mensaje por llegar. Cuando elmensaje llega el núcleo receptor, lo copia al "buffer" y elimina el bloqueo delproceso receptor, como se muestra enla Figura 2.10.
Un ejemplo de primitiva almacenadaes aquél en el cual los mensajes quellegan al servidor son almacenados enun "buffer" llamado buzón. como se ilustra en la Figura 2.11.
PRIMITIVAS ALMACENADAS VS. NOALMACENADAS
La direcciónse refierea un buzón
0 CDNúcleo
I IFigura 2.11. Transferencia de mensajescon almacenamiento en buffer.
El primero consiste en volver a definir la semántica del SEND para hacerlono confiable. El sistema no da garantíaalguna acerca de la entrega de los mensajes. La implantación de una comunicación confiable se deja enteramente enmanos de los usuarios. La oficina de correos funciona de esta manera. Cuando usted deposita una carta en un buzón, la oficina de correos hace lo mejorpor entregarla, pero no promete nada.
El segundo método exige que el núcleo de la máquina receptora envíe unreconocimiento al núcleo de la máquina emisora. Sólo cuando se reciba estereconocimiento el núcleo emisor Iibera-
rá el proceso hacia los usuarios (clientes). El reconocimiento va de un núcleoa otro; ni el cliente ni el servidor ven alguna vez un reconocimiento, de la misma forma que la solicitud de un clientea un servidor es reconocida por el núcleo del servidor; la respuesta del servidor, de regreso al cliente, es reconocidapor el núcleo del cliente. Así, una solicitud de respuesta consta de cuatro mensajes, como se muestra en la Figura 2.12.
PRIMITIVAS CONFIABLES VS. NOCONAABLES
1 ~
~i~~3
E~4
Núcleo Núcleo
Iz
IRed
1. Solicitud (del cliente al servidor)2. Reconocimiento (de núcleo a núcleo)3. Respuesta del servidor al cliente4. Reconocimiento (de núcleo a núcleo)
Figura 2.12. Mensajes reconocidos en forma individual.
El tercer método aprovecha el hechoque la comunicación cliente-servidor seestructura como una solicitud del cliente al servidor, seguida de una respuestadel servidor al cliente. En este método,el cliente se bloquea después de enviarun mensaje. El núcleo del servidor noenvía de regreso un reconocimiento sinoque la misma respuesta funciona comotal. Así, el emisor permanece bloqueado hasta que regresa la respuesta. Sitarda demasiado, el núcleo emisor puede volver a enviar la solicitud, para protegerse contra la posibilidad de una pérdida elel mensaje. Este método se muestra en la Figura 2.13.
PRIMITIVAS CONAABLES VS. NOCONFIABLES
1 ~
C§~2
E~~Núcleo 3 Núcleo
I Red I1. Solicitud (del cliente al servidor)2. Respuesta (del servidor al cliente)3. Reconocimiento (de núcleo a núcleo)
Figura 2.13. La respuesta se utifiza comoreconocimiento de la solicitud.
El problema con el modelo básicocliente-servidor es que, desde el puntode vista conceptual, la comunicaciónentre procesos se maneja como E/S, yaque dicha comunicación utiliza uno delos modelos más sencillos de protocolos (solicitud y respuesta). Ahora, cuando una colección de procesos, por ejemplo servidores duplicados de archivo,tiene que comunicarse con otra comogrupo, se necesita algo más. Los sistemas de tipo ISIS proporcionan una solución a este problema: la comunicaciónen grupo. ISIS ofrece una gama de primitivas. de las cuales la más importante es CSCAST. CSCAST ofrece una semántica de comunicación débil con baseen la causalidad y se implanta mediante la inclusión de vectores de númerossecuenciales en cada mensaje, parapermitir al receptor que revise si el mensaje se debe entregar de manera inmediata o retrasarse hasta que lleguen algunos mensajes anteriores; éstos noserán tratados por ser casos particulares y más complicados.
De esta forma vemos que, gracias almodelo cliente-servidor, se puede entender un poco mejor cómo se desarrollan las comunicaciones entre procesosen una red de terminales inteligentes y.además, los diferentes aspectos que se
134~====================:::===ICESI :=======================:=~135/CES/
13~~========================ICESI :=========================~137ICESI
deberían tener en cuenta si se quisieradesarrollar un sistema de estas características; entre ellos aspectos de diseño, tales como si se utilizaran primitivasalmacenadas o no almacenadas, confiables o no confiables, con bloqueo osin bloqueo, etc.
3. SINCRONIZACION EN SISTEMASDISTRIBUIDOS
Un aspecto muy importante es la forma en que los procesos cooperan y sesincronizan entre sí. Por ejemplo, la forma de implantar las regiones críticas oasignar los recursos en un sistema distribuido.
En los sistemas que sólo cuentan conuna CPU, los problemas relativos a lasregiones críticas, la exclusión mutua yla sincronización se resuelven, en general, mediante métodos tales como lossemáforos y 105 monitores. Estos métodos no son adecuados para su uso enlos sistemas distribuidos, puesto quesiempre se basan (de manera implícita)en la existencia de la memoria compartida.
3.1. Sincronización de relojes
La sincronización es más complejaen los sistemas distribuidos que en loscentralizados, puesto que los primerosdeben utilizar algoritmos distribuidos.
Por lo general no es posible (o recomendable) reunir toda la informaciónrelativa al sistema en un solo lugar ydespués dejar que cierto proceso la examine y tome una decisión, como se haceen el caso centralizado.
En general los algoritmos distribuidostienen las siguientes propiedades:
1. La información relevante se distribuye entre varias máquinas.
2. Los procesos toman las decisionessólo con base en la información disponible en forma local.
3. Debe evitarse un único punto de.ta110 en el sistema.
4. No existe un reloj común o algunaotra fuente precisa del tiempo global.
Los primeros tres puntos indican quees inaceptable reunir toda la informaciónen un solo lugar para su procesamiento; además, el hecho que sólo exista unsolo punto de fallo, como éste, hace queel sistema no sea confiable. La idea esque un sistema distribuido debería sermás confiable que las máquinas individuales. Si alguna de ellas falla, el restopuede continuar su funcionamiento.
El último punto de la lista también escrucial. En un sistema centralizado, eltiempo no tiene ambigüedades. Cuando un proceso desea conocer la hora,llama al sistema y el núcleo se lo dice.En un sistema distribuido no es trivialponer de acuerdo todas las máquinasen la hora.
3.1 .1. Relojes lógicos
Casi todas las computadoras tienenun circuito para el registro del tiempodenominado cronómetro, el cual es, porlo general, un cristal de cuarzo trabajado con precisión. Cuando se mantienesujeto a tensión, un cristal de cuarzooscila con una frecuencia bien definida,que depende del tipo de cristal, la forma en que se corte y la magnitud de latensión. A cada cristal se le asocian dosregistros, un contadory un registro mantenedor (holding register). Cada oscilación del cristal decrementa en uno alcontador. Cuando el contador toma elvalor cero, se genera una interrupción yel contador se vuelve a cargar mediante el registro mantenedor. De esta forma es posible programar un cronómetro,de modo que genere una interrupcióncon la frecuencia que se desee. Cadainterrupción recibe el nombre de unamarca de reloj.
Cuando se trabaja con varias máquinas, cada una con su propio reloj, la situación es muy distinta de la que se presenta con un solo sistema. Aunque la
'f •
! .
frecuencia de un oscilador de cristal esmuy estable, es imposible garantizar quelos cristales de computadoras distintasoscilen con la misma frecuencia. En lapráctica, cuando un sistema tiene ncomputadores, los ncristales correspondientes oscilarán a tasas un poco distintas, lo que provoca una pérdida desincronía en los relojes (de software) yque, al leerlos, tengan valores distintos.La diferencia entre los valores del tiempo se llama distorsión del reloj. Comoconsecuencia de esta distorsión, podrían fallar los programas que esperanel tiempo correcto, asociado a un archivo, objeto, proceso o mensaje; esto esindependiente del sitio donde haya sidogenerado (es decir, el reloj utilizado).
En un artículo clásico, Lamport (1978)demostró que la sincronización de relo·jes es posible y presentó un algoritmopara lograr esto. Lamport señaló que lasincronización de relojes no tiene queser absoluta. Si dos procesos no interactúan, no es necesario que sus relojes estén sincronizados, puesto que lacarencia de sincronización no será observable y, por tanto, no podría provocar problemas. Además, señaló que loque importa, por lo general, no es quetodos los procesos estén de acuerdo demanera exacta en la hora sino que coincidan en el orden en que ocurren loseventos.
Para la mayoría de los fines, bastaque todas las máquinas coincidan en lamisma hora. Para una cierta clase dealgoritmos, lo que importa es la consistencia interna de los relojes, no su cercanía particular al tiempo real. Para estos algoritmos se conviene en hablar delos relojes como relojes lógicos. Parasincronizar los relojes lógicos, Lamportdefinió una relación llamada ocurre antes de (happens-before). La expresióna ~ b se lee: "a ocurre antes de b" eindica que todos los procesos coincidenen que primero ocurre el evento a y des-
pués el evento b. Esta relación se pue·de observar de manera directa en dossituaciones:
1. Si a y b son eventos en el mismoproceso y a ocurre antes de b, entonces a ~ b es verdadero.
2. Si a es el evento del envío de unmensaje por un proceso y b es elevento de la recepción del mensajepor otro proceso, entonces a ~ btambién es verdadero. Un mensajeno se puede recibir antes de ser enviado o al mismo tiempo en que seenvía, puesto que tarda en llegar unacantidad finita de tiempo.
Si dos eventos x y y están en procesos diferentes que no intercambian mensajes, entonces x~ y no es verdadero,pero tampoco lo es y ~ x. Se dice queestos eventos son concurrentes, lo quesignifica que nada se puede decir (o senecesita decir) acerca del momento enel que ocurren o cuál de ellos es el primero.
Lo que necesitamos es una forma demedir el tiempo, tal que a cada evento ale podamos asociar un valor del tiempoC (a) en el que todos los procesos estén de acuerdo. El tiempo del reloj Csiempre debe ir hacia adelante (creciente) y nunca hacia atrás (decreciente). Sepueden hacer correcciones al tiempo, alsumar un valor positivo al reloj, peronunca se le debe restar un valor positivo.
En la Figura 3.1 (a) vemos un ejemplo en donde existen tres procesos diferentes que se ejecutan en distintas máquinas, cada una con su propio reloj yvelocidad. Cada reloj corre a una razónconstante, sólo que las razones son distintas, debido a las diferencias en loscristales. Al tiempo 6, el proceso O envía el mensaje A al proceso 1; el relojdel proceso 1 lee 16 cuando el mensajellega. Si el mensaje acarrea el tiempode inicio, entonces el proceso 1 concluirá
138~=========================ICES.
RELOJES LOGICOS
2 O
Figura 3.1 (a). Tres procesos, cada unocon su propio reloj. Los relojes corren adiferentes velocidades.
y el tiempo solar creciera hasta 800milisegundos constantes. Esta corrección da lugar a un sistema de tiempobasado en los segundos IAI, pero quepermanece en fase con el movimientoaparente del sol; se le llama tiempocoordenado universal (UTC).
Para proporcionar UTC a las personas que necesitan un tiempo preciso, elInstituto Nacional del Tiempo Estándar(NIST) opera una estación de radio deonda corta, con las siglas WWV, desdeFort Collins, Colorado. WWV transmiteun pulso corto al inicio de cada segun-
.do UTC.
Varios satélites terrestres tambiénofrecen un servicio UTC, tal como elSatélite de Ambiente OperacionalGeoestacionario (GEOS).
3.1.3. Algoritmos parar laSincronización de Relojes
Si una máquina tiene un receptorWWV, entonces el objetivo es hacer quetodas las máquinas se sincronicen conella. Si ninguna máquina tiene receptores WWV, entonces cada máquina llevael registro de su propio tiempo y el objetivo es mantener el tiempo de todas lasmáquinas, tan cercano como sea posible.
.El algoritmo de Berkeley
En este caso, el servidor de tiempo(en realidad, un demonio para el tiempo) está activo y realiza un muestreoperiódico de todas las máquinas parapreguntarles el tiempo. Con base en lasrespuestas, calcula un tiempo promedioy les indica a todas las demás máquinas que avancen su reloj a la nueva horao que disminuyan la velocidad del mismo, hasta lograr cierta reducción específica. Este método es adecuado paraun sistema donde no exista un receptorde WWV. La hora del demonio, para eltiempo, debe ser establecida en formamanual por el operador, de manera periódica.
3.1.2. Relojes f(slcos
Cuando existe la restricción adicional de que los relojes no sólo deben seriguales sino que además no deben desviarse del tiempo real más allá de ciertamagnitud, los relojes reciben el nombrede relojes físicos. Para estos sistemasse necesitan relojes físicos extemos. Porrazones de eficiencia y redundancia, porlo general, son recomendables variosrelojes físicos, lo cual implica dos problemas:
1. ¿Cómo sincronizar los relojes con elmundo real?
2. ¿Cómo sincronizar los relojes entresr?
Con la invención del reloj atómico, en1948, fue posible medir el tiempo demanera mucho más exacta y en formaindependiente de todo el ir y venir de laTierra, al contar las transiciones del átomo de cesio 133. Los físicos retomaronde los astrónomos la tarea de medir eltiempo y definieron el segundo como eltiempo que tarda el átomo cesio 133para hacer exactamente 9.192.631.770transiciones.
Actualmente cerca de 50 laboratoriosen el mundo tienen relojes de cesio 133.En forma periódica, cada laboratorio leindica a la Oficina Intemacional de laHora en París (BIH) el número de marcas de su reloj. La oficina hace un promedio de estos números para producirel tiempo atómico inlemacional (TAl),que aunque es muy estable y está a disposición de todos los que quieran comprarse un reloj de cesio, existe un serioproblema con él; 860400 segundos TAl,a un tiempo cerca de tres milisegundosmenor que el de un día solar medio, loque significaría que, con el paso de losaños, el medio día ocurrirra cada vezmás temprano.
La BIH resolvió el problema mediante la introducción de segundos de salto,siempre que la discrepancia entre elTAI
:=====================:=:==~139ICESI
2
o O O._.._--_.. -.._-_ .._- --_.._.._ --------6 8 10.. --- -------- -------- -..._-----12 16 20-----........._-- ..- ....-.._-- --..__......18 24 30
---...._- ------ ...- oo-24 32 40_._ .._-- oo ....._ ...._ .......... __.... __.. __.. __
--~º--- ------- --~-Q-_. -------- --~Q---36 • ~_~__• _ ~SL_
__1?___ _ ~_L. . '?Q _
--~--- -- .- --~-~--- -------- --ªQ---70 77 90.......-_..... --_...._........~------ _.._-oo---76 85 100
ocurren eventos en los procesos 1 y 2,ambos en el tiempo 40, entonces el primero se convierte en 40.1 y el segundoen 40.2.
Por medio de este método tenemosahora una forma de asignar un tiempo atodos los eventos en un sistema distribuido, con las siguientes condiciones:
1. Si a ocurre antes de b en el mismoproceso, C (a) < C(b).
2. Si a y b son el envío y recepción deun mensaje, C (a) < C(b).
3. Para todos los eventos a y b,C(a) ~C(b).
En la solución propuesta por Lamport,para la asignación de tiempos a loseventos, Figura 3.1. (b), cada mensajeacarrea el tiempo de envío de acuerdocon el reloj del emisor. Cuando un mensaje llega y el reloj del receptor muestraun valor anterior al tiempo en que seenvió el mensaje, rápidamente el receptor adelanta su reloj para que tenga unaunidad más que la del tiempo de envío.
Figura 3.1 (b). El algoritmo de Lamport. corrige los errores.
O----_ ...---------10------- --------20._----- --_...----30
...- ...... -----_.....40------- --------50------- --------60
...- ........-------70----_.... --------80..oo ... __.. - .... _
90_..._---- ..._------
100
O
O O-------- ..._----- ------_...6 8
...------- _e. __12 16......._......- -------18 24
...----_ -- - -----24 32
..------- ------ --------30 40-------- ------- ------......36 48
..._------ ------- --------42 56
_..._----- ------- ----_..._-48 64--_...__ ...- --54 72...._---- -_Oo_----60 80
Este algoritmo satisface nuestrasnecesidades para el tiempo global, conuna pequeña adición, que entre cualesquiera dos eventos, el reloj debe marcar al menos una vez. Si un procesoenvía o recibe dos mensajes en seriemuy rápidamente, debe avanzar su reloj en (al menos) una marca entre ellos.
En ciertas situaciones existe un requisito adiCional: dos eventos no debenocurrir exactamente al mismo tiempo.Para lograr esto podemos asociar elnúmero del proceso en que ocurre elevento y el extremo inferior del tiempo, .separados por un punto decimal. Así, si
que tardó 10 marcas de reloj en hacerel viaje. El mensaje B, de 1 a 2, tarde 16marcas que, al igual que A, es un valorplausible.
El problema está en los mensajes Cy D, puesto que van de un valor mayora uno menor; estos valores sonimposibies y ésta es la situación que hay queevitar.
(e). Cuando el proceso 1sale de la región crrtica, selo dice al coordinador, el cualresponde, entonces, a 2.
ceso 2, que espera una respuesta. Otraaltemativa consiste en enviar una respuesta que diga ·permiso denegado".De cualquier manera, forma en una colala solicitud de 2, por el momento.
Cuando el proceso 1 sale de la región crítica, envía un mensaje al coordinador, para liberar su acceso exclusivo, Figura 3.3 (e). El coordinador extrae el primer elemento de la cola desolicitudes diferidas y envía a ese proceso un mensaje que otorga el permiso. Si el proceso estaba bloqueado (esdecir, éste es el primer mensaje que sele envía), elimina el bloqueo y entra enla región crítica.
Es fácil ver que el algoritmo garantiza la exclusión mutua: el coordinadorsólo deja que un proceso esté en cadaregión crítica a la vez. También es justo, puesto que las solicitudes se aprueban en el orden en que se reciben. Ningún proceso espera por siempre. Esteesquema también es fácil de implantarysólo requiere tres mensajes, por cadauso de una región crítica (solicitud, otorgamiento, liberación).
(b). El proceso 2 pide, entonces, permiso para entrar en la misma región crrtica.
EXCLUSION MUTUA: Algoritmo centralizado
3.2.1. Un algoritmo centralizado
La forma más directa de lograr la exclusión mutua, en un sistema distribuido, es simular la forma en que se lleva acabo en un sistema con un únicoprocesador. Se elige un proceso comoel coordinador; siempre que un procesodesea entrar en una región crítica envíaun mensaje de solicitud al coordinador,donde se indica la región crítica en laque desea entrar y pide permiso. Sí ningún otro proceso está por el momentoen esa región crítica, el coordinador envía una respuesta para el permiso. Figura 3.3 (a).
Cuando llega la respuesta, el proceso solicitante entra en la región crítica.Supongamos ahora que otro proceso,2, Figura 3.3 (b), pide permiso para entrar en Ja misma región crítica. El coordinador sabe que un proceso distinto yase encuentra en esta región, por lo queno puede otorgar el permiso. El métodoexacto utilizado para negar el permisodepende de la máquina. En la Figura 3.3(b) el coordinador s610 se abstiene deresponder, con lo cual se bloquea el pro-
Figura 3.3 (a). El proceso1 pide permiso al coordinador para entrar en unaregión crrtica. El permisoes concedido.
:==========================~141ICESI
DT3:05
3:05
(e) El demonio para el tiempo les dice a todas la forma de ajustar sus relojes.
sencillo consiste en promediar los valores de todas las demás máquinas.
Una ligera variación de este temaconsiste en descartar primero tos mvalores más grandes y los m valores máspequeños y promediar el resto. El hecho de descartar los valores extremosse puede considerar como autodefe~sa
contra m relojes fallidos que envlanmensajes sin sentido.
3.2. Exclusión mutuaLos sistemas con varios procesos se
programan más fácilmente mediante lasregiones críticas. Cuando un procesodebe leer o actualizar ciertas estructuras de datos compartidas, primero entra en una región crítica para lograr laexclusión mutua y garantizar que ningún otro proceso utilizará las estructuras de datos al mismo tiempo. Analizaremos algunos ejemplos de implantación de las regiones críticas y exclusión mutua en los sistemas distribuidos.
como la del demonio. Con estos números el demonio calcula el tiempo promedio y le dice a cada máquina cómoajustar su reloj (e).
3:25
(b). Las máquinas contestan.
140~=========================ICE"
Algoritmos con promedioEl método anterior es altamente cen
tralizado. Una clase de algoritmos de reloj descentralizada trabaja ~ara d~vidi~ eltiempo en intervalos de resl~cromzac~ó~de longitud fija. El j-ésimo Intervalo 101
cia en 10 + iRy va hasta 10 + (i + 1) Rdonde 10 es un momento ya acordadoen el pasado y R es un parámetro delsistema.Al inicio de cada intervalo, cadamáquina transmite el tiempo actual, según su reloj. Puesto que los relojes d~las diversas máquinas no corren precisamente a la misma velocidad, estastransmisiones no ocurrirán exactamente en forma simultánea.
Después de que una máquina transmite su hora, inicializa un cronómetro local, para reunir las demás transmisionesque lleguen en cierto intervalo S. cu~ndo llegan todas las transmisiones, se eJecuta un algoritmo para calcular una nueva hora para ellos. El algoritmo más
Figura 3.2 (a). El demoniopara el tiempo pregunta atodas las otras máquinaspor el valor de sus relojes.
En la Figura 3.2 (a), a las 3:00, eldemonio para el tiempo indica, a lasdemás máquinas, su hora y les pregunta las suyas. En (b), las máquinas responden, con la diferencia de sus horas
EL ALGORITMO DE BERKELEY
142-r=====================::::=ICESI
EXCLUSION MUTUA: Algorlbno distribuido
El poseedor delelemento puedeentrar en la regióncrítica o transferirel elemento.
o~K
o 0Entra a la regi6n
crItica
(e). Cuando se termina elproceso 0, envía un OK,por lo que 2 puede ahoraentrar en la región crítica.
(b). Un anillo lógico construidoen software.
Red
el anillo. Se transfiere del proceso k alproceso k +1 en mensajes puntuales.Cuando un proceso obtiene la ficha desu vecino, verifica si intenta entrar en unaregión crítica. En ese caso, el procesoentra en la región, hace todo el trabajonecesario y sale de la región. Despuésde salir, pasa la ficha a lo largo del anillo. No se permite entrar en una segunda región crítica con la misma ficha.
Si un proceso recibe la ficha de suvecino y no está interesado en entrar enuna región crítica, sólo la vuelve a pasar. En consecuencia, cuando ningunode los procesos desea entrar en una región crítica, las fichas sólo circulan a granvelocidad en el anillo.
(b). El proceso Otiene unamarca de tiempo menor, .por lo que gana.
Figura 3.5(a) Un grupono ordenadode procesosen una red.
3.2.3. Un algoritmo de anillode fichas (Token Rlng)
Este es un método completamentedistinto para lograr la exclusión mutuaen un sistema distribuido. Se tiene porejemplo una red basada en un bus, Figura 3.5 (a). En software se construyeun anillo lógico y a cada proceso se leasigna una posición en el anillo, Figura3.5 (b). Las posiciones en el anillo sepueden asignar en orden numérico delas direcciones de la red o mediante algún otro medio. Lo importante es quecada proceso sepa quién es el siguiente en la fila después de él.
Al iniciar el anillo, se le da al procesoO(cero) una ficha, la cual circula en todo
EXCLUSION MUTUA: Anillo de fichas (Token Ring)
8
80/~
0- @.:12
Figura 3.4(8). Dos procesos desean entrar en lamisma región crítica en elmismo momento.
::::=======================:-:143ICES'
nor, el receptor envía de regreso unmensaje OK Si su propio mensajetiene una marca menor, el receptorforma la solicitud en una cola y noenvía nada.
Después de enviar las solicitudes quepiden permiso para entrar en una regióncrítica, un proceso espera hasta que alguien más obtenga el permiso. Tan pronto llegan todos los permisos, puedenentrar en la región crítica. Cuando salede ella, envía mensajes OKa todos losprocesos en su cola y elimina a todoslos elementos de la cola.
En el ejemplo de la Figura 3.4 (a) semuestra qué sucede si dos procesosintentan entrar en la misma región crítica de manera simultánea. El proceso Oenvía, a todos, una solicitud con la marca de tiempo 8, mientras que al mismotiempo el proceso 2 envía, a todos, unasolicitud con la marca de tiempo 12. Elproceso 1 no se interesa en entrar en laregión crítica, por lo que envía OK aambos emisores. Los procesos Oy 2 venel conflicto y comparan las marcas. Elproceso 2 pierde y envía un OK a O. Elproceso Oentra en la región crítica, Figura 3.4 (b). Cuando termina, retira lasolicitud de 2 de la cola y envía un OKa2 y éste entra en la región crítica, Figura 3.4 (c).
Como en el caso del algoritmo centralizado, la exclusión mutua queda garantizada, sin bloqueo ni inanición. Elúnico punto de fallo es reemplazado porn puntos de fallo. Si cualquier procesofalla, no podrá responder a las solicitudes. Este silencio será interpretado (incorrectamente) como una negación delpermiso, con lo que se bloquearán lossiguientes intentos de los demás procesos para entrar en todas las regionescríticas.
Es posible mejorar un poco estealgoritmo. Por ejemplo, la obtención delpermiso de todos para entrar en unaregión crítica es realmente redundante.Todo lo que se necesita es un métodopara evitar que dos procesos entren enla misma región crítica al mismo tiempo.
El método centralizado también tiene limitaciones. El coordinador es unúnico punto de fallo, por lo que, si sedescompone, todo el sistema se puedevenir abajo. Si los procesos se bloquean,por lo general después de hacer unasolicitud, no pueden distinguir entre ·uncoordinador muerto" y un "permiso negado", puesto que en ambos casos noreciben una respuesta. Además, en unsistema de gran tamaño, un único coordinador puede convertirse en un cuellode botella para el desempeño.
3.2.2. Un algoritmo distribuidoRicart yAgrawala (1981 ) hicieron más
eficaz el artículo de Lamport (1978), relativo a la sincronización de los relo
'-',~s, que fue el primer algoritmo distribuido.
El algoritmo de Ricart y Agrawala requiere la existencia de un orden total detodos los eventos en el sistema; debeser claro cuál de ellos ocurrió primero,
Cuando un proceso desea entrar enuna región crítica, construye un mensaje con el nombre de ésta, su número deproceso y la hora actual. Entonces, envía el mensaje a todos los demás procesos y, de manera conceptual, a él mismo.
Cuando un proceso envía un mensaje de solicitud de otro proceso, la acción que realice depende de su estadocon respecto de la región crítica nombrada en el mensaje. Hay que distinguirtres casos:
1. Si el receptor no está en la regióncrítica y no desea entrar en ella, envía de regreso un mensaje OK alemisor.
2. Si el receptor ya está en la regióncrítica, no responde sino que formala solicitud en una cola.
3. Si el receptor desea entrar en la región crítica pero no lo ha logrado todavía, compara la marca de tiempoen el mensaje recibido con la marcacontenida en el mensaje que enviócada uno. La menor de las marcasgana. Si el mensaje recibido es me-I
I
i
!IIIli
144~=====================::::=ICESI
Elecciónf:\ Elección
\!!.-J~ ./Elección
X ¿ 0 (e). Ahora 5 y 6 hacen una elección.
gura 3.6 (b); el proceso 4 sabe que en gura 3.6 (d) el proceso 6 indica a 5 queeste momento ha terminado su trabajo. toma~á el control. Cuando está listo paraEn la Figura 3.6 (c), tanto 5 como 6 rea· a~umlr el control, el proceso 6 lo anun-lizan elecciones enviando mensajes a cla, para lo cual envía mensajes coordi-procesos mayores que ellos. En la Fi- nadara todos los procesos en ejecución.
ALGORITMOS DE ELECCION: Algoritmo del grandulón
088
00 00~
B_6n-0 ~OK-0Elección
r::~ "- OK~60'ecc;ón ~0 0) Vo0) .n"~~~':7,'~ .:..·······0 0)F~gura3.6 (a). Elproceso 4 hace una elec- (b). El proceso 5 y 6 responde e indica a 4ción. que se detenga.
(d). El proceso 6 indica a 5 que se detenga. (e). El proceso 6 gana y se lo informa a todos.
0880)08
:::======:::==:==:::==:==::~145ICESI
3.3.1. El algoritmo del grandulón
Diseñado por García-Molina (1982).Cuando un proceso observa que el coordinador ya no responde a las solicitudes, inicia una elección. Un proceso Prealiza una elección de la siguiente manera:
1. P envía un mensaje elección a losdemás procesos, con un número
. mayor.
2. Si nadie responde, P gana la elec·ción y se convierte en el coordinador.
3. Si uno de los procesos, con un número mayor, responde, toma el control. El trabajo de P termina.
En cualquier momento un procesopuede recibir un mensaje elección deuno de sus compañeros, con un número menor. Cuando esto sucede, el raceptor envía de regreso un mensaje DKal eniisor para indicar que está vivo yque tomará el control. El receptor realiza entonces una elección, a menos queya esté realizando alguna. En ciertomomento, todos los procesos se rinden,menos uno, el cual se convierte en elnuevo coordinador. Anuncia su victoriaal enviar un mensaje a todos los procesos para indicarles que, a partir de esemomento, es el nuevo coordinador.
Si un proceso inactivo se activa, realiza una elección. Si ocurre que es elproceso en ejecución, con el nÚmeromáximo, ganará la elección y tomarápara sí el trabajo del coordinador. Así,siempre gana el tipo más grande; de ahíel nombre.
En la Figura 3.6 vemos el funcionamiento de este algoritmo. El grupo cons·ta de ocho procesos, numerados de Oa17. El proceso 7 era el coordinador peroacaba de fallar. El proceso 4 lo nota yenvía mensajes elección a los procesosmayores que el 5, 6 Y 7, Figura 3.6 (a).Los procesos 5 Y 6 responden OK Fi·
3.3. Algoritmos de elección
Muchos de los algoritmos distribuidoSnecesitan que un proceso actúe comocoordinador, iniciador, secuenciador oque desempeñe, en cierta forma, algúnpapel especial. Si todos los procesosson idénticos, no existe forma de elegiruno de ellos como especial. En consecuencia, supondremos que cada proceso tiene un número único; por ejemplo,su dirección en la red. En general losalgoritmos de elección intentan localizarel proceso con el máximo número delproceso y designarlo como coordinador.
Además, también supondremos quecada proceso sabe el número del proceso de todos los demás; lo que sí desconoce es si los procesos están activoso inactivos. El objetivo de un algoritmode elección es garantizar que al iniciaruna elección, ésta concluya con elacuerdo de todos los procesos con respecto a la identidad del nuevo coordinador.
También este algoritmo tiene problemas. Si la ficha llega a perderse, debeser regenerada. De hecho es difícil detectar su pérdida, puesto que la cantidad de tiempo entre las apariciones sucesivas de la ficha en la red no está acotada. El hecho que la ficha no se hayaobservado durante una hora no significa su pérdida; tal vez alguien la está utilizando.
El algoritmo también tiene problemassi falla un proceso. Si pedimos un reco'nocimiento a cada proceso que recibala ficha, entonces se detectará un proceso muerto si su vecino intenta darlela ficha y fracasa en el intento. En esemomento el proceso muerto se puedeeliminar del grupo y el poseedor de laficha puede enviar ésta, por encima dela cabeza del proceso muerto, al siguiente miembro, o al siguiente después deéste, en caso necesario.
ALGORITMOS DE ELECCION: Algoritmo de anillo
Detección distribuida de bloqueos
Un algoritmo típico es el algoritmo deChandy-Misra-Haas. Este permite quelos procesos soliciten varios recursos(por ejemplo, cerraduras) al mismo tiempo, en vez de uno cada vez. Al permitirlas solicitudes simultáneas de varios procesos, la fase de crecimiento de unatransacción se puede realizar muchomás rápido. La consecuencia de estecambio al modelo es que un procesopuede esperar ahora a dos o más recursos en forma simultánea.
El algoritmo Chandy-Misra-Haas seutiliza cuando un proceso debe esperarcierto recurso.
Un algoritmo alternativo consiste enque cada proceso añada su identidad alfinal del mensaje de exploración, demodo que cuando regrese al emisor inicial se enliste todo el ciclo. El emisorpuede ver, entonces, cuál de los procesos tiene el número más grande yeliminarlo, o bien enviar un mensaje que lepidaque se elimine a sí mismo. De cualquier forma, si varios procesos descubren el mismo ciclo al mismo tiempo,todos elegirán la misma víctima.
3.4.2. Prevención distribuidade bloqueos
Consiste en el diseño cuidadoso delsistema, de modo que los bloqueos seanimposibles, desde el punto de vista estructural. Entre las distintas técnicas seincluye el permitir a los procesos quesólo conserven un recurso a la vez; exigir a los procesos que soliciten todos susrecursos desde un principio y hacer quetodos los procesos liberen todos susrecursos cuando soliciten uno nuevo.
En un sistema distribuido con tiempoglobal y transacciones atómicas sonposibles otros algoritmos prácticos.Ambos se basan en la idea de asociar,
3.4. Bloqueos en sistemasdistribuidos
Son más difíciles de evitar, prevenire incluso detectar, además de ser másdifíciles de curar cuando se les sigue lapista, puesto que toda la informaciónrelevante est,á dispersa en muchas máquinas.
Existen cuatro estrategias usualespara el manejo de los bloqueos:
1. El algoritmo del avestruz. (ignorar elproblema).
2. Detección (permitir que ocurran losbloqueos, detectarlos e intentar recuperarse de ellos).
3. Prevención (hacer que los bloqueossean imposibles desde el punto devista estructural).
4. Evitarlos (evítar los bloqueos me·diante la asignación cuidadosa delos recursos).
Las cuatro estrategias son aplicablesde manera potencial a los sistemas distribuidos. Nuestro análisis de los bloqueos de los sistemas distribuidos secentrará solamente en dos de las técnicas: detección y prevención.
3.4.1. Detección distribuidade bloqueos
.Detección centralizadade bloqueos
Aunque cada máquina mantiene lagráfica de recursos de sus propios procesos y recursos, un coordinador central mantiene la gráfica de recursos detodo el sistema (la unión de todas lasgráficas individuales). Cuando el coor·dinador detecta un ciclo, elimina uno delos procesos para romper el bloqueo.
A diferencia del caso centralizado,donde se dispone de toda la información de manera automática en el lugarcorrecto, en un sistema distribuido estainformación se debe enviar de maneraexplícita.
:=========================~147ICESI
propio número de proceso. ~n este pun:to el mensaje escrito cambia a COOrdl
nadory circula de nuevo, esta vez parainformar a todos los demás quién es elcoordinador (el miembro de la lista conel número máximo) y quiénes son losmiembros del nuevo anillo. Una vez hacirculado, el mensaje se elimina y todosse ponen a trabajar. En la Figura 3.7vemos qué ocurre si dos procesos, 2 y5, descubren simultáneamente que hafallado el coordinador, proceso 7. Cadauno construye un mensaje elección ycomienza a circularlo. En cierto momento ambos mensajes habrán dado la vuelta y ambos se convertirán en mensajescoordinador, con los mismos miembrosy en el mismo orden. Cuando han dad~
una vuelta completa, ambos serán ehminados.
IgI
El coordinador (:;\anterior ha fallado~
.........
.N~ hay respuest~'"
Figura 3.7(a) Algoritmo de elección mediante un anillo.
146~=========================ICE:'
3.3.2. Un algoritmo de anillo
Suponemos que los procesos tienenun orden, físico o lógico, de modo quecada proceso conoce a su sucesor.Cuando algún proceso observa que elcoordinador no funciona, construye unmensaje elección con su propio número de proceso y envía el mensaje ~ susucesor. Si éste está inactivo, el emisorpasa sobre el sucesor y va ha~ia ~I siguiente número del anillo o al sigUientede éste hasta localizar un proceso enejecuci6n. En cada paso el emisor añ.ade su propio número de proceso a la lista en el mensaje.
En cierto momento el mensaje regresa a los procesos que lo iniciaron. Eseproceso reconoce este evento cuandorecibe un mensaje de entrada con su
!!I11., !,11
1
'
Contador del programa
los sistemas operativos tradicionales,cada proceso tiene un espacio de direcciones y un único hilo de control (puedeser ésta una aproximada definición deun proceso); a pesar de que frecuentemente existan situaciones en donde sedesea tener varios hilos de control quecompartan el mismo espacio de direcciones, pero que se ejecuten de manera cuasi-paralela, como si fuesen procesos independientes (siendo su únicadiferencia que comparten el mismo espacio de direcciones).
En la Figura 4.1, parte (a), se tieneuna máquina con tres procesos. Cadauno de ellos posee su propio contadordel programa, su propia pila', su propioconjunto de registros y su propio espacio de direcciones. Los procesos no tienen ninguna relación entre sí; la únicamanera posible de comunicación seríamediante las primitivas de comunicaciónentre procesos del sistema, como lossemáforos, monitores o mensajes. Enla parte (b) se tiene otra máquina conun solo proceso, con la única diferenciaque éste tiene varios hilos de control,los cuales generalmente son llamadoshilos o procesos ligeros. En muchasocasiones se pueden considerar los hilos como unos miniprocesos. Cada hilose ejecuta de manera estrictamentesecuencial y tiene su propio contador delprograma y una pila para llevar un registro de su posición.
Proceso Hilos
Computadora
Figura 4.1 (a). Tres procesos con un hilo cada uno.
(b). Un proceso con tres hilos.
La Figura 3.9 (a) recibe el nombreDerecho de prioridad y la (b) se denomina espera. Este algoritmo se llamaherida-espera. Si un proceso antiguodesea un recurso mantenido por unojoven, el proceso antiguo ejerce su derecho de prioridad sobre el joven, Figura 3.9 (a). Es probable que el joven vuelva a iniciar su ejecución de manera inmediata, con lo que intentaría adquirirde nuevo el recurso; esto lleva a la si·tuación de la Figura 3.9 (b).
4. PROCESOS Y PROCESADORESEN SISTEMAS DISTRIBUIDOS
Aunque los procesos son un concepto muy importante en los sistemas deun procesador, se tratará de hacer énfasis en los aspectos del manejo de procesos que frecuentemente no son estudiados en el contexto de los sistemasoperativos clásicos.
En la mayoría de los sistemas distri·buidos se presenta la posibilidad de tener muchos hilos ("threads") de controldentro de un proceso, lo cual llevará atener ventajas significantes, pero tamobién se presentarán varios problemasque serán estudiados más adelante.
4.1. Hilos
Los hilos se inventaron para permitirla combinación del paralelismo con laejecución secuencial yel bloqueo de lasllamadas al sistema. En la mayoría de
:=========================~149ICESI
(b)
(b)
Muerte
en la cadena en forma descendente.
Aunque las dos opciones previenenlos bloqueos, es más sabio dar prioridad a los procesos más viejos. Se hanejecutado durante más tiempo, por loque el sistema ha invertido mucho enellos y es probable que conserven más
recursos.
En la Figura 3.8 (a), un proceso antiguo desea un recurso que mantiene unproceso joven; debemos permitir al proceso que continúe. En (b), un procesojoven desea un recurso que mantieneun proceso antiguo; en este caso, lodebemos eliminar. Este algoritmo sedenomina espera-muerte.
BLOQUEOS: Prevención distribuida
Conserva recursos Desea recursos Conserva recursos
(a)
(a)
Espera
Figura 3.8. Algoritmo espera-muerte para la prevención de bloqueos.
C rva recursos Desea recursos Conserva recursosDesea recursos onse
148~!!!!!!!!!!!!!!~~~~~~~::::==========:=::
Derecho Esperade prioridad
Figura 3.9. Algoritmo herida-muerte para la prevención de bloqueos.
a cada transacción, una marca de tiempo global al momento de su inicio.
La idea detrás de este algoritmo esque cuando un proceso está a punto debloquearse, en espera de un recurso queestá utilizando otro proceso, se verificacuál de ellos tiene la marca de tiempomayor (es decir, es más joven).
Podemos permitir, entonces, la espera s610 si el proceso en estado de espera tiene una marca inferior (más viejo)que el otro. Otra alternativa consiste enpermitir la espera de procesos sólo si elproceso que espera tiene una marcamayor (es más joven) que el otro proceso, en cuyo caso las marcas aparecen
Figura 4.2 Conceptos por hilo y por proceso
En la figura, parte (c), se ilustra elmodelo de entubamiento, en el cual elprimer hilo genera ciertos datos y lostransfiere al siguiente, para su procesamiento. Los datos pasan de hilo en hiloy, en cada etapa, se lleva a cabo ciertotipo de procesamiento. Esto puede llegar a ser una buena solución en problemas como el de productores y consumidores, pero no sería adecuado paraservidores de archivos. Los entubamientos se utilizan· ampliamente enmuchas áreas de los sistemas de cómputo, desde la estructura intema de laCPU RISC, hasta las líneas de comandos de UNIX.
(e)
L=::::::====:J.......-i~N:..=úcI=· eo
Figura 4-3. Tres organizaciones de hilos en un proceso.
Buzón~) (~
S/ague,--;========::::;-_-jC8clié
Uega una solicitudde trabajo r-----==,.........----,
Hilo del servidor
Hilo del trabajadorr--\------==~----f~
y dirá si se puede satisfacer esa solicitud.
En el modelo de equipo, parte (b),todos los hilos son iguales y cada unoobtiene y procesa sus propias solicitudes. Como se puede observar en la figura, no hay servidor, y a veces llegaun trabajo que un hilo no puede manejar, ya que cada hilo se especializa enmanejarcierto tipo de trabajo. Para estecaso, se puede manejar una cola de trabajo pendiente. Con este tipo de organización, un hilo debe verificar primerola cola de trabajo, antes de buscar en elbuzón del sistema.
:=========================~151ICESI
Elementos por proceso
de hilos en un proceso. En la parte (a)se muestra una primera organización enla que un hilo, el servidor, lee las solicitudes de trabajo en el buzón del sistema. Después de examinar la solicitud,él elige un hilo trabajador inactivo (bloqueado) y le envía la correspondientesolicitud, lo cual se realiza, con frecuencia, al escribir un apuntador el mensaje,en una palabra especial asociada a cadahilo, dando como resultado que el servidor despierte al trabajador dormido.Cuando el trabajador despierta, hace lacorrespondiente verificación por mediodel bloque Caché compartido, el cualpuede ser accesado por todos los hilos
Espacio de direcciónVariables globalesArchivos abiertosProcesos fijosCrohómetrosSeñalesSemáforos
Información contable.
procesos distintos; todos los hilos tienenel mismo espacio de direcciones, lo cualquiere decir que comparten las mismasvariables globales. Cada hilo puede tener acceso a cada dirección virtual, ypuede realizar las siguientes tareas: leer,escribir o limpiar de manera completa lapila de otro hilo. Como se puede observar, no existe ninguna protección entrelos hilos, ya que podría llegar a ser casiimposible y, en muchos casos, hastainnecesario.
Además de poseer el mismo espaciode direcciones, todos los hilos comparten el mismo conjunto de archivos abiertos, procesos hijos, cronómetros, seña·les, etc., como se ilustra en la Figura 4.2.
En los procesos tradicionales (procesos con único hijo) los hilos pueden tener uno de los siguientes estados: enejecución, bloqueado, listo o terminado.Un hilo en ejecución posee la CPU y seencuentra activo. Un hilo bloqueado espera que otro elimine el bloqueo (comoocurre en un semáforo). Un hilo listo estáprogramado para su ejecuCión, la cualla realizará cuando llegue su debido turno. y por último, un hilo terminado esaquél que ha hecho su salida pero quetodavía no es recogido por su padre.
En la Figura 4.3 se ilustra un ejemplode servidor de archivos, el cual muestralas diferentes formas de organizaciones
Efementos por hilo
Contador del prog.
Pila
Conj. de registros
Hilos de los hijos
Estado
Los hilos comparten la CPU de lamisma forma que lo realizan los procesos: primero se ejecuta un hilo y des~
pués otro (tiempo compartido).
Solamente teniendo un multiprocesador se podrían ejecutar realmenteen paralelo.
Otra característica de los hilos es queéstos pueden crear hilos hijos y se pueden bloquear en espera de que se terminen los llamados al sistema, al igualque en los procesos regulares. Mientras un hilo se encuentre bloqueado sepuede ejecutar otro hilo del mismo proceso (igualmente ocurre cuando se bloquea un proceso).
Claro está que los hilos no son tanindependientes como ocurre en los
150~::::::::::::::::=:=:::::::::ICESI
1,
I
152~=========================ICESI
Figura 4.64.2.2. El modelo de la pila
de procesadores
El método de la pila de procesadoresse ilustra en la Figura 4.7. Como se puede observar en el gráfico, en este modelo se les proporcionan terminales gráficas de alto rendimiento, denotadas enla figura con la letra X. Esta implementación se hace debido a que los usuarios desean tener una interface gráfica,de alta calidad y un buen desempeño.
La creación del modelo de la pila deprocesadores surge para complementar la idea de las estaciones de trabajosin disco. Como el sistema de archivosse concentra en un pequeño número deservidores, para economizar la escala,se tomó la idea de hacer lo mismo paralos servidores de computadoras. Teniendo como base lo anterior, se colocan
ceder a los sistemas de archivos deotras máquinas, lo cual da como resultado reducir el contacto con elmundo exterior, generando así pocacarga a la red, pero ocasionaría suprincipal desventaja, que será la deconvertirse en un sistema operativode red y no en un verdadero sistema distribuido.
Ventajas de las estacionesde trabajo
1. Los usuarios tienen una cantidad fijade poder de cómputo exclusivo, garantizando así su propio tiempo derespuesta.
2. Los programas gráficos sofisticadospueden ser muy rápidos, ya que pueden tener un rápido acceso a la pantalla.
3'. Cada usuario tiene un alto grado deautonomía y puede asignar sus recursos correspondientes como lojuzgue necesario.
4. Los discos locales hacen posible quelos trabajos continúen si el servidorde archivos llega a fallar.
co son: su fácil mantenimiento y su flexibilidad; por todo esto, la gran mayoríade estas estaciones se encuentra instalada en universidades y empresas.
Si la estación de trabajo tiene suspropios discos, podrán ser utilizados delas siguientes maneras:
1. Paginación y archivos temporales.
En este modelo los discos locales seutilizan exclusivamente para la paginación y los archivos temporalesno compartidos, que se puedan eliminar al final de la sesión.
2. Paginación, archivos temporales ybinarios del sistema.
Presenta las mismas característicasque el punto anterior, con la únicavariante que los discos locales también contienen los programas enbinario (ejecutables), tales comocompiladores, editores de texto ymanejadores de correo electrónico.Cuando se llama a alguno de estosprogramas, se le busca en el discolocal y no en el servidor de archivos,lo cual reduce la carga en la red.
3. Paginación, archivos temporaJes,binarios del sistema y ocultamientode archivos.
Este método consiste en utilizar, deforma explícita, los discos localescomo "cachés" (además de utilizarlos para la paginación, los archivostemporales y los binarios). Los usuarios pueden cargar los archivos desde los servidores de archivos hastasus propios discos; leerlos y escribiren elios, de manera local y despuésregresar los archivos modificados,reduciendo la carga en la red, almantener los archivos modificadosal final de la sesión.
4. Un sistema local de archivos completo.
En este caso cada máquina tiene supropio sistema de archivos autocon·tenido, con la gran posibilidad de ac-
:==========================~153ICESI
Servidorde archivos/ /
,--__,.yV
Estos dos modelos se basan en diferentes filosofías, en lo que concierne a unsistema distribuido.
4.2.1. El modelo de estaciónde trabajo
El modelo de estación de trabajo esun sistema que consta de estaciones detrabajo (computadoras personales dealta calidad), dispersas en un edificio oun lugar de trabajo y conectadas entresí por medio de una LAN de alta velocidad, como se ilustra en la Figura 4.6.
diante uno o varios servidores de archivos en la red. Las solicitudes de lecturao escritura serán enviadas a un servidor de archivos, el cual realizará el correspondiente trabajo y enviará de regreso las respuestas.
La popularidad de las estaciones detrabajo sin disco se debe a su precio, elcual es mucho más bajo que si se tuviese una estación equipada con un pequeño disco, razón por la cual se emplean uno odos servidores de archivoscon discos enormes y rápidos, a los cuales se tiene acceso mediante la LAN.Otras características que hacen populares a las estaciones de trabajo sin dis-
Pila deprocesadores
CPU ----
SISTEMA BASADO EN EL MODELO
DE LA PILA DE PROCESADORES
4.2. Modelos de sistemas
Como ya es sabido, los procesos seejecutan en procesadores; en un sistema tradicional sólo existe un únicoprocesador, mientras que un sistemadistribuido, dependiendo del aspecto deldiseño, puede tener varios procesadores. Los procesadores de un sistema distribuido se pueden organizar devarias formas. En este parágrafo se tendrán en cuenta los principales, comoson: el modelo de estación de trabajo yel modelo de pilas de procesadores.
Las estaciones de trabajo puedenestar ubicadas en diferentes partes,como en las oficinas de trabajo, dondecada una de ellas se dedica a un únicousuario; otras pueden estar en sitiospúblicos y tener distintos usuarios en eltranscurso del día. Es posible que enalgún instante de tiempo, ambas esta·ciones pueden tener un único usuarioconectado a ella y tener, entonces, un"poseedor" o no tenerlo (estar inactiva).
Existen dos clases de estaciones detrabajo: estaciones de trabajo sin discoo estaciones de trabajo con disco. Si lasestaciones carecen de disco, el sistemade archivos debe ser implantado me·
4.3.2. Aspectos del diseño dealgoritmos de asignaciónde procesadores
Las principales decisiones que debetomar un diseñador se pueden resumiren los siguientes aspectos:
1. Algoritmos determinísticos vs. Heurísticos. Los determinísticos son adecuados cuando se sabe de antemano todo aquello acerca de los procesos; se supone que se tiene unalista completa de todos los procesoso necesidades de cómputo, de archivos, de comunicación. Con estainformación sería posible hacer unaasignación perfecta. creando así unamejor asignación.
Los heurísticos son aquellos sistemas en donde la carga es totalmente impredecible. Las solicitudes detrabajo dependen de quien las estéhaciendo, y pueden variar de manera drástica cada hora. e incluso cadaminuto. La asignación de procesadores, en estos sistemas, utilizatécnicas ad hoc.
2. Algoritmos centralizados vs. Distribuidos. La recolección de la información, en un lugar, permite tomar unamejor decisión, pero coloca una máquina pesada en la máquina central.
sultar más complejas y tendrían un efecto fun~amental en el diseño del sistema.
El objetivo que tienen los algoritmosde asignación de procesos, en losprocesadores, es maximizar el uso dela CPU; es decir, maximizar el uso deciclos de CPU que se. ejecutan en beneficio de los trabajos del usuario porcada hora de tiempo real. Al tratar demaximizar el uso de la CPU, se trata deevitar todo el costo que se tiene por eltiempo inactivo de la CPU. Otro objetivoimportante es la minimización del tiempo promedio de respuesta.4.3. Asignación de procesadores
Como ya hemos mencionado anteriormente, un sistema distribuido consta de varios procesadores. Estos pueden organizarse como una colección deestaciones de trabajo personales, ocomo una pila pública de procesadoreso de alguna forma híbrida. No importacuál utilicemos, necesitaremos unalgoritmo para decidir qué proceso seva a ejecutar y en qué máquina. Esteparágrafo tendrá como principal objetivo estudiar los algoritmos que serán utilizados, para determinar qué proceso seasigna a un determinado procesador,dando como resultado una "asignaciónde procesadores".
4.3.1. Modelos de asignación
Las estrategias de asignación deprocesadores se pueden dividir en dosgrandes categorías. La primera. llamada no migratoria, al crearse un proceso,toma la decisión de dónde colocarlo.Una vez colocado el proc~so en unamáquina, permanece allí hasta que termine; no se puede mover, así existasobrecarga para la máquina o existanotras máquinas inactivas. La segundaes la de los algoritmos migratorios, endonde un proceso se puede trasladaraunque haya iniciado su ejecución. Lasestrategias migratorias permiten tenerun mejor balance de carga, pueden re-
puede llevar a cabo en las estacionesde trabajo, garantizando su respuesta.Este modelo hace que las estaciones inactivas no sean utilizadas, lo cual harámás sencillo el sistema yademás todoslos procesos no interactivos se ejecutan en la pila de procesadores, así comotodo el cómputo pesado en general.
La gran ventaja de este modelo esque proporciona una respuesta interactiva mucho más rápida, como tambiénun uso eficiente en los recursos y presenta un diseño sencillo.
:=========================~155ICESI
.. ' ..
-fo
Trabajo terminado
4.2.3. Un modelo hlbrldo
Este modelo es una combinación delos dos modelos anteriormente presentados, el cual combina las ventajas queposee cada uno, con la única diferencia de que resultaría mucho más costoso.
El modelo consiste en proporcionara cada usuario una estación de trabajopersonal y además tener una pila deprocesadores. El trabajo interactivo se
cuando éste se encuentre ocupado, losusuarios se forman para el servicio y seprocesan de acuerdo con su tumo, comose observa en la Figura 4.8.
radica en poder tener "estaciones de trabajo inactivas", a las que se puede tener acceso de manera dinámica. Losusuarios podrán obtener las CPU quesean necesarias, durante períodos cortos, y después regresai'las para queotros usuarios puedan disponer de ellas.
Cola de entrada
Usuarios
O
0--.L_L..L---l_L...L-l----.J--. Computadora
~Los usuarios generanun total de solicitudeslseg.
Una de las grandes aplicaciones dela pila de procesadores ocurre cuandovarios usuarios se encuentran trabajando en un gran proyecto de software, loscuales llevan a cabo grandes simulaciones, ejecutan grandes programas de inteligencia artificial, obteniendo un fácilmanejo y acceso al manejar una pila;mientras que el trabajar en estacionesde trabajo acarrearía enormes dificultades y no sería nada sencillo.
Figura 4.8. Un sistema básico con colas.
Figura 4.7 Red de estaciones de trabajo personal.
El poder de cómputo se ha centralizado como una pila de procesadores,debido a la teoría de colas, donde losusuarios generan, en forma aleatoria,solicitudes de trabajo a un servidor, y
todas las CPU en gabinetes de gran tamaño, dentro del cuarto de máquinas,reduciendo así los costos de energía ylos de empaquetamiento, con lo cual seproduce un mayor poder de cómputo poruna misma cantidad de dinero, comotambién se permite el uso de terminalesmás baratas. Todo el poder de cómputo
154~=========================ICES¡
I
'1
I:1
. I
l'I1
Figura 4.9 (a). Un emisor en búsqueda de una m~quina ina~tiva
(b). Un receptor en búsqueda de trabajo por realIzar
156.=========================:ICEsi
distribuido con un diseño adecuado losclientes no deben ser conscientes dela forma de implantar el sistema de archivos. En particular, no deben conocer el número de servidores de archivos, su posición o función. Todo lo quesaben es que, al llamar los procedimientos especificados en el servicio de archivos, el trabajo necesario se lleva acabo de alguna manera y se obtienenlos resultados solicitados. De hecho, losclientes ni siquiera deben darse por enterados de que el servicio de archivoses distribuido. Lo ideal es que se veacomo un sistema de archivos normal,de un único procesador.
Puesto que un servidor de archivoses un proceso del usuario que se ejecuta en una máquina, un sistema puede contener varios servidores de archivos, cada uno de los cuales ofrece unservicio de archivos distinto. De esa forma es posible que una terminal tengavarias ventanas y que en algunas deellas se ejecuten programas en UNIX yen otras programas en MS-DOS, sinque esto provoque conflictos.
Los diseñadores del sistema se encargan de que los servidores ofrezcanlos servicios de archivo específicos,como UNIX o MS-DOS. El tipo y el número de servicios de archivo disponibles puede cambiar con la evolución delsistema.
5.1. Diseño de los sistemasdistribuidos de archivos
En esta sección analizaremos lascaracterísticas de los sistemas distribuidos de archivos, desde el punto de vista del usuario.
Un sistema distribuido tiene dos componentes razonablemente distintos: elverdadero servicio de archivos y el servicio de directorios. El servicio de archivos se encarga de las operacionesen los archivos individuales, como lalectura, la escritura y la adición, en tan-
5. SISTEMAS DISTRIBUIDOSDE ARCHIVOS
El corazón de cualquier sistema distribuido es el sistema distribuido de archivos. Como en el caso de los sistemas con un único procesador, la tareadel sistema de archivos, en los sistemasdistribuidos, es almacenar los programas y los datos y tenerlos disponiblescuando sea necesario. En el caso de unsistema distribuido, es importante distinguir entre los conceptos de serviciode archivos y el servidor de archivos. Elservicio de archivos es la especificación de los servicios que el sistema ofrece a sus clientes. Describe las primitivas disponibles, los parámetros que utilizan y las acciones que llevan a cabo.
Para los clientes, el servicio de archivos define con precisión el serviciocon que pueden contar, pero no dicenada con respecto a su implantación. Dehecho el servicio de archivos especificala interfaz del sistema de archivos conlos clientes.
Por el contrario, undespachadordearchivos es un proceso que se ejecutaen alguna máquina y ayuda con la implantación del servicio de archivos. Unsistema puede tener uno o varios servidores de archivos, pero en un sistema
se ejecuta o no en la máquina que logenera; si esta máquina está muy ocupada, hay que transferir el nuevo proceso a otro lugar. Para el caso del algoritmolocal, se hace la verificación en la máquina, para ver si ésta se encuentra pordebajo de su nivel, para poder asignarel nuevo proceso; para el algoritmoglobal es mejor recolectar toda la información acerca de la carga, antes dedecidir si la máquina puede o no recibiral proceso.
Los algoritmos locales son sencillos,pero no óptimos, mientras que losglobales sólo dan un resultado mejorpero a un costo mayor.
:=========================~ 157
ICESI
1Estoy aburrido.
¿Necesitasayuda?
Iniciados por el receptor. También esllamado política de localización. Después de que la política de transferencia ha decidido deshacerse de unproceso, la politica de localizacióndebe decidir dónde enviarlo. Estapolítica no puede ser local, debido aque se necesita información de lacarga, en todas partes, para teneruna óptima decisión: sin embargo,esta información se puede dispersarde dos formas; en la primera, losemisores son quienes inician el intercambio de información y, en la segunda, es el receptor el que toma lainiciativa.
A continuación, en la Figura 4.9,mencionaremos un ejemplo sencillopara denotar el anterior caso:
bajo y está preparada para más. Su principal objetivo es localizar una máquinadispuesta a darle trabajo.
5. Algoritmos locales vs. Globales.Este aspecto se relaciona con lo quese denomina polftica de transferencia.Debido a que cuando se está a puntode generar un proceso, hay que tomaruna decisión para ver si dicho proceso
La máquina avisade su disponibilidad.
(b)
No tengo nadaquehacer.
Estoycargado.
OOG000
La maquina decide quetiene mucho trabajo.
_L-------'
En la parte (a) se ilustra una máquina sobrecargada, la cual envía una solicitud de ayuda a las demás máquinaspara que descarguen el nuevo procesoen otra. En este caso, el emisor es quientoma la iniciativa, para localizar más ciclos de la CPU.
En la parte (b), una máquina inactiva o sobrecargada que tiene poco tra-
¿Serían tan amablesde llevarseun proceso?
(a)
El hecho de ser centralizado, en vezde maximizar el uso de la CPU, busca darle a cada procesador, de unaestación de trabajo, una parte justadel poder de cómputo.
3. Algoritmos óptimos vs. Subóptimos.Se pueden obtener soluciones óptimas tanto en los sistemas centralizados como en los descentralizados,pero, por regla general, son máscaras que las subóptimas, pues hayque recolectar más información yprocesarla un poco más. En la vidareal, la mayoría de los sistemas distribuidos buscan soluciones subóptimas, heurísticas y distribuidas,debido a la dificultad para obtenerlas óptimas.
4. Algoritmos iniciados por el emisor vs.
1
I
'1
1
.
111
1
'1
1
;1
li1I
1
II
1,1il
158~=============::====::::::::ICES;
Archivoanterior.
Archivonuevo.
Los archivospermanecen en
el servidor.
Servidor
ITIIJ
Servidor
través de un archivo, examinar ymodificar los atributos de un archivo, etc.
Mientras que en el modelo carga/descarga el servicio de archivos sólo proporciona el almacenamiento físico y latransferencia, en este caso el sistemade archivos se ejecuta en los servidores y no en los clientes. Su ventaja consiste en quena necesita mucho espacio por parte de los clientes, a la vez queelimina la necesidad de transferir archivos completos cuando sólo se necesitauna parte de ellos.
Solicitudes delcliente para tener
acceso a unarchivo remoto.
1. Archivo de trasladoal cliente.
Figura 5.2. El modelo de acceso remoto.
Cliente
2. Los accesos se llevan .3. Cuando el clientea cabo en el cliente. termina, el archivo
regresa al servidor.
Figura 5.1. El modelo carga/descarga.
Cliente
La ventaja de este modelo es la sencillez del concepto. Los programas deaplicación buscan los archivos que necesiten y después los utilizan de manera local. Los archivos modificados o nuevos se escriben, de regreso, al terminarel programa.
El otro tipo de servicio de archivoses el modelo de acceso remoto. Eneste modelo, el servicio de archivos proporciona un gran número de operaciones para abrir y cerrar archivos, leer yescribir partes de archivos, moverse a
:=======::::=::=:::::=::=::=159,ICESI
normal es que si se puedan modificar,pero en algunos sistemas distribuidos,las únicas operaciones de archivo sonCREATE y READ. Una vez creado unarchivo, éste no podrá ser modificado, yse dice que este archivo es inmutable.
La protección en los sistemas distribuidos utiliza, en esencia, las mismastécnicas de los sistemas con un únicoprocesador: posibilidades y listas paracontrol de acceso. En el caso de lasposibilidades, cada usuario tiene un cierto tipo de boleto, llamado posibilidad,para cada objeto al que tiene acceso.La posibilidad determina los tipos deacceso permitidos.
Todos los esquemas de lista paracontrol de acceso le asocian a cadaarchivo una lista implícita o explícita delos usuarios que pueden tener accesoal archivo y los tipos de acceso permitidos para cada uno de ellos.
El esquema de UNIX es una lista paracontrol de acceso, simplificada con bitsque controlan la lectura, la escritura y laejecución de cada archivo, en forma indepen'diente para el propietario, el gru·po de propietarios, y todas las demáspersonas.
Los servicios de archivos se puedendividir en dos tipos: la dosificación depende de si soportan un modelo carga/descarga o un modelo de accesoremoto. En el modelo de carga/descarga, el servicio de archivo sólo proporciona dos operaciones principales: lalectura de un archivo y la escritura enun archivo.
La operación de lectura transfieretodo un archivo, de uno de los servidores de archivo, al cliente solicitante.
La operación de escritura transfieretodo un archivo, en sentido contrario; delcliente al servidor. Así, el modelo conceptual es el traslado de archivos completos, en alguna de las direcciones. Losarchivos se pueden almacenar en lamemoria o en un disco local.
to que el servicio de directorios se encarga de crear y manejar directorios,añadir y eliminar archivos de los directorios, etc.
5.1.1. La interfaz del serviciode archivos
En muchos sistemas, como UNIX yMS-OOS, un archivo es una secuenciade bits sin interpretación alguna. El significado y la estructura de la informaciónen los archivos queda a cargo de losprogramas de aplicación; esto es irrelevante para el sistema operativo.
Sin embargo, en los "mainframes"existen muchos tipos de archivos, cadauno con distintas propiedades. Por ejemplo, un archivo se puede estructurarcomo una serie de registros, con llamadas al sistema operativo, para leer oescribir en un registro particular.
Por lo general se puede especificarel registro mediante su número o el valor de cierto campo. En el segundo caso,el sistema operativo mantiene el archivo como un árbol B o alguna otra estructura de datos adecuada, o bien utiliza tablas de dispersión, para localizarcon rapidez los registros.
Debido a que la mayoría de los sistemas distribuidos son planeados paraambientes UNIX o MS-DOS, la mayoríade los servidores de archivos soporta elconcepto de archivo, como una secuencia de bits, en vez, de una secuenciade registros con cierta clave. Los archivos pueden tener atributos, que sonpartes de información relativas al archivo, pero que no son parte del archivopropiamente dicho. Los atributos típicosson el propietario, el tamaño, la fechade creación y el permiso de acceso.
Por lo general, el servicio de archivos proporciona primitivas para leer yescribir alguno de los atributos.
Otro aspecto importante del modelode archivo es si los archivos se puedenmodificar después de su creación. Lo
e
Contador del númerode directorios que
apuntan a estedirectorio.
Máquina 2: O, E.
Máquina 1: A, B, C.
A
derecha de cada directorio de la figura,~e pue1e determinarsi el enlace por eliminar es el último. Después de eliminarel enlace de A a a, el contador de referencias de a se reduce de 2 al, lo cualestá bien sobre el papel. Sin embargo,ahora no es posible llegar a a desde laraíz del sistema de archivos (A). Los tresdirectores a, o y Ey todos sus archivosse convierten en huérfanos.
2
B
tiene un enlace con el directorio a. Elproblema aparece cuando se elimina elenlace de A a a. En una jerarquía conestructura de árbol sólo se puede eliminar un enlace con un directorio, si el directorio al cual apunta es vaeío. En unagráfica se permite la eliminación de unenlace mientras exista al menos otro.Mediante un contador de referencias, elcual se muestra en la esquina superior
A
identifica el tipo de éste. Otros sistemasutilizan un atributo explícito para este fin,en vez de utilizar una extensión dentrodel nombre.
Todos los sistemas distribuidos permiten que los directorios contengansubdirectorios, para que los usuariospuedan agrupar los archivos relacionados entre sí. De acuerdo con esto, sedispone de operaciones para la creacióny eliminación de directorios, así comopara introducir, eliminar y buscar archivos en ellos. También, los subdirectoriospueden contener sus propios subdirectorios y así sucesivamente, lo queconduce a un árbol de directorios, el cuales conOCido como sistema jerárquicode archivos. La Figura 5.3 muestra unárbol de cinco directorios:
5.1.2. La interfaz del servidorde directorios
La otra parte del servicio de archivoses el servicio de directorios, el cual proporciona las operaciones para crear yeliminar directorios, nombrar o cambiarel nombre de los archivos y mover éstos de un directorio a otro.
El servicio de directorios define unalfabeto y una sintaxis para formar losnombres de archivos y directorios. Locomún es que los nombres de archivostengan de y hasta cierto número máximo de letras, números y ciertos caracteres especiales. Algunos sistemas dividen los nombres de archivo en dospartes, usualmente separadas mediante un punto. La segunda parte del nombre, llamada la extensión del archivo,
B e D E
Figura 5.3. Un árbol de directorios contenido en una máquina.
160~==========================:ICESt
Figura 5.4. Una gráfica de directorios en dos máquinas.
Otro aspecto fundamental, en el diseño de cualquier sistema distribuidode archivos, es si todas las máquinas yprocesos deben tener la misma visiónde la jerarquía de los directorios.
5. 1.2. 1. Nombres de los archivosy directorios
Existen tres métodos usuales paranombrar los archivos y directorios enun sistema distribuido:1. Nombre de la máquina + ruta de ac
ceso, como /máquina/ruta o máquina:ruta.
2. Montaje de sistemas de archivosremotos en la jerarquía local de archivos.
Este problema también existe en lossistemas centralizados, pero es másserio en los distribuidos. Si todo está enuna máquina, es posible descubrir losdirectorios huérfanos, puesto que todala información está en un solo lugar. Sepuede detener toda la actividad de losarchivos y recorrer la gráfica desde laraíz, para señalar todos los directoriosalcanzables. Al final de este proceso, sesabe que todos los directorios no marcados son inalcanzables. En un sistema distribuido existen varias máquinasyno se puede detener toda la actividad,por lo que es supremamente difícil tomar una foto instantánea.
:=========================~161ICESI
árboles y gráficas es de particular importancia en un sistema distribuido.
La naturaleza de la dificultad se puede apreciar más claramente en la Figura 5.4. En esta gráfica, el directorio O
E
En ciertos sistemas es posible c.rearenlaces o apuntadores hacia un directorio arbitrario. Estos se pueden colocar en cualquier directorio, lo que permite construir no sólo árboles sino gráficas arbitrarias de directorios, las cualesson más poderosas. La distinción entre
D
162-:-=====================::::::ICESI
1. Se lee 'b'
CLIENTE 1
Escribe 'c'
de UNIX, excepto por un problema menor: los retrasos en la red pueden hacerque un READ, ocurrido un microsegundo después de un WRITE, llegueprimero al servidor y que obtenga el valor anterior.
Un método completamente distinto dela semántica de los archivos compartidos, en un sistema distribuido, es quetodos los archivos sean inmutables. Asíno existe forma de abrir un archivo paraescribir en él. En efecto, las únicas operaciones en los archivos son CREATE yREAD. No existen actualizaciones; esmás fácil compartir y replicar.
Una cuarta vfa para enfrentar el usode los archivos compartidos en un sistema distribuido es usar las transaccionesatómicas. Para tener acceso a un archi·va o grupo de archivos, un proceso
1. Escribe 'c'
(a)
Se lee 'abe'
UNICO PROCESADOR
Figura 5.5 (a). En un solo procesador, cuando una READ va después de un WRITE.el valor regresado por READ es el valor recién escrito.
(b) En un sistema distribuido con ocultamiento, el valor regresado puedeser obsoleto.
El segundo método se llama semántica de sesión, el cual se caracteriza porque ningún cambio es visible aotros procesos, hasta que el archivo secierra; en vez de pedir que un READvea los efectos de todos los WRITE anteriores, uno puede tener una nueva regia que diga: "Los cambios a un archivo abierto sólo pueden ser vistos en unprincipio por el proceso (o la máquina)que modificó el archivo. Los cambiosserán visibles a los demás procesos (omáquinas) sólo cuando se cierre el archivo".
exista un servidor de archivos y los clientes no oculten los archivos. Todas lasinstrucciones READ yWRITE pasan enforma directa al servidor de archivos,que los procesa en forma secuencial.Este método proporciona la semántica
:::========================r:163ICESI
trar el nombre binario. El propio enlacesimbólico es sólo el nombre de una rutade acceso.
Otra idea más es utilizar las posibilidades como los nombres binarios. Eneste métddo, la búsqueda de un nombre en ASCII produce una posibilidad,la cual puede tomar varias formas. Unúltimo método, que a veces está presente en un sistema distribuido pero casinunca en uno centralizado, es la posibilidad de buscar un nombre en ASCII yobtener no uno sino varios nombresbinarios. Por lo general, éstos representan al archivo original y todos sus respaldos.
5.1 .3. Semántica de los archivoscompartidos
Si dos o más usuarios comparten elmismo archivo, es necesario definir conprecisión la semántica de la lectura y laescritura para evitar problemas.
Existen cuatro maneras de compartir archivos en un sistema distribuido. Laprimera que analizaremos es conocidacomo semántica de UNIX y consiste enque cada operación en un archivo esvisible a todos los procesos de manerainstantánea. En los sistemas con unúnico procesador que permiten a losprocesos compartir archivos, comoUNIX, la semántica establece que si unaoperación READ sigue después de unaoperación WRITE, READ regresa el valor recién escrito. De manera análoga,cuando dos WRITE se realizan en seriey después se ejecuta un READ, el valorque se lee es el almacenado en la última escritura. De hecho, el sistema impone en todas las operaciones un orden absoluto con respecto del tiempo ysiempre regresa el valor más reciente.En un sistema con un único procesador,esto es muy fácil de comprender y tieneuna implantación directa. En un sistema distribuido, la semántica de UNIX sepuede lograr fácilmente, mientras sólo
5.1.2.2. Nombres de dos niveles
La mayoría de los sistemas distribuidos utiliza cierta forma de nombres condos niveles. Los archivos tienen nombres simbólicos para el uso de las personas, pero también pueden tener nombres binarios internos para uso del propio sistema. Lo que los directorios hacen, en realidad, es proporcionar unaasociación entre estos dos nombres.Para las personas y los programas, esconveniente utilizar nombres simbólicos,pero para el uso dentro del propio sistema, estos nombres son demasiado grandes y difíciles. Así, cuando un usuarioabre un archivo o hace referencia a unnombre-simbólico, el sistema busca deinmediato el nombre simbólico, en el directorio apropiado, para obtener el nombre binario, el cual utilizará para localizar realmente el archivo. A veces losnombres binarios son visibles a los usuarios y a veces no.
Un esquema más general para losnombres es que el nombre binario indique el servidor y un archivo específicoen ese servidor. Este método permiteque un directorio en un servidor contenga un archivo en un servidor distinto.
Otra altemativa, que a veces es preferible, es utilizar un enlace simbólico,el cual es una entrada de directorio asociada a una cadena (servidor, nombrede archivo), la cual se puede buscar enel servidor correspondiente para encon-
3. Un único espacio de nombres quetenga la misma apariencia en tod~
las máquinas.
Los primeros dos son fáciles de implantar, especialmente como una formade conectar sistemas ya existentes, queno estaban diseñados para su uso distribuido. El tercer método es difícil y requiere de un diseño cuidadoso, pero esnecesario si se quiere lograr el objetivode que el sistema distribuido actúe comouna única computadora.
¡i,
164~===============::::=======ICES,
:::========================~165ICESI
El aspecto estructural final por considerar es si los servidores de archivos,directorios o de otro tipo deben contener la información sobre el estado de losclientes. Este aspecto tiene una controversia moderada, donde existen dosescuelas de pensamiento en competencia. Una escuela piensa que los servidores no deben contener los estados,es decir, "ser sin estado". En otras palabras, cuando un cliente envía una solicitud a un servidor, éste la lleva a cabo,envía la respuesta y elimina de sus tablas internas toda la información relativa a dicha solicitud. El servidor no guarda información alguna relativa a losclientes entre las solicitudes. La otraescuela de pensamiento sostiene quees correcto que los servidores conserven la información de estado de los client~s entre las solicitudes.
En el caso de un servidor sin estado,cada solicitud debe estar autocontenida.Debe contener todo el nombre del archivo y el ajuste dentro de éste, paraque el servidor pueda realizar el trabajo. Esta información aumenta la longitud del mensaje.
Otra forma de ver la información deestado es considerar lo que ocurre si unservidor falla y todas sus tablas se pierden de manera irremediable. Al volvera arrancar el servidor, éste ya no tieneidea de la relación entre los clientes ylos archivos abiertos por éstos. Fracasarán entonces los intentos posteriorespor leer y escribir en archivos abiertos yla recuperación, entonces, queda a cargo totalmente de los clientes. En consecuencia, los servidores sin estado tienden a ser más tolerantes a los fallos quelos que mantienen los estados, lo cuales un argumento a favor de los primeros.
En general, las ventajas de los servidores sin estado son: tolerancia a lasfallas; no necesita llamadas openlclose;no se desperdicia el espacio del servi-
dos, de modo que otras máquinas tengan acceso a ellos. En otros sistemasel servidor de archivos y el de directorios sólo son programas del usuario,_ porlo que se puede configurar un sistemapara que ejecute o no el software, delcliente o del servidor, en la misma máquina, como se desee. Y en el otro extremo, están los sistemas donde losclientes y los servidores son máquinasesencialmente distintas, ya sea en términos de hardware o de software. Losservidores y clientes pueden ejecutarincluso versiones diferentes del sistemaoperativo. Aunque la separación de funciones es un poco más transparente, noexiste una razón fundamental para preferir un método por encima de los demás.
Un segundo aspecto de la implantación, en donde difieren los sistemas, esla forma de estructurar el servicio a archivos y directorios. Una forma de organización consiste en combinar ambos enun único servidor, que maneje todas lasllamadas a directorios y archivos. Sinembargo, la otra posibilidad es separarlos. En este caso, la apertura de un ar- .chivo exige ir hasta el servidor de directorios, para asociar su nombre simbólico con el nombre binario, y después irhasta el servidor de archivos, con elnombre en binario y llevar a cabo la lectura o escritura real del archivo.
El argumento en favor de la separación es que las dos funciones no tienenuna relación real entre sí, por lo que esmás flexible mantenerlas separadas. Porejemplo, se puede implantar un servidor de directorios en MS-DOS y otroservidor de directorios en UNIX, dondeambos utilicen el mismo servidor de archivos para el almacenamiento físico.También es probable que la separaciónde funciones produzca un software mássencillo. Un contraargumento es que elhecho de contar con dos servidores requiere de una mayor comunicación.
un patrón común es crear un archivo,leerlo y después eliminarlo.
El hecho que unos cuantos archivosse compartan, argumenta en favor delocultamiento por parte del cliente. Comoya se ha visto, el ocultamiento complicala semántica, pero si es raro el uso delos archivos compartidos, podría sermejor el ocultamiento por parte del cliente y aceptar las consecuencias de lasemántica de sesión en favor de unmejor desempeño.
Para terminar, la existencia de distintas clases de archivos sugiere que, talvez, se deberían utilizar mecanismosdiferentes para el manejo de las distintas clases. Los binarios del sistema necesitan estar presentes en diferentespartes, pero es raro que se modifiquen,por lo que tal vez se podrían duplicar envarias partes, aun cuando esto implicauna actualización ocasional compleja.
Los compiladores y los archivos temporales son cortos, no compartidos ydesaparecen con rapidez, por lo quedeben mantener su carácter local mientras sea posible. Los buzones electrónicos se actualizan con frecuencia, peroes raro que se compartan, por lo que suduplicación no sirve de mucho.
5.2.2. Estructura del sistema
En esta sección analizaremos algunas de las formas de organización interna de los servidores de archivos ydirectorios, con atención especial a losmétodos alternativos. Comenzaremoscon una sencilla pregunta:"¿Son distintos los clientes y los servidores?"
En ciertos sistemas no existe distinción alguna entre un cliente y un servidor. Todas las máquinas ejecutan el mismo software básico, de manera que unamáquina que desee dar servicio de archivos al público en general es libre dehacerlo. Este ofrecimiento del serviciode archivos consiste sólo en exportar losnombres de los directorios selecciona-
5.2.1. Uso de archivosSatyanarayanan (1981) hizo un am
plio estudio sobre los patrones de usode los archivos. Vamos a presentar, acontinuación, las principales conclusiones de este estudio. Para comenzar, lamayoría de los archivos está por debajode los 10K; esta observación sugiere lafactibilidad de la transferencia· de archivos completos, en vez de bloques dedisco, entre el servidor y el cliente. Puesto que la transferencia de archivos completos es más sencilla y eficiente, estaidea debe tomarse en cuenta. Por supuesto, algunos archivos son de grantamaño, por lo que también se debentomar medidas preventivas con respecto a éstos.
Una observación interesante es quela mayoría de los archivos tiene tiempos de vida cortos. En otras palabras,
5:2. Implantación de un sistemadistribuido de archivos
En la sección anterior describimosvarios aspectos de los sistemas distribuidos de archivos desde el punto devista del usuario. En esta sección veremos la forma en que se implantan dichos sistemas.
ejecuta en primer lugar cierto tipo de primitiva BEGINTRANSACTION, para señalar que lo que sigue debe ejecutarsede manera indivisible. Después vienenlas llamadas al sistema para leer o escribir en uno o más archivos. Al terminar el trabajo, se ejecuta una primitivaENDTRANSACTION. La propiedad fundamental de este método es que el sistema garantiza que todas las llamadascontenidas dentro de la transacción sellevarán a cabo en orden, sin interferencias de otras transacciones concurrentes. Si dos o más transacciones se realizan al mismo tiempo, el sistema garantiza que el resultado final es el mismoque si se ~jecutasen en cierto ordensecuencial (indeterminado).
REDFigura 5.6. Cuatro lugares para guardar archivos o partes de ellos.
3. Repartir la carga de trabajo entrevarios servidores. Al crecer el tamaño del sistema, el hecho de tenertodos los archivos en un únicoprocesador se puede convertir en uncuello de botella. Con varios archivos duplicados en dos o más servidores, se puede utilizar el que tengamenos carga.
Las dos primeras se relacionan conel mejoramiento de la confiabilidad y ladisponibilidad; la tercera se refiere aldesempeño.
Existen tres formas de llevar a cabola réplica: la réplica explícita de archivos, la réplica retrasada de archivos yla réplica de archivos mediante un grupo.
CONCLUSIONES
- los Sistemas Distribuídos son la tecnología que se va a imponer en elmundo, debido a ta economía quese alcanza con su implantación enlas grandes organizaciones.
No existen todavía aplicaciones distribuidas para los pocos sistemasoperativos que tratan de manejar ladistribución, como Windows NT.
La diferencia más importante entreun Sistema Distribuido y un sistemade un único procesador es la comunicación entre procesos.
Para la organización de los procesadores se pueden tener en cuenta dos modelos básicos: el modelode estación de trabajo yel de la pilade procesadores. Las ventajas quepresenta cada uno son muy impor·tantes, ya que le permiten tener acada usuario su propia estación detrabajo y aprovechar las estacionesde trabajo inactivas para ejecutarprocesos; en las pilas de procesadores, todas las instalacionesson un recurso compartido que puede ser usado dependiendo de lasnecesidades de cada usuario.
El segundo es que el algoritmo debedecidir qué hacer si se utiliza toda lacapacidad del caché y hay que eliminara alguien. Aquí se puede utilizar cualquiera de los algoritmos comunes deocultamiento, pero como las referenciasal caché son poco frecuentes, comparadas con las referencias a la memoria,por lo general es factible una implantación exacta de LRU mediante listas ligadas: Cuando hay que eliminar a alguien de la memoria, se elige al másantiguo. Si existe una copia actualizada en el disco, simplemente se descarta la copia del caché. En caso contrario, primero se actualiza el disco.
El mantenimiento de un caché en lamemoria principal del servidor es fácilde lograr y es totalmente transparentea los clientes. Puesto que el servidorpuede mantener sincronizadas sus copias en memoria y en disco, desde elpunto de vista de los clientes sólo existe una copia de cada archivo, por lo queno hay problemas de consistencia.
5.2.4. Réplica
Con frecuencia Jos sistemas distribuidos de archivos proporcionan la réplicade archivos como servicio a sus clientes. En otras palabras, se dispone devarias copias de algunos archivos, donde cada copia está en un servidor dearchivos independiente. Las principalesrazones para la existencia de tal servicio son:
1. Aumentar la confiabilidad al disponer de respaldos independientes decada archivo. Si un servidor lalla ose pierde en forma permanente, nose pierden los datos.
2. Permitir el acceso a un archivo, auncuando falle un servidor de archivos.El fallo de un servidor no debe hacer que todo el sistema se detengahasta cuando aquél se pueda volver a arrancar.
.~.
, ., .l¡
. ,!
··f
1
Disco delservidor
2
Memoriaprincipal
del servidor
Este algoritmo debe resolver dos problemas. El primero es el de la unidadque maneja el caché. Puede manejararchivos completos o bloques del disco. Si se ocultan los archivos completos, éstos se pueden almacenar en forma adyacente en el disco, lo cual permite transferencias a alta velocidad entre la memoria y el disco, así como unbuen desempeño en general. Sin embargo, el ocultamiento de bloques dedisco utiliza el caché y el espacio en disco en forma más eficiente.
cliente o la memoria principal del cliente, como se muestra en la Figura 5.6.
El lugar más directo para almacenartodos los archivos es el disco del servidor. Ahí existe mucho espacio y los archivos serían accesibles a todos losclientes.Además, con sólo una copia decada archivo no surgen problemas deconsistencia.
El problema con el uso del disco delservidor es el desempeño.Antes de queun cliente pueda leer un archivo, éstedebe ser transferido primero del discodel servidor a la memoria principal delservidor y luego, a través de la red, a lamemoria principal del cliente. Ambastransferencias tardan cierto tiempo.
4
Disco delcliente
(oP9ional)
......1.. ......
...........................-......
3
Memoriaprincipal
del cliente
Se puede lograr un desempeño mucho mejor si se ocultan (es decir, se con·servan) los archivos de más reciente usoen la memoria principal del servidor. Uncliente que lea un archivo ya presenteen el caché del servidor elimina la transferencia del disco, aunque se deba rea·lizar la transferencia a la red.
Puesto que la memoria principalsiempre es menor que el disco, se necesita un algoritmo para determinar losarchivos o partes de archivos que deben permanecer en el c~ché.
5.2.3. Ocultamiento
En un sistema cliente-servidor, cadauno con su memoria principal, y un disco, existen cuatro lugares donde se pueden almacenar los archivos o partes dearchivos: el disco del servidor, la memoria principal del servidor, el disco del
dor en las tablas; no existe Irmite parael número de archivos abiertos y no hayproblemas si un cliente falla. Las ventajas de los servidores con estado consisten en un mejor desempeño, los mensajes de solicitud más cortos, es posible la lectura adelantada, es más fácil laidempotencia y es posible la cerradurade archivos.
166~=========================:/CESJ :========================~167ICESI
LA ULTIMA LECCIÓN*
ALFONSO aCAMPO LONDOÑORector del ICESI
DISCURSO DE GRADOPromoción DecimosegundaCali, 11 de febrero de 1995
llegar a esta importante etapa de susvidas. Esta deuda la deben pagar creando riqueza en Colombia y participandoen la mejoría de sus condiciones decompetitividad en un mundo que se haglobalizado o intemacionalizado y en elcual la competencia no va a ser sólo enproductos, sino en la calidad del talentohumano que se tiene y que es nuestratarea. Por ello, en este acto, en un punto especial y muy emotivo, los graduandos le hacen un homenaje de gratitud a sus padres, cónyuges y amigos,que los han ayudado.
En el mundo de hoy, lo que se considera la mayor riqueza es el conocimiento y la información y por lo tanto la formación del ser humano, es la tarea másimportante para hacer. Las riquezasnaturales contribuyen al bienestar, solamente si hay un equipo humano quelas sepa aprovechar, para que sus beneficios se extiendan a todos y no sóloa unos pocos. Lo que debe importar esel beneficio para la totalidad de la comunidad y no el aprovechar todo, sólo
Volvemos hoy con gran alegría, peroal mismo tiempo con nostalgia, a graduar a 154 de nuestros alumnos, 95 enPregrado en Administración de Empresas e Ingeniería de Sistemas e Informática y 59 de Postgrado, y entre éstosla primera promoción de la especialización en Ingeniería del Software. Conellos ya conformamos un cuerpo decerca de 3.000 egresados que hemosentregado a la sociedad, a las empresas, a sus compañías familiares y laspropias.
Hemos, desde que ustedes iniciaronsus estudios, recalcado que es un granprivilegio llegar a una Universidad, yaque sólo dos de cada cien que inicianla primaria lo logran y es aún mayor privilegio el de hacer formación avanzadao de postgrado. Se tiene, pues, unadeuda social que tiene que pagarse, asus padres, familiares, amigos, patrones, empresas, a quienes les han servido, y en general a la sociedad y alEstado que les han dado las condiciones o infraestructura social para poder
trativa se lleva a cabo por medio decomunicaciones orales o escritas, enmuchos casos entre interlocutoresque se encuentran a grandes distancias, se hace necesario contar conredes de terminales inteligentes quepermitan a dichos interlocutores comunicarse en forma confiable y poder compartir la información de manera transparente.
BIBLIOGRAFIASistemas operativos modernos, Andrew S.Tanembaum. Editorial Prentice-Hall Hispanoamericana S.A.; México, 1992.
- Intemet-Working With TCPIIP. Volumen 111.Client-Server Programming and Applications.Douglas E. Comer and David L. Stevens.Department 01 Computer Sciences. PurdueUniversity.Prentice-Halllntemacional,lnc.
Cuando se tiene una colección deprocesadores para que éstos seanasignados a los procesos, se debetener la ayuda de los algoritmos deasignación de procesadores.
El sistema distribuido de archivos esel corazón de cualquier Sistema Distribuido y su tarea consiste en almacenar los programas y los datos ytenerlos disponibles cuando sea necesario.
La implantación de un sistema distribuido de archivos implica la tomade varias decisiones: ver si el sistema es con estado o sin él, si se debehacer el ocultamiento y la forma demanejar la réplica de archivos.
Definitivamente nos encontramos enla era de las comunicaciones y, debido a que toda actividad adminis-
!
I1
1!
I• Este discurso continúa una tradición universitaria en que el rector da la primera y la última
Iecdón.
168~===============::::::::::::ICES, :=:::=====::=:=:::==:=====~169ICESI