Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Clasificación para los sistemas con varios procesadores (Flynn, 1972) basado en cómo la máquina relaciona sus
instrucciones con los datos que tiene que procesar.
1) SISD (Single Instruction Single Data). Un solo flujo de instrucción, un solo flujo de datos. Computadores con un
único procesador.
2) SIMD (Single Instruction Multiple Data). Un solo flujo de instrucciones, varios flujos de datos. Procesadores
vectoriales y computadores en array en los que una sola instrucción se ejecuta sobre varios datos.
3) MISD (Multiple Instruction Multiple Data). Flujo de varias instrucciones, un solo flujo de datos. Ningún
computador se ajusta a este tipo.
4) MIMD (Multiple Instruction Multiple Data). Flujo de varias instrucciones, flujo de varios datos. Grupo de
computadores independientes, cada uno con su propio contador de programa, programa y datos. Según la conexión
entre los procesadores, se pueden considerar:
a) Sistemas fuertemente acoplados. Los procesadores comparten la memoria y el reloj. Son sistemas
multiprocesadores y la comunicación generalmente se hace a través de la memoria compartida.
b) Sistemas débilmente acoplados. Los procesadores no comparten la memoria ni el reloj y cada uno tiene su
propia memoria local. Se comunican mediante redes locales o de área extensa. Son los sistemas distribuidos.
Un sistema distribuido proporciona a los usuarios acceso a los distintos recursos hardware y software controlado
por el SO. Esquemas básicos:
a.1) Sistemas operativos de red. Los usuarios están enterados de la multiplicidad de máquinas y para acceder a
sus recursos necesitan conectarse al computador remoto apropiado. Son sistemas débilmente acoplados
tanto en hardware como en software.
a.2.) Sistemas operativos distribuidos. Los usuarios no necesitan saber que existe una multiplicidad de
máquinas y pueden acceder a los recursos remotos de la misma forma que lo hacen a los recursos locales.
Son sistemas de hardware débilmente acoplado, pero de software fuertemente acoplados.
7.1.1. Ventajas
7.1.2. Desventajas
Escalabilidad: capacidad de una arquitectura de expandirse para soportar un mayor número de procesadores.
Es una de las formas más sencillas: usar un bus compartido para conectar los procesadores y la memoria.
Problema: el bus o la memoria compartida se pueden saturar.
1
Soluciones:
1) Disponer de una memoria caché:
a) Asociada con la memoria compartida: los procesadores acceden a ella por el bus,
b) Asignar a cada procesador una caché. Presenta problemas de coherencia. Para mantener esta coherencia, se
utilizan protocolos especializados y hardware adicional, como los “espías” de caché o monitores de caché, que
observan el bus y cuando se hace una petición de escritura en una dirección presente en la caché, se actualiza
ésta con el nuevo valor. Ésto hace que aumente el tráfico en el bus.
2) Considerar un bus de más anchura.
3) Soportar protocolos diferentes de petición/respuesta. Las peticiones y las respuestas de memoria se tratan de forma
separada en el bus. Después de que un procesador realiza una petición, el bus queda liberado para que lo puedan
utilizar otros usuarios durante el tiempo que tarda la memoria en acceder y ensamblar la información solicitada.
La escalabilidad de este esquema está limitada por el bus y la memoria compartida. En implementaciones
comerciales se soportan del orden de 64 procesadores. Es un esquema sencillo, por lo que muchos diseños comerciales
están basados en él.
P
P
Conmutador de cruce
La conmutación en los cruces es la única fuente de retardo. La contención en el acceso a la memoria sólo ocurre
cuando un procesador intenta acceder a la misma memoria y al mismo tiempo que otro. Pero con una apropiada
situación de los datos se puede evitar, o por lo menos aliviar. El problema persiste en el caso de variables compartidas
(como un semáforo).
Permite un elevado grado de paralelismo entre tareas no relacionadas, pero se presentan problemas de contención
cuando hay procesos con memoria compartida.
Para n procesadores y n memorias, se necesitan n2 conmutadores, lo que hace que el coste sea elevado.
Una red omega está basada en conmutadores 2x2, cada uno con dos entradas y dos salidas. Cada conmutador
puede dirigir cualquiera de las entradas a cualquiera de las salidas y todos los procesadores pueden acceder a todas las
memorias.
Puede conectar simultáneamente todas las entradas a todas las salidas, suponiendo que no haya dos procesadores
que intenten acceder al mismo tiempo al mismo módulo de memoria. En caso contrario, se puede presentar contención
de acceso a la memoria.
Problemas:
a) Cuando algunos módulos de memoria se referencian con mucha frecuencia, se produce un punto caliente, que
bloquea ciertas rutas de comunicación durante largos períodos de tiempo.
b) Retraso en la conexión. Si hay n memorias y n procesadores, habrá log2n etapas, cada una con n/2 conmutadores.
P M
P M
P M
2
P M
P M
P M
P M
P M
Conmutador 2x2
Ventajas:
a) La complejidad de los hipercubos crece logarítmicamente con el número de nodos, por lo que son una buena
base para realizar sistemas escalables.
b) La comunicación entre nodos adyacentes es directa y el mayor retardo entre dos nodos está acotado por la
dimensión del hipercubo.
Sistemas maestro/esclavos
Un procesador (el maestro) se dedica a ejecutar el SO, planificando las tareas y controlando a los procesadores
esclavos. Éstos sólo pueden procesar algunas consultas locales sencillas.
Es adecuado para el paralelismo dentro de las tareas, asignándoles varios procesadores.
Ventaja: fáciles de desarrollar a partir de un sistema monoprocesador serie.
Inconveniente: su escalabilidad está limitada por tener sólo un procesador maestro.
Sistemas simétricos
3
Se considera a todos los procesadores funcionalmente idénticos, de forma que se pueden asignar a cualquier tarea
(incluyendo tareas del SO). El SO se considera también simétrico, puesto que cualquier procesador puede ejecutarlo,
incluso se puede ejecutar de forma paralela en varios procesadores.
Sistema con maestro flotante: el SO se ejecuta en los procesadores disponibles. El procesador que
temporalmente esté ejecutando el SO actúa como el maestro y planifica las tareas para el resto de procesadores.
Se puede conseguir algo de paralelismo en la ejecución del SO si se identifican los procesos del sistema que
pueden acceder concurrentemente a las estructuras de datos compartidas.
Ventaja: fácil de implementar a partir de sistemas monoprocesadores, como Unix.
Un SO multiprocesador tiene que gestionar los procesadores, la memoria y los dispositivos de E/S que tenga el
sistema.
Gestión de memoria. Si los procesadores están débilmente acoplados, la memoria se gestiona de forma
independiente para cada uno, pero en sistemas de memoria compartida, el SO debe proporcionar un modelo flexible de
la memoria que permita un acceso seguro y eficiente a las estructuras de datos compartidas.
Gestión de los dispositivos. Los sistemas multiprocesadores se dedican fundamentalmente a aplicaciones que son
intensivas en cálculo sin demasiadas operaciones de E/S, por lo que este aspecto no ha requerido un tratamiento
especial, aunque se está investigando en la actualidad.
a) Red de conexión total. Cada instalación está enlazada directamente con todas las demás.
Ventajas: 1) Gran rapidez de comunicación
2) Fiabilidad del sistema
Inconveniente: Coste muy elevado que crece con el cuadrado del número de instalaciones.
c) Redes jerárquicas. Tienen estructura de árbol. Cada instalación, excepto la raíz, tiene un único enlace superior
(padre) y varios enlaces subordinados (hijos).
Ventaja: Menor coste.
Inconvenientes: 1) Si se rompe un enlace, queda partida la red en dos subárboles disjuntos.
2) La comunicación entre “hermanos” hay que hacerla por medio del padre.
d) Topología en estrella.
Ventajas: 1) Coste lineal.
2) Las comunicaciones entre sistemas requieren como máximo dos enlaces.
Inconveniente: El sistema central soporta todo el peso de las comunicaciones, con lo que se puede saturar (suele
dedicarse en exclusiva a la gestión del paso de mensajes).
4
e) Red en anillo. Cada instalación está conectado a otras dos (sus vecinos). Puede ser unidireccional o bidireccional.
Ventaja: Coste lineal.
Inconveniente: 1) Los mensajes tienen que viajar por el anillo.
2) La red se puede partir rompiendo un sólo enlace, se es unidireccional, o dos si es
bidireccional.
f) Canal multiacceso. Sólo existe un enlace al que se conectan todas las instalaciones.
Ventaja: Coste lineal.
Inconveniente: La red se parte si se rompe el único enlace.
1) Nivel físico. Responsable de la transmisión física de un flujo de bits a través de la línea de comunicación.
2) Nivel de enlace de datos. Gestiona las tramas o parte de longitud fija de los paquetes, detectando los errores y los
mecanismos de recuperación.
3) Nivel de red. Responsable de proporcionar conexiones y encaminar los paquetes por la red de comunicaciones,
incluyendo:
a) La gestión de las direcciones de los paquetes que salen.
b) La decodificación de las direcciones de los paquetes que entran.
c) El mantenimiento de la información.
(En muchas redes de difusión y en las LAN, el nivel de red es pequeño y tiene poco que hacer, pudiendo no
considerarse).
4) Nivel de transporte. Tiene la responsabilidad del acceso a bajo nivel a la red y de la transferencia de mensajes entre
clientes, incluyendo:
a) La división de los mensajes en paquetes.
b) El mantenimiento del orden de los paquetes.
c) El control del flujo.
d) La generación de direcciones físicas.
5) Nivel de sesión. Se ocupa de implementar sesiones o protocolos de comunicación entre procesos. También está
encargado de las conexiones remotas y de las transferencia de archivos y correo.
6) Nivel de presentación. Se encarga de resolver las diferencias entre los formatos en las diversas instalaciones en la
red, incluyendo la conversión de caracteres y codificación y decodificación.
7) Nivel de aplicación. Realiza la interacción directa con los usuarios y proporciona los protocolos requeridos por los
procesos de aplicación, como conexión remota, transferencia de archivos y correo electrónico.
Los niveles inferiores (físico y de enlace de datos) se suelen implementar en circuitos integrados.
Las capas intermedias (de red y de transporte) tienen a residir en procesadores especializados.
Los niveles superiores (de sesión, presentación y aplicación) se realizan en software en el sistema final.
5
1) Su método de control de acceso a los medios.
2) El método de transmisión (banda ancha o banda base).
3) El medio de transmisión (par trenzado, cable coaxial o fibra óptica).
Las configuraciones más habituales son las redes de canal multiacceso, anillo y estrella. Con velocidades de
comunicación que van desde un Mb por segundo a un GB por segundo.
Se suelen definir como una arquitectura de niveles según una norma IEEE, similar al modelo de referencia OSI y
compatible con él. La principal diferencia estriba en la división del nivel 2 de OSI (enlace de datos) en dos subniveles:
1) Subnivel de control de acceso a los medios.
2) Subnivel de control de enlace lógico.
Un tipo de red local muy extendido es el Ethernet, generalmente sobre un cable coaxial y en el que se conectan
diferentes tipos de computadores, dispositivos periféricos y pasarelas de acceso a otras redes.
La primera red que se diseñó y desarrollo fue Arpanet, que luego dio lugar a Internet.
Son más lentas que las redes locales (entre 1200 y varios MB/s).
El subsistema de comunicaciones consta de una serie de procesadores de comunicación conectados mediante
líneas de comunicación físicas (telefónicas), en laces por microondas y canales de satélites.
Los procesadores de comunicación definen el interfaz por medio del cual se comunican las instalaciones de la red
y se encargan de transferir información entre las instalaciones.
En Internet hay conectados computadores de todo tipo, que generalmente se encuentran en redes locales, que a su
vez están conectadas mediante redes regionales. Las redes regionales están enlazadas por encaminadores para formar
una red de alcance mundial. Generalmente utilizan servicios telefónicos especiales. Los encaminadores conectan las
redes en el nivel de red ISO y controlan las rutas que sigue cada paquete por la red. El encaminamiento puede ser:
a) Dinámico: aumenta la eficacia de las comunicaciones.
b) Estático: reduce los riesgos de seguridad.
La mayoría de los computadores se direccionan lógicamente mediante un nombre compuesto de varias partes. La
asignación del nombre se basa en un sistema de nombres de dominios, que leídos de izquierda a derecha, van de la
parte más específica a la más general de la dirección (ej.: colos.dia.uned.es).
Capas de Internet:
1) Nivel de acceso a la subred. Corresponde a los niveles físico y de enlace de datos del modelo OSI y una parte del
nivel de red. En él se encuentran los protocolos necesarios para interactuar con la red a la que físicamente está
conectada. (p. ej.: X.25 si es una red de conmutación de paquetes o IEEE 802.2 si es una red local).
2) Nivel Internet. Corresponde con la parte del nivel de red del modelo OSI encargado de la interconexión de las
redes. Su protocolo más importante es el IP (Internet Protocol), cuyo objetivo es conseguir la interconectividad en
redes heterogéneas.
3) Nivel de control de la transmisión. Se corresponde con el nivel de transporte de OSI. En él están los protocolos
TCP (Transmision Control Protocol) y UDP (User Datagram Protocol), ambos basados en IP. TCP es un servicio
de transferencia de datos orientado a conexión, mientras que UDP no está orientado a conexión. El más utilizado es
TCP, hasta el extremo de que se utiliza el término TCP/IP para denominar el conjunto de protocolos de Internet.
En Internet no existen los niveles superiores orientados a las aplicaciones. Las funcionalidades que se dan en las
capas de sesión, presentación y aplicación en el modelo OSI, las tienen que asumir las aplicaciones, a las cuales sólo se
les ofrece un canal de intercambio de datos. Sin embargo, sí existen algunos protocolos estandard para algunas
aplicaciones muy comunes, como FTP para transferencia de archivos, Telnet para el acceso interactivo y SMTP para
el correo electrónico.
UUCP, red de noticias de Unix que permite que los computadores se comuniquen a determinadas horas por
modem. Los mensajes pasan de un sistema a otro hasta llegar a todos (si es un mensaje público) o a su destino.
AppleLink, red de noticias y servicios privada contratada por Apple Computer y que mediante conexión
telefónica da servicios de correo electrónico, noticias e informaciones sobre los computadores Apple.
6
7.5.1. Sistemas operativos de redes
Su función principal es ofrecer un mecanismo para transferir archivos o poder dar órdenes de ejecución de
programas desde una máquina a otra. Cada usuario dispone de su propio computador y se puede conectar con otra
estación de trabajo mediante una orden del tipo:
rlogin computador_remoto
El computador del usuario funciona como un terminal del computador remoto. Las órdenes que se ejecuten lo
harán en la máquina remota.
También se pueden transferir archivos de una máquina a otra usando, p. ej., el protocolo de transferencia de
archivos (FTP, file transfer protocol), siguiendo estos pasos:
1) Invocar al programa FTP, el cual le solicitará:
a) El nombre del computador a partir del cual se efectuará la transferencia.
b) La información de acceso, para verificar los privilegios.
2) Realizar la copia: get datos1 to datos2.
La ubicación del archivo no es transparente para el usuario (tiene que saber exactamente dónde se encuentra). Los
archivos no se comparte realmente, pudiendo existir varias copias del mismo archivo, lo que representa un desperdicio
de espacio y puede plantear problemas de inconsistencia.
Cada computador puede estar ejecutando un SO diferente, pero deben coincidir en el formato y significado de
todos los mensajes que se puedan intercambiar. Los computadores son altamente autónomos y hay pocos requisitos por
parte del sistema.
Los usuarios pueden acceder a los recursos remotos de la misma manera que lo hacen a los recurso locales. La
migración de datos y procesos de una máquina a otra queda bajo el control del SO distribuido. El SO tiene que hacer
tres funciones transparentes al usuario:
a) Migración de datos. Posibilidad de transferir datos de una máquina a otra. Hay dos estrategias:
1) Transferir todo el archivo de una instalación a otra y a partir de ahí el acceso a los datos es local.
2) Transferir sólo aquellas partes del archivo que realmente se necesitan en ese momento.
b) Migración de cálculos. Dos formas:
1) Mediante una llamada a un procedimiento remoto. Un proceso de una instalación invoca a otro
procedimiento definido en otra, el cual, después de ejecutarse, devuelve los resultados.
2) Mediante mensajes. El primer proceso envía un mensaje a la instalación donde está definido el proceso que
quiere que se ejecute. El SO de esta instalación arranca el proceso y, cuando termina, envía el resultado por
medio del sistema de mensajes. Los dos procesos pueden ejecutarse concurrentemente.
c) Migración de procesos. Un proceso puede comenzarse en una instalación y continuar en otra. Razones:
1) Equilibrar las cargas de los sistemas, distribuyendo los procesos.
2) Acelerar los cálculos, dividiendo un proceso en varios subprocesos que se ejecuten concurrentemente.
3) Las características hardware o software de una instalación, que haga preferible que cierto proceso continúe su
ejecución en ésta.
La migración se puede hacer:
1) De forma transparente al usuario. Tiene la ventaja de que el usuario no necesita codificar los programas
explícitamente y se suele utilizar para equilibrar las cargas y acelerar los cálculos.
2) Requiriendo que el usuario especifique cómo y a dónde debe migrar el proceso. Se emplea cuando el proceso
se debe trasladar por consideraciones hardware o software.
1) Sistema transparente. Idealmente, un SO distribuido debería percibirse por el usuario como un sistema único, sin
hacer distinción entre los recursos locales o remotos. Un sistema puede ser transparente sólo a los usuarios, a los
que oculta la distribución. También puede ser transparente a los programas, aunque es más complicado especificar
una semántica bien definida y consistente que además coincida con la del SO centralizado base.
La transparencia es aplicable a distintos aspectos:
a) Transparencia de la localización. Los usuarios no pueden indicar la situación de los recursos hardware y
software.
b) Transparencia de migración. Posibilidad de que los recursos se muevan de una posición a otra sin tener que
cambiar sus nombres.
c) Transparencia de copia. El sistema puede hacer copia de los archivos sin que lo noten los usuarios.
d) Transparencia con respecto a la concurrencia. Los usuarios no advierten la existencia de otros usuarios.
7
e) Transparencia con respecto al paralelismo. El sistema aprovecha las posibilidades de cálculo en paralelo sin
que el programador tenga que advertirlo.
3) Fiabilidad. Si una máquina falla, otra se encargará de su trabajo (sistema tolerante a fallos).
4) Escalabilidad. Capacidad del sistema para adaptarse a un incremento en el servicio. Ante un aumento de la carga,
se debe degradar con mayor moderación y permitir añadir nuevos recursos.
La fiabilidad (tolerancia a fallos) y la escalabilidad están relacionadas entre sí, ya que un sistema con mucha carga
puede paralizarse y comportarse como si tuviera un fallo.
Son apropiados para los modelos de cliente/servidor de cálculo distribuido. Las rutinas de los clientes solicitan
los servicios invocando remotamente la ejecución la ejecución de los procedimientos adecuados en el servidor. Los
servidores pueden proporcionar servicios comunes que pueden ser llamados por los clientes (similar a las librerías de
funciones). Las rutinas públicas deben ser reentrantes (no automodificables) o estar protegidas frente a expropiaciones
mediante alguna norma de control de concurrencia (como la exclusión mutua).
La estructura de un programa para la llamada a procedimientos remotos se suele basar en el concepto de sustituto
(stubs).
8
Enviar Recibir
Red
El proceso invocante hace una llamada normal con parámetros a un procedimiento en su máquina:
call p(x, y)
donde:
p: nombre del procedimiento
x: argumentos pasados
y: valores devueltos
Para el usuario, la intención de invocar un procedimiento remoto en otra máquina puede ser transparente. Un
procedimiento sustituto p se debe incluir en el espacio de direcciones del invocante o se debe enlazar dinámicamente en
el tiempo de la llamada. Este procedimiento crea un mensaje que identifica al procedimiento que se llama e incluye los
parámetros. Se envía este mensaje, usando una primitiva send, y se espera una contestación. Cuando llega, el
procedimiento sustituto devuelve los valores recibidos al programa invocante.
En la máquina remota, otro programa sustituto se asocia con el programa invocado. Cuando se recibe un mensaje,
éste se examina y se genera una llamada local call p(x, y). De esta manera, el procedimiento se llama localmente como
si se tratase de un procedimiento local.
Excepto por la vinculación multimáquina, la semántica RPC es la misma que la de una llamada a un
procedimiento en una sola máquina.
El procedimiento servidor se ejecuta en su totalidad antes de devolver el control.
Las RPC pueden estar anidadas: un procedimiento servidor puede invocar a otros procedimientos.
Es sencillo hacer llamadas por valor. La complejidad que supone implementar llamadas por referencia puede no
compensar el esfuerzo.
Si los lenguajes de programación o las máquinas o los SO son diferentes, entonces probablemente hay diferencias
en la forma de representación de los números y caracteres. Si se usa un sistema completo de comunicación, esta
cuestión se gestiona en la capa de presentación. Pero el coste de estas estructuras ha llevado al diseño de servicios de
RPC que dan sus propios servicios de comunicaciones básicos. Una buena solución es suministrar un formato estándar
para los objetos comunes, tales como números enteros, en coma flotante, caracteres y cadenas de caracteres.
Tradicionalmente las RPC son síncronas, lo cual requiere que el proceso invocante espere hasta que el proceso
invocado devuelva un valor. Las formas síncronas son fáciles de entender y de programar, aunque no explotan
completamente el paralelismo.
Una llamada asíncrona a un procedimiento no bloquea al proceso invocante. La ejecución del cliente sigue en
paralelo con el servidor. Las respuestas se reciben como y cuando son necesarias.
La sincronización entre el cliente y el servidor se puede hacer de dos formas:
1) El nivel de la aplicación en el cliente y en el servidor pueden iniciar el intercambio y verificar al final si se han
realizado todas las peticiones.
2) El cliente emite una cadena de llamadas asíncronas, seguida al final por una llamada síncrona. El servidor
responde a la llamada síncrona sólo cuando ha completado todas las peticiones de las llamadas asíncronas
precedentes.
En un sistema distribuido no hay memoria ni reloj comunes, de forma que muchas veces es imposible determinar
qué suceso ocurrió primero:
1) Puede haber retardos entre el tiempo real de ocurrencia de un suceso y el instante en el que se observa en otro
sistema.
2) La falta de sincronización da lugar a una variación en la lectura de los relojes de los distintos sistemas.
El método de marcación de tiempo (time stamping, Lamport, 1978) ordena los sucesos en un sistema distribuido
sin usar relojes físicos, según la transmisión de mensajes. En cada sistema de la red se mantiene un contador que
funciona como reloj. Cada vez que se transmite un mensaje, primero se incrementa en uno el contador y a continuación
se envía el mensaje al resto de los sistemas:
(mensaje, marca de tiempo, identificador numérico del sistema)
Cuando se recibe un mensaje, el sistema receptor asigna:
valor del reloj = 1 + max (valor actual, marca de tiempo)
9
Si A es un suceso del sistema M y B un suceso del sistema N, se dice que A precede a B si se cumple alguna de
estas condiciones:
1) La marca de tiempo de A es menor que la de B.
2) las marcas de tiempo son iguales, pero el identificador numérico del sistema M es menor que el del sistema N.
Lo importante no es el orden real en el que ocurren los sucesos, sino que todos los procesos coincidan con el
orden impuesto a los sucesos.
a) Algoritmo completamente centralizado. Se tiene que definir un nodo coordinador, que también controla el acceso a
todos los objetos compartidos. Cuando un proceso requiere el acceso a un recurso crítico, realiza una petición del
mismo al proceso local de control de recursos, que a su vez reenvía un mensaje de petición al nodo coordinador.
Finalmente éste devuelve un mensaje de contestación (reply) cuando el objeto compartido está disponible. Cuando
un proceso finaliza con el uso de un recurso compartido, envía un mensaje de liberación de recurso al nodo
coordinador. Este algoritmo tiene dos propiedades clave:
1) Sólo un nodo coordinador toma las decisiones sobre la asignación de los recursos.
2) Toda la información necesaria está concentrada en el nodo coordinador, incluyendo la identificación y
localización de todos los recursos y los estados de asignación de cada uno.
Desventajas:
1) Si el nodo coordinador falla, el mecanismo de exclusión mutua se viene abajo.
2) Toda la asignación y desasignación de recursos requiere un intercambio de mensajes con el nodo coordinador,
con lo que éste se convierte en un cuello de botella para el sistema global.
Colas distribuidas.
Un proceso que ha recibido un mensaje de respuesta de todos los demás puede ya entrar en su región crítica,
colocando en una cola todas las solicitudes que reciba y posponiendo su contestación. Después de salir, envía los
mensajes de respuesta a todas las peticiones que difirió.
El número de mensajes por entrada a la región crítica es 2(N - 1), donde N es el número de nodos del sistema.
Desventajas:
1) Cada proceso necesita conocer la identidad de todos los demás procesos del sistema.
2) Si falla un proceso, el esquema se viene abajo.
3) Los procesos que no han entrado en su región crítica deben efectuar pausas frecuentes para contestar a los que
pretender entrar en la suya.
Paso de testigo
10
El testigo es un tipo especial de mensaje que pasa de un proceso a otro en el sistema, de forma que su posesión
permite entrar en la región crítica. Cuando un proceso sale de la región crítica, pasa el testigo al siguiente proceso.
Se necesitan dos estructuras de datos:
a) testigo: array cuyo k-ésimo elemento es la marca de tiempo de la última vez que el testigo visitó al proceso Pk.
b) peticion: cada proceso mantiene un array de peticiones cuyo i-ésimo elemento es la marca de tiempo de la
última petición recibida de Pj.
7.7.3. Bloqueos
Clases de bloqueos:
a) Bloqueo de recursos: ocurre cuando los procesos compiten por el acceso exclusivo a un recurso que está
retenido por otro proceso.
b) Bloqueo de comunicación: cuando cada uno de los procesos espera la llegada de un mensaje y ninguno de
ellos lo envía.
Los dispositivos de comunicación, buffers, etc., también son recursos y se pueden considerar como bloqueos de
recursos.
Se pueden utilizar las técnicas de prevención y de evitación, o bien permitir que ocurran y entonces detectarlos y
recuperarse de ellos, o simplemente ignorarlos. Lo que normalmente no se hace en los sistemas distribuidos es evitar
los bloqueos, debido a su dificultad.
Prevención
Estos dos métodos requieren que los procesos determinen previamente sus necesidades de recursos, lo cual no
siempre es posible.
2) Algoritmos basados en el uso de marcas de tiempo (Rosenkrantz, 1978). Los conflictos por la posesión de un
recurso se resuelven comparando las marcas de tiempo, de forma que se pueden prevenir las condiciones de esperas
circulares.
Si un proceso anuncia que quiere comenzar una transacción (o transacción atómica) con otros procesos, éstos
tienen que negociar diferentes opciones, como el crear o eliminar objetos o el realizar ciertas operaciones. El
proceso iniciador anuncia que quiere que el resto de los procesos se comprometan con el trabajo realizado hasta
entonces. Si todos aceptan, los resultados son permanentes. Pero si uno o más procesos se niegan, o fallan antes de
expresar su acuerdo, la situación vuelve al estado anterior al comienzo de la transacción.
Cada transacción lleva la marca de tiempo de su creación. Si un recurso R se utiliza por una transacción T2 y
se solicita por otra transacción T1, el conflicto se resuelve comparando sus marcas de tiempo.
11
2.1.) Algoritmo de espera-muerte. Si T1 tiene un recurso R que solicita T2, la asignación del recurso se hace así:
if m(T2) < m(T1)
then
se interrumpe T2 (espera)
else
aborta T2 (muere)
endif
donde m(Tx) es la marca de tiempo de Tx. Si T2 es más viejo, se bloquea (espera). Si es más joven, aborta y
se vuelve a arrancar con la misma marca de tiempo para que pueda envejecer y aumentar su prioridad.
2.2.) Algoritmo de herida-espera. Las peticiones de las transacciones más viejas se atienden inmediatamente,
aunque se tengan que abortar las que son más jóvenes que usan los recursos solicitados.
if m(T2) < m(T1)
then
aborta T1 (herido)
else
se interrumpe T2 (espera)
endif
Detección
A los procesos se les permite que obtengan libremente los recursos que necesitan. Cuando se detecta un
interbloqueo, se tiene que seleccionar a uno de los procesos involucrados para que libere el recurso. La dificultad está
en que cada nodo sólo tiene información de los recursos propios, mientras que el bloqueo puede entrañar recursos
distribuidos.
1) Enfoque centralizado. Un nodo es el responsable de la detección de los bloqueos. Todos los mensajes de solicitud
y liberación de recursos se envían a un proceso coordinador, además de transmitirlo al proceso que controla ese
recurso.
Inconvenientes:
a) Aumento en el número de mensajes.
b) Vulnerabilidad a fallos del sistema coordinador.
Ventajas:
a) Los algoritmos son sencillos.
b) Los bloqueos se pueden resolver de forma óptima.
2) Enfoque jerárquico. Los nodos se organizan en una estructura arborescente, a partir de un nodo raíz. Cada nodo
tiene información de los recursos asignados a todos los nodos que dependen de él, por lo que se pueden detectar los
bloqueos en niveles inferiores al nodo raíz.
Inconvenientes:
a) Dificultad de configurar el sistema para poder localizar los posibles bloqueos.
Ventajas:
a) No ser vulnerables a los fallos de un nodo.
b) Si están relativamente localizados los posibles bloqueos, está limitada la actividad de resolución de los
mismo.
3) Enfoque distribuido. Todos los procesos cooperan para detectar los bloqueos, lo que conlleva un gran intercambio
de información con las marcas de tiempo correspondientes.
Inconvenientes:
a) Los algoritmos son laboriosos y difíciles de diseñar.
Ventajas:
a) No ser vulnerables a los fallos de un nodo.
b) Ninguno está agobiado con los algoritmos de detección.
Algoritmo de Chandy (1983). Se permite que los procesos soliciten varios recursos al mismo tiempo.
Ejemplo: El proceso P1 está esperando un recurso local que dispone P2, pero éste espera un proceso localizado en
otra máquina. El proceso P1 genera un mensaje especial de exploración, que se envía a los procesos que tienen los
12
recursos solicitados. El mensaje consta de tres partes: el proceso recién bloqueado, el proceso que envía el mensaje y el
proceso al cual se envía: (P1, P1, P2).
Al llegar el mensaje a un proceso, éste verifica si está esperando a otros procesos. En este caso, el mensaje se
actualiza, manteniendo el primer campo: (P1, P2, P3). Si el mensaje recorre un bucle, llegando al emisor original,
entonces existe un ciclo y el sistema está bloqueado.
Formas de romper un bloqueo detectado:
a) Que el proceso que inicia el ciclo se aborte. Puede presentar problemas, sobre todo si varios procesos llaman a
la vez al algoritmo.
b) Según va circulando el mensaje, los procesos añaden su identidad, de forma que el proceso inicial puede elegir
cuál es el que se tiene que abortar, eliminando al que tiene el número más alto.
Un sistema de archivos ofrece un servicio de archivos a los clientes. El interfaz con el cliente son primitivas
como las de crear, borrar, leer o escribir en un archivo. En un sistema de archivos distribuidos, los clientes, servidores
y dispositivos de almacenamiento se encuentran dispersos entre varias máquinas y el servicio se tiene que hacer
mediante una red.
En algunas configuraciones hay máquinas dedicadas a operar sólo como servidores de archivos, en otras las
máquinas pueden ser a la vez servidores y clientes. El sistema de archivos distribuido puede estar implementado como
parte del propio SO o ser una capa de software que gestiona la comunicación entre los SO y los sistemas de archivos
convencionales.
La dispersión de dispositivos y servidores debe ser transparente para el cliente.
El tiempo necesario para satisfacer una solicitud se compone de:
a) El tiempo propio de los sistemas convencionales:
a.1) tiempo de acceso al disco
a.2) tiempo de procesamiento.
b) Más el tiempo de las operaciones propias de un sistema distribuido:
b.1) operaciones de red:
b.1.1) tiempo de petición de solicitud a un servidor
b.1.2) tiempo de respuesta al cliente
b.2) tiempo de procesamiento de los protocolos de comunicaciones.
El sistema de archivos de red (NFS, Network File System) de Sun Microsystems (diseñado para sistemas Unix,
pero soportado en la actualidad por diferentes plataformas y SO) permite que un conjunto de computadores compartan
un sistema de archivos común, tanto en LANs como en WANs.
Los servidores soportan físicamente el sistema de archivos compartido, mientras que los clientes sólo lo utilizan.
Un mismo computador puede ser a la vez cliente y servidor.
Cada uno de los servidores NFS exporta uno o varios de sus directorios para que los clientes remotos puedan
acceder a los mismos. Los clientes pueden montar el directorio exportado por el servidor como un directorio más en su
jerarquía de directorios. Si dos o más clientes montan el mismo directorio, pueden compartir archivos en sus
directorios comunes.
Protocolos NFS
1) Protocolo que gestiona el montaje. Un cliente puede enviar el nombre de la ruta de acceso a un servidor y solicitar
el permiso para montar ese directorio en su jerarquía de directorios. Si se ha exportado el directorio solicitado, el
servidor devuelve un manejador de archivo (file handle) al cliente, con las informaciones relativas al archivo, tales
como tipo, disco, número de i-nodo del directorio, etc. Las llamadas posteriores de lectura y escritura utilizan este
manejador.
a) Montaje estático. Muchos clientes se configuran para que monten algunos directorio remotos automáticamente.
Suelen contener un archivo /etc/rc con las órdenes necesarias para el montaje y que se ejecuta cuando se arranca
el cliente.
Inconvenientes:
13
1) Si uno de los servidores NFS no funciona, es bastante difícil recuperar al cliente.
2) Si no se necesita ese servidor, es un tiempo y trabajo perdido inútilmente.
b) Automontaje de Sun. La primera vez que se abre un archivo remoto, el SO envía un mensaje a cada uno de los
servidores. El directorio que se monta es el correspondiente al primer servidor que responda.
Ventajas:
1) Disponer de varios servidores permite una mayor tolerancia frente a los fallos y un mejor rendimiento.
Inconvenientes:
1) Todos los sistemas de archivos especificados como alternativas al automontaje tienen que ser idénticos.
El automontaje se usa más en sistemas de archivos de sólo lectura.
2) Protocolo de acceso a los directorios y archivos. NFS soporta la mayoría de las llamadas al sistema Unix, excepto
open y close, de forma que no es necesario abrir un archivo antes de leerlo, ni cerrarlo después de utilizarlo. Para
leer un archivo, el cliente envía al servidor un mensaje con el nombre del archivo y devuelve un manejador con una
estructura que lo identifica. La llamada read contiene el manejador del archivo que se va a leer, el desplazamiento
en el archivo a la posición donde comienza la lectura y el nº de bytes deseados. Ventaja: el servidor no tiene que
recordar las conexiones abiertas durante las llamadas intermedias. Si un servidor falla, cuando vuelve a arrancar no
se pierde la información acerca de los archivos abiertos, puesto que éstos no existen.
Arquitectura NFS
Cliente Servidor
RPC RPC
Disco Disco
Red
La principal característica de AFS (Andrew File System) es su capacidad de crecimiento (el objetivo del sistema
es abarcar más de 5.000 estaciones de trabajo).
Andrew establece una diferencia entre las máquinas cliente, estaciones de trabajo, y máquinas servidoras
dedicadas. Tanto los clientes como los servidores ejecutan Unix y están conectados por una red compuesta a la vez por
redes locales.
14
Los servidores dedicados, que se denominan colectivamente Vice, presentan a los clientes el espacio de nombres
compartidos como una jerarquía de archivos homogénea, idéntica y transparente a la ubicación. Las estaciones de
trabajo ejecutan el protocolo Venus para comunicarse con Vice.
Los servidores, en conjunto, son responsables del almacenamiento y la gestión del espacio de nombres
compartido. El espacio de nombres locales es pequeño, distinto para cada máquina y contiene los programas del
sistema que son esenciales para el funcionamiento autónomo.
Clientes y servidores están estructurados como agrupamientos conectados mediante un sistema LAN. Cada
agrupamiento consiste en un conjunto de estaciones de trabajo y un representante de Vice, denominado servidor de
agrupamiento. Para obtener el mejor rendimiento, las estaciones de trabajo deben utilizar lo más posible el servidor de
su propio agrupamiento, de forma que las referencias entre los agrupamientos sean lo menos frecuentes posibles.
Para descargar trabajo de los servidores a los clientes, cuando se abre un archivo, éste se coloca por completo en
la memoria caché del disco local.
Red general
Encaminador
15