Está en la página 1de 32

S.E.P S.E.S. D.G.E.S.

I N S T I T U T O T E C N OL Ó G I C O D E C A N C Ú N

LICENCIATURA EN INFORMATICA

ALUMNO:

Chávez Javier Roberto

ASIGNATURA:

“Sistemas Operativos II”

PROFESOR:

Raúl Ramírez Lozano

TRABAJO:

Unidad 2

CANCÚN QUINTANA ROO A 25 DE MAYO DE 2011


Contenido

2.1 comunicación Sod.........................................................................................................................................3


2.1.1.- Comunicación cliente/servidor sockets...............................................................................................3
2.1.2.- Comunicación con RPC........................................................................................................................6
2.1.3.- Comunicación en grupo.......................................................................................................................8
2.1.4.- Tolerancia a fallos................................................................................................................................9
2.2.- Sincronización sistemas distribuidos..........................................................................................................9
2.2.1.- Relojes físicos....................................................................................................................................10
2.2.2.- Relojes Lógicos..................................................................................................................................10
2.2.3.- Usos de la sincronización, manejo de cache, comunicación en grupo, exclusión mutua elección
transacciones atómicas e interbloqueo........................................................................................................13
2.3.- Nominación característica y estructuras..................................................................................................18
2.3.2.- Tipos de nombres usuario y de sistema.............................................................................................19
2.3.3.- Resolución y Distribución..................................................................................................................23
2.3.4.- Servidores y agentes de nombres......................................................................................................23
2.3.5.- Mapeo de direcciones.......................................................................................................................24
2.3.6.- Mapeo de rutas.................................................................................................................................24
2.3.7.- Modelo de Terry................................................................................................................................26

1
Comunicación en los sistemas operativos distribuidos

La sincronización en sistemas de un único ordenador no requiere ninguna consideración en


el diseño del sistema operativo, ya que existe un reloj único que proporciona de forma regular
y precisa el tiempo en cada momento. Sin embargo, los sistemas distribuidos tienen un reloj
por cada ordenador del sistema, con lo que es fundamental una coordinación entre todos los
relojes para mostrar una hora única. Los osciladores de cada ordenador son ligeramente
diferentes, y como consecuencia todos los relojes sufren un desfase y deben ser
sincronizados continuamente. La sincronización no es trivial, porque se realiza a través de
mensajes por la red, cuyo tiempo de envío puede ser variable y depender de muchos
factores, como la distancia, la velocidad de transmisión o la propia saturación de la red, etc.

La comunicación entre procesos en sistemas con un único procesador se lleva a cabo


mediante el uso de memoria compartida entre los procesos. En los sistemas distribuidos, al
no haber conexión física entre las distintas memorias de los equipos, la comunicación se
realiza mediante la transferencia de mensajes.

Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser
que este conjunto de procesadores esté en un equipo o en diferentes, en este caso es
trasparente para el usuario. Existen dos esquemas básicos de éstos. Un sistema fuertemente
acoplado esa es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso
son similares para todos los procesadores. En un sistema débilmente acoplado los
procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria
local.

Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema
se compone otro componente debe de ser capaz de reemplazarlo.

Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes:
Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc.

Características de los Sistemas Operativos distribuidos:

 Colección de sistemas autónomos capaces de comunicación y cooperación mediante


interconexiones hardware y software .
 Gobierna operación de un S.C. y proporciona abstracción de máquina virtual a los
usuarios.
 Objetivo clave es la transparencia.
 Generalmente proporcionan medios para la compartición global de recursos.
 Servicios añadidos: denominación global, sistemas de archivos distribuidos,
facilidades para distribución de cálculos (a través de comunicación de procesos
internodos, llamadas a procedimientos remotos, etc.).

2
2.1 comunicación Sod

La diferencia más importante entre un sistema distribuido y un sistema de un único


procesador es la comunicación entre procesos.

En un sistema de un solo procesador la comunicación supone implícitamente la existencia de


la memoria compartida.

En un sistema distribuido no existe la memoria compartida y por ello toda la naturaleza de la


comunicación entre procesos debe replantearse.

Los procesos, para comunicarse, deben apegarse a reglas conocidas como protocolos.

Para los sistemas distribuidos en un área amplia, estos protocolos toman frecuentemente la
forma de varias capas y cada capa tiene sus propias metas y reglas.

Los mensajes se intercambian de diversas formas, existiendo muchas opciones de diseño al


respecto; una importante opción es la “llamada a un procedimiento remoto”.

También es importante considerar las posibilidades de comunicación entre grupos de


procesos, no solo entre dos procesos.

Protocolos con Capas:

Debido a la ausencia de memoria compartida, toda la comunicación en los sistemas


distribuidos se basa en la transferencia de mensajes.

2.1.1.- Comunicación cliente/servidor sockets

Origen de los socket tuvo lugar en una variante del sistema operativo Unix conocida como
BSD Unix. En la universidad de Berkeley, en los inicios del Internet, pronto se hizo evidente
que los programadores necesitarían un medio sencillo y eficaz para escribir programas
capaces de intercomunicarse entre sí. Esta necesidad dio origen a la primera especificación
e implementación de sockets.

Cliente-Servidor es el modelo que actualmente domina el ámbito de comunicación, ya que


descentraliza los procesos y los recursos. Es un Sistema donde el cliente es una aplicación,
en un equipo, que solicita un determinado servicio y existe un software, en otro equipo, que
lo proporciona.

Los servicios pueden ser:

1) Ejecución de un programa.
2) Acceso a una Base de Datos.
3
3) Acceso a un dispositivo de hardware.

Solo se requiere un medio físico de comunicación entre las máquinas y dependerá de a la


naturaleza de este medio la vialidad del sistema.

Solo se requiere un medio físico de comunicación entre las máquinas y dependerá de a la


naturaleza de este medio la vialidad del sistema.

Definición de Socket: designa un concepto abstracto por el cual dos programas


(posiblemente situados en computadoras distintas) pueden intercambiarse cualquier flujo de
datos, generalmente de manera fiable y ordenada.

Los sockets proporcionan una comunicación de dos vías, punto a punto entre dos procesos.
Los sockets son muy versátiles y son un componente básico de comunicación entre
interprocesos e intersistemas. Un socket es un punto final de comunicación al cual se puede
asociar un nombre.

Para lograr tener un socket es necesario que se cumplan ciertos requisitos:

• Que un programa sea capaz de localizar al otro.


• Que ambos programas sean capaces de intercambiarse información.

Por lo que son necesarios tres recursos que originan el concepto de socket

a) Un protocolo de comunicaciones, que permite el intercambio de octetos.

b) Una dirección del Protocolo de Red (Dirección IP, si se utiliza el Protocolo TCP/IP),
que identifica una computadora.

c) Un número de puerto, que identifica a un programa dentro de una computadora. Con


un socket se logra implementar una arquitectura cliente-servidor. La comunicación es
iniciada por uno de los programas (cliente). Mientras el segundo programa espera a que
el otro inicie la comunicación (servidor). Un Socket es un archivo existente en el cliente y
en el servidor.

Si un socket es un punto final de un puente de comunicaron de dos vías entre dos programas
que se comunican a través de la red, ¿Cómo funciona? Normalmente, un servidor funciona
en una computadora específica usando un socket con un número de puerto específico. El
cliente conoce el nombre de la maquina (hostname) o el IP, en la cual el servidor está
funcionando y el número del puerto con el servidor está conectado.

Si el cliente lanza una demanda de conexión y el servidor acepta la conexión, este abre un
socket en un puerto diferente, para que pueda continuar escuchando en el puerto original
nuevas peticiones de conexión, mientras que atiende a las peticiones del cliente conectado.
El cliente y el servidor pu8eden ahora comunicarse escribiendo o leyendo en sus respectivos
sockets.

4
Los tipos de socket definen las propiedades de comunicación visibles para la aplicación. Los
procesos se comunican solamente entre los sockets del mismo tipo. Existen cinco tipos de
sockets.

El Cliente actúa de la siguiente forma.

1) Establece una conexión con el servidor (Crea un socket con el servidor).

2) Mandar mensajes al servidor o Esperar un mensaje de él. (Consultas)

3) Esperar su respuesta o contestarle (existen casos en que este paso no es necesario).

4) Repetir los pasos 2 y 3 mientras sea necesario.

5) Cerrar la conexión con el servidor.

El servidor actúa así.

1) Inicializa un puerto de comunicación, en espera de clientes que intenten conectarse a


él (Crea un serverSocket).

2) Una vez que se conecta alguien, crea un hilo de ejecución para este usuario mientras
que el thread principal vuelve al paso 1. Esto comúnmente se hace para que el servidor
pueda atender a varios clientes al mismo tiempo.

3) Se comunica con el cliente mediante el socket creado entre el cliente y él.

4) Espera que el cliente se vaya o lo bota el mismo servidor (Cierra el socket entre ellos)
y elimina el thread de comunicación entre ellos.

Las propiedades de un socket dependen de las características del protocolo en el que se


implementan. El protocolo más utilizado es TCP, aunque también es posible utilizar UDP
o IPX. Gracias al protocolo TCP.

Los sockets tienen las siguientes propiedades:

I. Orientado a conexión. Se garantiza la transmisión de todos los octetos sin errores ni


omisiones.

II. Se garantiza que todo octeto llegará a su destino en el mismo orden en que se ha
transmitido.

Los tipos de socket definen las propiedades de comunicación visibles para la aplicación. Los
procesos se comunican solamente entre los sockets del mismo tipo. Existen tres tipos
básicos de sockets:

• Socket de flujo: da un flujo de datos de dos vías, confiable, y sin duplicados sin límites
de grabación. El flujo opera en forma parecida a una conversación telefónica. El tipo

5
del socket es SOCK_STREAM, el cual en el dominio de Internet usa TCP
(Transmission Control Protocol).

• Socket de datagrama: Soporta un flujo de mensajes de dos vías. En un socket de


datagrama podría recibir mensajes en diferente orden de la secuencia de la cual los
mensajes fueron enviados. Los límites de grabación en los datos son preservados.
Los sockets de datagrama operan parecidos a pasar cartas hacia adelante y hacia
atrás en el correo. El tipo de socket es SOCK_DGRAM, el cual en el dominio de
internet usa UDP (User Datagram Protocol).

• Socket de paquete secuencial: Da una conexión de dos vías, secuencial y confiable


para datagramas de una longitud fija máxima. El tipo de socket es
SOCK_SEQPACKET. No hay protocolo en Internet implementado para este tipo de
socket.

Implementando un socket en java:

En un programa Cliente-Servidor un socket nos ayuda a representar las conexiones entre un


programa cliente y uno servidor. En el lado del cliente se utiliza la clase Socket y en el del
servidor el Server Socket para representar dichas conexiones.

Programa cliente:

El programa cliente se conecta a un servidor indicando el nombre de la máquina y el número


puerto (tipo de servicio que solicita) en el que el servidor está instalado. Una vez conectado,
lee una cadena del servidor y la escribe en la pantalla

Programa servidor:

El programa servidor se instala en un puerto determinado, a la espera de conexiones, a las


que tratará mediante un segundo SOCKET. Ejemplo cada vez que se presenta un cliente, le
saluda con una frase “Hola cliente N”. Este servidor sólo atenderá hasta tres clientes, y
después finalizará su ejecución, pero es habitual utilizar ciclos infinitos (while (true)) en los
servidores, para que atiendan llamadas continuamente. Tras atender cuatro clientes, el
servidor deja de ofrecer su servicio.

2.1.2.- Comunicación con RPC

RCP (remote procedure call)

El mecanismo general para las aplicaciones cliente-servidor se proporciona por el paquete


Remote Procedure Call (RPC). RPC fue desarrollado por Sun Microsystems y es una

6
colección de herramientas y funciones de biblioteca. Aplicaciones importantes construidas
sobre RPC son NIS, Sistema de Información de Red y NFS, Sistema de Ficheros de Red.

Un servidor RPC consiste en una colección de procedimientos que un cliente puede solicitar
por el envío de una petición RPC al servidor junto con los parámetros del procedimiento. El
servidor invocará el procedimiento indicado en nombre del cliente, entregando el valor de
retorno, si hay alguno. Para ser independiente de la máquina, todos los datos intercambiados
entre el cliente y el servidor se convierten al formato External Data Representation (XDR) por
el emisor, y son reconvertidos a la representación local por el receptor. RPC confía en
sockets estandard UDP y TCP para transportar los datos en formato XDR hacia el host
remoto. Sun amablemente ha puesto RPC en el dominio público; se describe en una serie de
RFCs.

La comunicación entre servidores RPC y clientes es un tanto peculiar. Un servidor RPC


ofrece una o más colecciones de procedimientos; cada conjunto se llama un programa y es
identificado de forma única por un número de programa. Una lista que relaciona nombres de
servicio con números de programa se mantiene usualmente en /etc./rpc.

En la llamada remota toma 10 pasos.

Paso 1. En el primero de los cuales el programa cliente (o procedimiento) llama al


procedimiento stub enlazado en su propio espacio de direcciones. Los parámetros pueden
pasarse de la manera usual y hasta aquí el cliente no nota nada inusual en esta llamada ya
que es una llamada local normal.

El stub cliente reúne luego los parámetros y los empaqueta en un mensaje. Esta operación
se conoce como reunión de argumentos (parameter marshalling). Después que se ha
construido el mensaje, se lo pasa a la capa de transporte para su transmisión

Paso 2. En un sistema LAN con un servicio sin conexiones, la entidad de transporte


probablemente sólo le agrega al mensaje un encabezamiento y lo coloca en la subred sin
mayor trabajo.

Paso 3. En una WAN, la transmisión real puede ser más complicada.

Cuando el mensaje llega al servidor, la entidad de transporte lo pasa al stub del servidor

Paso 4. Que desempaqueta los parámetros. El stub servidor llama luego al procedimiento
servidor.

Paso 5. Pasándole los parámetros de manera estándar. El procedimiento servidor no tiene


forma de saber que está siendo activado remotamente, debido a que se lo llama desde un
procedimiento local que cumple con todas las reglas estándares. Únicamente el stub sabe
que está ocurriendo algo particular.

Después que ha completado su trabajo, el procedimiento servidor retorna


7
Paso 6. De la misma forma en que retornan otros procedimientos cuando terminan y, desde
luego, puede retornar un resultado a un llamador. El stub servidor empaqueta luego el
resultado en un mensaje y lo entrega a la interfaz con transporte.

Paso 7. Posiblemente mediante una llamada al sistema, al igual que en el paso 2. Después
que la respuesta retorna a la máquina cliente.

Paso 8. La misma se entrega al stub cliente.

Paso 9. Que desempaqueta las respuestas. Finalmente, el stub cliente retorna a su llamador,
el procedimiento cliente y cualquier valor devuelto por el servidor en el paso 6, se entrega al
cliente.

Paso 10. El propósito de todo el mecanismo es darle al cliente (procedimiento cliente) la


ilusión de que está haciendo una llamada a un procedimiento local. Dado el éxito de la
ilusión, ya que el cliente no puede saber que el servidor es remoto, se dice que el mecanismo
es transparente. Sin embargo, una inspección más de cerca revela algunas dificultades en
alcanzar la total transparencia.

2.1.3.- Comunicación en grupo

La comunicación en grupo tiene que permitir la definición de grupos, así como características
propias de los grupos, como la distinción entre grupos abiertos o que permiten el acceso y
cerrados que lo limitan, o como la distinción del tipo de jerarquía dentro del grupo.
Igualmente, los grupos han de tener operaciones relacionadas con su manejo, como la
creación o modificación.

La comunicación se clasifica de acuerdo al número de usuarios a los que se les ha enviado


el mensaje.

 Broadcast o difusión forzada: un nodo emite todos los escuchan y solo contesta a
quien va dirigido el mensaje
 Multicast: se entrega el mensaje a todos los anfitriones HOST que están compuestos
de ciertas características.
 Unicast o pointcast: un nodo emite y otro recibe, solo escucha aquel a quien se dirigió
el mensaje.
 Una clasificación adicional es la realizada en base a grupos:
 Listas de destinarios: se tiene una lista de aquellos a los que se les enviara el
mensaje.
 Identificador de grupo: se forman grupos y el mensaje es dirigido solo a los miembros
de ese grupo.
 Predicador de pertenencia: se envía y otro recibe, solo escucha aquel a quien se
dirigió el mensaje.
8
2.1.4.- Tolerancia a fallos

La difusión de los sistemas distribuidos incrementa la demanda de sistemas que


esencialmente nunca fallen.

Los sistemas tolerantes a fallos requerirán cada vez más una considerable redundancia en
hardware, comunicaciones, software, datos, etc.

La réplica de archivos sería un requisito esencial.

También debería contemplarse la posibilidad de que los sistemas funcionen aún con la
carencia de parte de los datos.

Los tiempos de fallo aceptables por los usuarios serán cada vez menores.

2.2.- Sincronización sistemas distribuidos

En sistemas con una única CPU las regiones críticas, la exclusión mutua y otros problemas
de sincronización son resueltos generalmente utilizando métodos como semáforos y
monitores. Estos métodos no se ajustan para ser usados en sistemas distribuidos ya que
invariablemente se basan en la existencia de una memoria compartida.

No es posible reunir toda la información sobre el sistema en un punto y que luego algún
proceso la examine y tome las decisiones.

En general los algoritmos distribuidos tienen las siguientes propiedades:

• la información relevante está repartida entre muchas máquinas


• los procesos toman decisiones basadas solamente en la información local disponible
• debería poder evitarse un solo punto que falle en el sistema
• no existe un reloj común u otro tiempo global exacto

Si para asignar un recurso de E/S un proceso debe recolectar información de todos los
procesos para tomar la decisión esto implica una gran carga para este proceso y su caída
afectaría en mucho al sistema.

Idealmente, un sistema distribuido debería ser más confiable que las máquinas individuales.
Alcanzar la sincronización sin la centralización requiere hacer cosas en forma distinta a los
sistemas operativos tradicionales.

9
2.2.1.- Relojes físicos

El algoritmo de Lamport proporciona un orden de eventos sin ambigüedades, pero los


valores de tiempo asignados a los eventos no tienen por qué ser cercanos a los tiempos
reales en los que ocurren. En ciertos sistemas (ej. sistemas de tiempo real), es importante la
hora real del reloj; Se precisan relojes físicos externos (más de uno).

Se deben sincronizar: Con los relojes del mundo real. Entre sí. La medición del tiempo real
con alta precisión no es sencilla. Desde antiguo el tiempo se ha medido astronómicamente.

Se considera el día solar al intervalo entre dos tránsitos consecutivos del sol, donde el
tránsito del sol es el evento en que el sol alcanza su punto aparentemente más alto en el
cielo.

El segundo solar se define como 1 / 86.400 de un día solar.

Como el período de rotación de la tierra no es constante, se considera el segundo solar


promedio de un gran número de días.

Los físicos definieron al segundo como el tiempo que tarda el átomo de cesio 133 para hacer
9.192.631.770 transiciones.

Se tomó este número para que el segundo atómico coincida con el segundo solar promedio
de 1958. La Oficina Internacional de la Hora en París (BIH) recibe las indicaciones de cerca
de 50 relojes atómicos en el mundo y calcula el tiempo atómico internacional (TAI). Como
consecuencia de que el día solar promedio (DSP) es cada vez mayor, un día TAI es 3 mseg
menor que un DSP.

La BIH introduce segundos de salto para hacer las correcciones necesarias para que
permanezcan en fase. El sistema de tiempo basado en los segundos TAI. El movimiento
aparente del sol. Surge el tiempo coordenado universal (UTC). El Instituto Nacional del
Tiempo Estándar (NIST) de EE. UU. Y de otros países: Operan estaciones de radio de onda
corta o satélites de comunicaciones. Transmiten pulsos UTC con cierta regularidad
establecida (cada segundo, cada 0,5 mseg, etc.). Se deben conocer con precisión la posición
relativa del emisor y del receptor: Se debe compensar el retraso de propagación de la señal.
Si la señal se recibe por módem también se debe compensar por la ruta de la señal y la
velocidad del módem. Se dificulta la obtención del tiempo con una precisión extremadamente
alta.

2.2.2.- Relojes Lógicos

10
Las computadoras poseen un circuito para el registro del tiempo conocido como dispositivo
reloj. Es un cronómetro consistente en un cristal de cuarzo de precisión sometido a una
tensión eléctrica que:

Oscila con una frecuencia bien definida que depende de:

• Al forma en que se corte el cristal.


• El tipo de cristal.
• La magnitud de la tensión.

A cada cristal se le asocian dos registros:

• Registro contador.
• Registro mantenedor.

Cada oscilación del cristal decremento en “1” al contador. Cuando el contador llega a “0”: Se
genera una interrupción. El contador se vuelve a cargar mediante el registro mantenedor. Se
puede programar un cronómetro para que genere una interrupción “x” veces por segundo.
Cada interrupción se denomina marca de reloj. Para una computadora y un reloj:

No interesan pequeños desfasajes del reloj porque:

• Todos los procesos de la máquina usan el mismo reloj y tendrán consistencia interna.
• Importan los tiempos relativos.

Para varias computadoras con sus respectivos relojes:

• Es imposible garantizar que los cristales de computadoras distintas oscilen con la


misma frecuencia.
• Habrá una pérdida de sincronía en los relojes (de software), es decir que tendrán
valores distintos al ser leídos.
• La diferencia entre los valores del tiempo se llama distorsión del reloj y podría generar
fallas en los programas dependientes del tiempo.

Lamport demostró que la sincronización de relojes es posible y presentó un algoritmo para


lograrlo. Lamport señaló que la sincronización de relojes no tiene que ser absoluta:

Si 2 procesos no interactúan no es necesario que sus relojes estén sincronizados.


Generalmente lo importante no es que los procesos estén de acuerdo en la hora, pero sí
importa que coincidan en el orden en que ocurren los eventos. Para ciertos algoritmos lo que
importa es la consistencia interna de los relojes:

• No interesa su cercanía particular al tiempo real (oficial).


• Los relojes se denominan relojes lógicos.

11
Los relojes físicos son relojes que:

• Deben ser iguales (estar sincronizados).


• No deben desviarse del tiempo real más allá de cierta magnitud.

Para sincronizar los relojes lógicos, Lamport definió la relación ocurre antes de (happens-
before):

• Sí “a” y “b” son eventos en el mismo proceso y “a” ocurre antes de “b”, entonces “a –>
b” es verdadero.

“Ocurre antes de” es una relación transitiva: Si “a –> b” y “b –> c”, entonces “a –> c”.

• Si dos eventos “x” e “y” están en procesos diferentes que no intercambian mensajes,
entonces “x –> y” no es verdadero, pero tampoco lo es “y –> x”:

Se dice que son eventos concurrentes.

Necesitamos una forma de medir el tiempo tal que a cada evento “a”, le podamos asociar un
valor del tiempo “C(a)” en el que todos los procesos estén de acuerdo:

Se debe cumplir que:

Sí “a –> b” entonces “C(a) < C (b)”.

El tiempo del reloj, “C”, siempre debe ir hacia adelante (creciente), y nunca hacia atrás
(decreciente).

El algoritmo de Lamport asigna tiempos a los eventos.

Consideramos tres procesos que se ejecutan en diferentes máquinas, cada una con su
propio reloj y velocidad:

El proceso “0” envía el mensaje “a” al proceso “1” cuando el reloj de “0” marca “6”.

El proceso “1” recibe el mensaje “a” cuando su reloj marca “16”.

Si el mensaje acarrea el tiempo de inicio “6”, el proceso “1” considerará que tardó 10 marcas
de reloj en viajar.

El mensaje “b” de “1” a “2” tarda 16 marcas de reloj.

El mensaje “c” de “2” a “1” sale en “60” y llega en “56”, tardaría un tiempo negativo, lo cual es
imposible.

12
El mensaje “d” de “1” a “0” sale en “64” y llega en “54”.

Lamport utiliza la relación “ocurre antes de”:

Si “c” sale en “60” debe llegar en “61” o en un tiempo posterior.

Cada mensaje acarrea el tiempo de envío, de acuerdo con el reloj del emisor.

Cuando un mensaje llega y el reloj del receptor muestra un valor anterior al tiempo en que se
envió el mensaje:

El receptor adelanta su reloj para que tenga una unidad más que el tiempo de envío.

2.2.3.- Usos de la sincronización, manejo de cache, comunicación en grupo, exclusión mutua


elección transacciones atómicas e interbloqueo

Memoria Caché

En los sistemas de archivos convencionales, el fundamento para la memoria caché es la


reducción de la E/S de disco (lo que aumenta el rendimiento), en un SAD el objetivo es
reducir el tráfico en la red. Esquema Básico, el concepto de memoria caché es sencillo, si los
datos necesarios para satisfacer la solicitud de acceso no se encuentran en la memoria
cache, se trae una copia de servicio al usuario y los accesos se llevan a cabo con la copia de
memoria caché.

La idea es conservar allí los bloques de disco de acceso más reciente, para así manejar
localmente los accesos repetidos a la misma información y no aumentar el tráfico de la red.
Se utiliza una política de reemplazo (por ejemplo, la de utilización menos reciente) para
limitar el tamaño de la memoria caché. Políticas de Actualización, la política empleada para
escribir los bloques de datos modificados en la copia maestra del servidor tiene un efecto
decisivo sobre la confiabilidad y el rendimiento del sistema. La política más sencilla consiste
en escribir los datos directamente en el disco tan pronto se coloquen en una memoria caché.
La ventaja de la escritura directa es su confiabilidad, ya que se pierde poca información si un
sistema cliente falla. Sin embargo, esta política requiere que cada acceso de escritura espere
hasta que se envíe la información al servidor, por lo que representa una escritura de escaso
rendimiento. La memoria caché con escritura directa equivale a usar el servicio remoto para
accesos de escritura y explotar la memoria cache únicamente para accesos de lectura. NFS
proporciona el acceso de escritura directa.

Consistencia, una maquina cliente se enfrenta al problema de decidir si una copia de datos
en memoria caché local es consistente con la copia maestra (y por tanto, puede usarse). Si la
maquina cliente determina que sus datos en memoria caché están desfasados, ya no pueden

13
servir para los accesos y hay que colocar en la memoria caché una copia actualizada de los
datos. Existen dos enfoques para verificar la validez de los datos en memoria caché.

Enfoque iniciado por el cliente, el cliente inicia una comprobación de validez, en la cual se
pone en contacto con el servidor y comprueban si los datos locales son consistentes con la
copia maestra.

Enfoque iniciado por el servidor, el servidor anota, para cada cliente, las partes de los
archivos que coloca en memoria cache, y cuando detecta una inconsistencia, debe
reaccionar. Una posible fuente inconsistencia ocurre cuando dos clientes, que trabajan en
modos conflictivos, colocan en memoria caché un archivo.

Comunicación en grupos (Algoritmos Para la Sincronización de Relojes)

Si una máquina tiene un receptor de UTC, todas las máquinas deben sincronizarse con ella.
Si ninguna máquina tiene un receptor de UTC:

• Cada máquina lleva el registro de su propio tiempo.


• Se debe mantener el tiempo de todas las máquinas tan cercano como sea posible. Se
supone que cada máquina tiene un cronómetro que provoca una interrupción “h”
veces por segundo. Cuando el cronómetro se detiene, el manejador de interrupciones
añade “1” a un reloj en software. El reloj en software mantiene un registro del número
de marcas (interrupciones) a partir de cierta fecha acordada antes; al valor de este
reloj se lo llama “C”.

Algoritmo de Cristian

Es adecuado para sistemas en los que:

• Una máquina tiene un receptor UTC, por lo que se la llama despachador del tiempo.
• El objetivo es sincronizar todas las máquinas con ella. Cada máquina envía un
mensaje al servidor para solicitar el tiempo actual, periódicamente, en un tiempo no
mayor que segundos. El despachador del tiempo responde prontamente con unr / 2 d
mensaje que contiene el tiempo actual “CUTC”. Cuando el emisor obtiene la respuesta
puede hacer que su tiempo sea “CUTC”. Un gran problema es que el tiempo no puede
correr hacia atrás.
• “CUTC” no puede ser menor que el tiempo actual “C” del emisor.
• La atención del requerimiento en el servidor de tiempos requiere un tiempo del
manejador de interrupciones.
• También se debe considerar el tiempo de transmisión. El cambio del reloj se debe
introducir de manera global.
• Si el cronómetro genera 100 interrupciones por segundo:

Cada interrupción añade 10 mseg al tiempo.

Para atrasar solo agregaría 9 mseg.


14
Para adelantar agregaría 11 mseg.

La corrección por el tiempo del servidor y el tiempo de transmisión se hace midiendo en el


emisor:

• El tiempo inicial (envío) “T0”.


• El tiempo final (recepción) “T1”.
• Ambos tiempos se miden con el mismo reloj. El tiempo de propagación del mensaje
será (T1 - T0) / 2. Si el tiempo del servidor para manejar la interrupción y procesar el
mensaje es “I”:
• El tiempo de propagación será (T1 - T0 - I) / 2. Para mejorar la precisión:
• Se toman varias mediciones.
• Se descartan los valores extremos.
• Se promedia el resto. El tiempo de propagación se suma al tiempo del servidor para
sincronizar al emisor cuando éste recibe la respuesta.

Algoritmo de Berkeley:

En el algoritmo de Cristian el servidor de tiempo es pasivo. En el algoritmo de Berkeley el


servidor de tiempo activo. Realiza un muestreo periódico de todas las máquinas para
preguntarles el tiempo con las respuestas:

Calcula un tiempo promedio.

Indica a las demás máquinas que avancen su reloj o disminuyan la velocidad del mismo
hasta lograr la disminución requerida. Es adecuado cuando no se dispone de un receptor
UTC.

Algoritmos con Promedio:

Los anteriores son algoritmos centralizados. Una clase de algoritmos descentralizados divide
el tiempo en intervalos de re sincronización de longitud fija, El iésimo intervalo:

Inicia en “T0 + i R” y va hasta “T0 + (i + 1) R”.

“T0” es un momento ya acordado en el pasado.

“R” es un parámetro del sistema.

Al inicio de cada intervalo cada máquina transmite el tiempo actual según su reloj. Debido a
la diferente velocidad de los relojes las transmisiones no serán simultáneas. Luego de que
una máquina transmite su hora, inicializa un cronómetro local para reunir las demás
transmisiones que lleguen en cierto intervalo “S”. Cuando recibe todas las transmisiones se
ejecuta un algoritmo para calcular una nueva hora para los relojes. Una variante es
promediar los valores de todas las demás máquinas. Otra variante es descartar los valores
extremos antes de promediar (los “m” mayores y los “m” menores). Una mejora al algoritmo
considera la corrección por tiempos de propagación.
15
Varias Fuentes Externas de Tiempo

Los sistemas que requieren una sincronización muy precisa con UTC se pueden equipar con
varios receptores de UTC. Las distintas fuentes de tiempo generaran distintos rangos
(intervalos de tiempo) donde “caerán” los respectivos UTC, por lo que es necesaria una
sincronización. Como la transmisión no es instantánea se genera una cierta incertidumbre en
el tiempo. Cuando un procesador obtiene todos los rangos de UTC. Verifica si alguno de
ellos es ajeno a los demás y de serlo lo descarta por ser un valor extremo.

• Calcula la intersección (en el tiempo) de los demás rangos.

• La intersección determina un intervalo cuyo punto medio será el UTC y la hora del reloj
interno. Se deben compensar los retrasos de transmisión y las diferencias de velocidades de
los relojes. Se debe asegurar que el tiempo no corra hacia atrás. Se debe re sincronizar
periódicamente desde las fuentes externas de UTC.

Exclusión Mutua:

Cuando un proceso debe leer o actualizar ciertas estructuras de datos compartidas:

• Primero ingresa a una región crítica para lograr la exclusión mutua y garantizar que ningún
otro proceso utilizará las estructuras de datos al mismo tiempo. En sistemas
monoprocesadores las regiones críticas se protegen con semáforos, monitores y similares.
En sistemas distribuidos la cuestión es más compleja.

Un Algoritmo Centralizado:

La forma más directa de lograr la exclusión mutua en un sistema distribuido es simular a la


forma en que se lleva a cabo en un sistema monoprocesador. Se elige un proceso
coordinador. Cuando un proceso desea ingresar a una región crítica. Envía un mensaje de
solicitud al coordinador:

Indicando la región crítica.

Solicitando permiso de acceso.

• Si ningún otro proceso está en ese momento en esa región crítica:


 El coordinador envía una respuesta otorgando el permiso.
• Cuando llega la respuesta el proceso solicitante entra a la región crítica. Si un proceso
pide permiso para entrar a una región crítica ya asignada a otro proceso: El
coordinador no otorga el permiso y encola el pedido. Cuando un proceso sale de la
región crítica envía un mensaje al coordinador para liberar su acceso exclusivo: El
coordinador extrae el primer elemento de la cola de solicitudes diferidas y envía a ese
proceso un mensaje otorgando el permiso, con lo cual el proceso queda habilitado
para acceder a la región crítica solicitada. Es un esquema sencillo, justo y con pocos
mensajes de control. La limitante es que el coordinador puede ser un cuello de botella
16
y puede fallar y bloquear a los procesos que esperan una respuesta de habilitación de
acceso.

Un Algoritmo Distribuido:

El objetivo es no tener un único punto de fallo (el coordinador central). Un ej. Es el algoritmo
de Lamport mejorado por Ricart y Agrawala. Se requiere un orden total de todos los eventos
en el sistema para saber cuál ocurrió primero. Cuando un proceso desea entrar a una región
crítica: Construye un mensaje con el nombre de la región crítica, su número de proceso y la
hora actual. Envía el mensaje a todos los demás procesos y de manera conceptual a él
mismo. Se supone que cada mensaje tiene un reconocimiento. Si el receptor no está en la
región crítica y no desea entrar a ella, envía de regreso un mensaje o.k. al emisor. Si el
receptor ya está en la región crítica no responde y encola la solicitud. Si el receptor desea
entrar a la región crítica pero aún no lo logró, compara. La marca de tiempo del mensaje
recibido con, la marca contenida en el mensaje que envió a cada uno. La menor de las
marcas gana. Si el mensaje recibido es menor el receptor envía un o.k. Si su propio
mensaje tiene una marca menor el receptor no envía nada y encola el pedido. Luego de
enviar las solicitudes un proceso: Espera hasta que alguien más obtiene el permiso. Cuando
llegan todos los permisos puede entrar a la región crítica. Cuando un proceso sale de la
región crítica: Envía mensajes o.k. a todos los procesos en su cola. Elimina a todos los
elementos de la cola. La exclusión mutua queda garantizada sin bloqueo ni inanición. El
número de mensajes necesarios por entrada es “2(n - 1)”, siendo “n” el número total de
procesos en el sistema. No existe un único punto de fallo sino “n”. Si cualquier proceso falla
no responderá a las solicitudes. La falta de respuesta se interpretará como negación de
acceso: o Se bloquearán los siguientes intentos de los demás procesos por entrar a todas las
regiones críticas. Se incrementa la probabilidad de fallo en “n” veces y también el tráfico en la
red. Se puede solucionar el bloqueo sí. El emisor espera y sigue intentando hasta que
regresa una respuesta o el emisor concluye que el destinatario está fuera de servicio. Otro
problema es que se utilizará una primitiva de comunicación en grupo o, cada proceso debe
mantener la lista de miembros del grupo, incluyendo los procesos que ingresan, los que
salen y los que fallan. Se complica para gran número de procesos. Un importante problema
adicional es que todos los procesos participan en todas las decisiones referentes a las
entradas en las regiones críticas. Se sobrecarga el sistema. Una mejora consiste en permitir
que un proceso entre a una región crítica con el permiso de una mayoría simple de los
demás procesos (en vez de todos): Luego de que un proceso otorgó el permiso a otro para
entrar a una región crítica, no puede otorgar el mismo permiso a otro proceso hasta que el
primero libere su permiso.

Algoritmos de Elección:

Son los algoritmos para la elección de un proceso coordinador, iniciador, secuenciador, etc.
El objetivo de un algoritmo de elección es garantizar que iniciada una elección ésta concluya
con el acuerdo de todos los procesos con respecto a la identidad del nuevo coordinador.

17
Transacciones Atómicas: Las técnicas de sincronización ya vistas son de bajo nivel:

El programador debe enfrentarse directamente con los detalles de:

• La exclusión mutua.
• El manejo de las regiones críticas.
• La prevención de bloqueos.
• La recuperación de fallas.

Se precisan técnicas de abstracción de mayor nivel que:

• Oculten estos aspectos técnicos.


• Permitan a los programadores concentrarse en los algoritmos y la forma en que los
procesos trabajan juntos en paralelo.
• Tal abstracción la llamaremos transacción atómica, transacción o acción atómica. La
principal propiedad de la transacción atómica es el “todo o nada”:
 se hace todo lo que se tenía que hacer como una unidad o no se hace nada.

2.3.- Nominación característica y estructuras

Nominación:

La nominación es una correspondencia entre objetos de datos lógicos y físicos. Por ejemplo,
los usuarios tratan con objetos de datos lógicos representados por nombre de archivos,
mientras que el sistema manipula bloques de datos físicos almacenados en las pistas de los
discos. Generalmente un usuario se refiere a un archivo utilizando un nombre, el cual se
transforma en un identificador numérico de bajo nivel, que a su vez se corresponde con
bloques en disco. Esta correspondencia multinivel ofrece a los usuarios la abstracción de un
archivo, que oculta los detalles de cómo y dónde se almacena el archivo en disco.

En un SAD transparente se agrega una nueva dimensión de abstracción, la ocultación de la


ubicación de los archivos de la red. En un sistema de archivos convencionales la función de
nominación produce como resultado un intervalo de direcciones en disco, en un SAD este
intervalo crece para incluir la máquina específica en cuyo disco se almacena el archivo. Si se
extiende un poco más el tratamiento de los archivos como abstracciones, llegamos a la
posibilidad de réplicas de archivos. Dado un nombre de archivo, la correspondencia devuelve
un conjunto de posiciones de las réplicas de este archivo. En esta abstracción se ocultan
tanto la experiencia de copias como su ubicación.

Estructuras de Nominación:

Existen dos conceptos que hay que distinguir en relación con la correspondencia de nombres
en un SAD.

18
Transparencia de Nominación, El nombre de archivo no revela ningún indicio sobre de la
ubicación del almacenamiento físico del archivo.

Independencia de Ubicación, No es necesario modificar el nombre de un archivo cuando


cambia su ubicación en el almacenamiento físico.

Esquema de Nominación:

Hay tres enfoques principales para los esquemas de nominación en un SAD. En el enfoque
más sencillo, los archivos se nombran con una combinación del nombre de su anfitrión y su
nombre local, lo que garantiza un nombre único dentro de todo el sistema. Por ejemplo, en
Ibis, un archivo se identifica de manera única con el Nombre Anfitrión Local, donde nombre
local es una ruta semejante a las de UNIX.

El segundo enfoque popularizado por el sistema de archivos de red (NFS, Network File
System) de sun, ofrece una forma de unir directorios remotos a directorios locales, lo que da
la apariencia a un árbol de directorios coherentes.

El tercer enfoque es la estructura más compleja y difícil de mantener en la NFS, ya que


cualquier directorio se puede unir a cualquier árbol de direcciones locales y la jerarquía
resultante puede estar poco estructurada.

2.3.2.- Tipos de nombres usuario y de sistema

Tipos de nombre de usuario:

En sentido general, un usuario es un conjunto de permisos y de recursos (o dispositivos) a


los cuales se tiene acceso. Es decir, un usuario puede ser tanto una persona como una
máquina, un programa, etc.

 Usuario final: El usuario final de un producto informático (bien sea hardware o


software), es la persona a la que va destinada dicho producto una vez que ha
superado las fases de desarrollo correspondientes.

Normalmente, el software se desarrolla pensando en la comodidad del usuario final, y


por esto se presta especial interés y esfuerzo en conseguir una interfaz de usuario lo
más clara y sencilla posible.

 Usuario registrado: Se denomina así a la persona que tiene derechos especiales en


algún servicio de Internet por acreditarse en el mismo mediante un identificador y una
clave de acceso, obtenidos con previo registro en el servicio, de manera gratuita o de
pago. Normalmente, un usuario registrado tiene asignada una cuenta propia que
mantiene información personalizada del usuario en el servidor, (como puede ser

19
dirección de e-mail y espacio correspondiente). También puede dar acceso a ciertos
contenidos no accesibles al público en general, como por ejemplo un usuario
registrado en un periódico on-line con acceso por suscripción.

 Usuario anónimo: Es usuario anónimo en informática aquel que navega en sitios web
(o usa cualquier servicio de la red) sin autenticarse como usuario registrado. En
algunos servicios en Internet se dispone de un modo de uso como usuario registrado y
otro como usuario anónimo; normalmente, el usuario registrado goza de mayores
privilegios.

El anonimato en Internet es uno de sus puntos fuertes, a la vez que motivo habitual de
discusión. A los usuarios les gusta sentirse libres para expresarse, mientras que
ciertos organismos quisieran un mayor control de todo el movimiento por la red para
actuar con más eficacia contra la delincuencia online.

 Usuario "beta tester": En el proceso de desarrollo de software, existe un usuario


intermedio entre el desarrollador y el usuario final que se encarga de comprobar y
testear que el programa trabaje de la forma prevista. La tarea de los Beta Testers es
reportar errores al programador/desarrollador, y es en gran medida responsable de
que el programa llegue al usuario final sin errores.

Tipos de nombre sistema

Sistemas operativos por servicios (visión externa). Esta clasificación es la más comúnmente
usada y conocida desde el punto de vista del usuario final. Esta clasificación se comprende
fácilmente con el cuadro sinóptico que a continuación se muestra: Por Número de Usuarios

 Sistema operativo monousuario: Los sistemas operativos monousuarios son aquéllos


que soportan a un usuario a la vez, sin importar el número de procesadores que tenga
la computadora o el número de procesos o tareas que el usuario pueda ejecutar en un
mismo instante de tiempo. Las computadoras personales típicamente se han
clasificado en este renglón.

En otras palabras los sistemas monousuarios son aquellos que nada más puede
atender a un solo usuario, gracias a las limitaciones creadas por el hardware, los
programas o el tipo de aplicación que se esté ejecutando.

 Sistema operativo multiusuario: Los sistemas operativos multiusuarios son capaces de


dar servicio a más de un usuario a la vez, ya sea por medio de varias terminales
conectadas a la computadora o por medio de sesiones remotas en una red de
comunicaciones. No importa el número de procesadores en la máquina ni el número
de procesos que cada usuario puede ejecutar simultáneamente.
20
En esta categoría se encuentran todos los sistemas que cumplen simultáneamente las
necesidades de dos o más usuarios, que comparten mismos recursos. Este tipo de
sistemas se emplean especialmente en redes. En otras palabras consiste en el
fraccionamiento del tiempo (timesharing).

Por el número de tareas:

 Sistema operativo mono tarea. Los sistemas mono tarea son aquellos que sólo
permiten una tarea a la vez por usuario. Puede darse el caso de un sistema
multiusuario y mono tarea, en el cual se admiten varios usuarios al mismo tiempo pero
cada uno de ellos puede estar haciendo solo una tarea a la vez.

Los sistemas operativos mono tareas son más primitivos y, solo pueden manejar un
proceso en cada momento o que solo puede ejecutar las tareas de una en una.

 Sistema Operativo Multitarea. Un sistema operativo multitarea es aquél que le permite


al usuario estar realizando varias labores al mismo tiempo.

Es el modo de funcionamiento disponible en algunos sistemas operativos, mediante el cual


una computadora procesa varias tareas al mismo tiempo. Existen varios tipos de multitareas.
La conmutación de contextos (context Switching) es un tipo muy simple de multitarea en el
que dos o más aplicaciones se cargan al mismo tiempo, pero en el que solo se está
procesando la aplicación que se encuentra en primer plano (la que ve el usuario. En la
multitarea cooperativa, la que se utiliza en el sistema operativo Macintosh, las tareas en
segundo plano reciben tiempo de procesado durante los tiempos muertos de la tarea que se
encuentra en primer plano (por ejemplo, cuando esta aplicación está esperando información
del usuario), y siempre que esta aplicación lo permita. En los sistemas multitarea de tiempo
compartido, como OS/2, cada tarea recibe la atención del microprocesador durante una
fracción de segundo.

Un sistema operativo multitarea puede estar editando el código fuente de un programa


durante su depuración mientras compila otro programa, a la vez que está recibiendo correo
electrónico en un proceso en background. Es común encontrar en ellos interfaces gráficas
orientadas al uso de menús y el ratón, lo cual permite un rápido intercambio entre las tareas
para el usuario, mejorando su productividad.

Un sistema operativo multitarea se distingue por su capacidad para soportar la ejecución


concurrente de dos o más procesos activos. La multitarea se implementa generalmente
manteniendo el código y los datos de varios procesos simultáneamente en memoria y
multiplexando el procesador y los dispositivos de E/S entre ellos.

21
La multitarea suele asociarse con soporte hardware y software para protección de memoria
con el fin de evitar que procesos corrompan el espacio de direcciones y el comportamiento
de otros procesos residentes.

Por el número de procesadores:

 Sistema operativo de uniproceso: Un sistema operativo uniproceso es aquél que es


capaz de manejar solamente un procesador de la computadora, de manera que si la
computadora tuviese más de uno le sería inútil. El ejemplo más típico de este tipo de
sistemas es el DOS y MacOS.

 Sistema operativo de multiproceso: Un sistema operativo multiproceso se refiere al


número de procesadores del sistema, que es más de uno y éste es capaz de usarlos
todos para distribuir su carga de trabajo. Generalmente estos sistemas trabajan de
dos formas: simétrica o asimétricamente.
 Asimétrica: Cuando se trabaja de manera asimétrica, el sistema operativo selecciona
a uno de los procesadores el cual jugará el papel de procesador maestro y servirá
como pivote para distribuir la carga a los demás procesadores, que reciben el nombre
de esclavos.
 Simétrica: Cuando se trabaja de manera simétrica, los procesos o partes de ellos
(threads) son enviados indistintamente a cual quiera de los procesadores disponibles,
teniendo, teóricamente, una mejor distribución y equilibrio en la carga de trabajo bajo
este esquema.

Se dice que un thread es la parte activa en memoria y corriendo de un proceso, lo cual puede
consistir de un área de memoria, un conjunto de registros con valores específicos, la pila y
otros valores de contexto.

Un aspecto importante a considerar en estos sistemas es la forma de crear aplicaciones para


aprovechar los varios procesadores. Existen aplicaciones que fueron hechas para correr en
sistemas mono proceso que no toman ninguna ventaja a menos que el sistema operativo o el
compilador detecte secciones de código paralelizable, los cuales son ejecutados al mismo
tiempo en procesadores diferentes. Por otro lado, el programador puede modificar sus
algoritmos y aprovechar por sí mismo esta facilidad, pero esta última opción las más de las
veces es costosa en horas hombre y muy tediosa, obligando al programador a ocupar tanto o
más tiempo a la paralelización que a elaborar el algoritmo inicial.

22
2.3.3.- Resolución y Distribución

La resolución es aquella parte de la regla de actuación que nos indica qué es lo que el SI
debiera hacer en una determinada situación. Es uno o más conceptos cuya ejecución,
realizada por los elementos físicos del sistema, produce un cambio en el entorno.

La distribución es el conjunto de medios empleados para permitir y asegurar el flujo de datos


en un pc.

2.3.4.- Servidores y agentes de nombres

En la actualidad, la ICANN está formalmente organizada como una corporación sin fines de
lucro y de utilidad pública. Está administrada por una Junta de Directores, que está
compuesta por seis representantes de las organizaciones de apoyo, sub-grupos que se
ocupan de las secciones específicas de las políticas de ICANN en virtud de la competencia,
ocho representantes independientes del interés público general, seleccionados a través de
un Comité de Nominaciones que representa a todas las circunscripciones de la ICANN, y el
Presidente y Director Ejecutivo, nombrado por el resto de la Junta.

En la actualidad hay tres organizaciones de apoyo: la GNSO (Generic Names Supporting


Organization) se ocupa de la formulación de políticas sobre dominios genéricos de nivel
superior, ccNSO (Country Code Names Supporting Organization) se ocupa de la elaboración
de políticas relativas a códigos de países en dominios de nivel superior, la ASO (Address
Supporting Organization) se ocupa de la formulación de políticas en direcciones IP.

ICANN también se basa en algunos comités consultivos para recibir asesoramiento sobre los
intereses y necesidades de los interesados que no participen directamente en las
organizaciones de apoyo. Entre ellos figuran el Comité Asesor Gubernamental (GAC), que
está integrado por representantes de un gran número de gobiernos nacionales de todo el
mundo; el ALAC (At-Large Advisory Comité), que está integrado por representantes de
organizaciones de los distintos usuarios de Internet de todo el mundo; el sistema DNS y TLG
(Technical Liaison Group) compuesto por representantes de otras organizaciones técnicas
internacionales de Internet.

23
2.3.5.- Mapeo de direcciones

Para poder ejecutar instrucciones, si no sabemos en qué parte de la memoria estarán


cargado, debemos tener un mecanismo de traducción de direcciones virtuales a reales. Para
ello, se necesitan dos cosas. Primero, el compilador manejará una dirección base más un
desplazamiento al referirse a las instrucciones. Segundo, el sistema operativo asignará como
dirección base el número de página, al paginar al proceso. De esta manera, puede buscarse
el inicio de una página en memoria, sumarle el desplazamiento y así obtener la dirección real
de una instrucción. Nótese que en el diagrama se tiene una tabla de proceso y ahí mismo se
maneja la dirección inicial de la tabla de páginas. En algunos sistemas operativos, estas dos
tablas se manejan por separado.

La traducción de direcciones virtuales para segmentos se maneja de manera similar.

Existe un esquema adicional, paginación/segmentación, que es la combinación de ambos. La


memoria se divide en marcos de página, idealmente más pequeños que el tamaño del marco
de página en un sistema de paginación tradicional. Cada segmento está compuesto por
cierto número de páginas. Es decir, el tamaño del segmento es un múltiplo del tamaño de
página. Este esquema pretende sacar ventaja de los beneficios de los otros dos. Este mismo
mecanismo de traducción de direcciones virtuales puede aplicarse en
paginación/segmentación.

Recordemos que este mapeo debe efectuarse siempre, instrucción por instrucción ejecutada.
Por ello, entre más rápido sea el mecanismo, mejor. Existe una manera de mejorar dicho
mecanismo mediante hardware.

Una memoria asociativa es muy cara, pero permite buscar en toda la memoria en un mismo
pulso de reloj. Implementando memoria asociativa, podemos traducir direcciones para
páginas o segmentos.

Sin embargo, el utilizar memoria asociativa implica que el número de marcos de página y/o el
número de segmentos, se ve limitado por el tamaño de la memoria asociativa. Es decir, no
puede haber más marcos de página que número de celdas en la memoria asociativa. Por
ello, hay sistemas operativos que manejan una combinación de ambos. Se cargan a memoria
las páginas/segmentos más utilizados, y la traducción se utiliza de manera normal.
Solamente en aquellos casos en los que no encontrara la página/segmento en la memoria
asociativa, efectuaría la traducción directa. Para esa instrucción, haría un doble mapeo. Sin
embargo, el principio de localidad nos asegura que esto no sucederá con frecuencia.

2.3.6.- Mapeo de rutas

Roadmapping (mapeo de rutas)


24
El “Technology Roadmapping” o mapeo de rutas tecnológicas, es un método
específicamente desarrollado para la realización de estudios de Prospectiva Tecnológica. El
modelo se basa en las directrices dictadas por las necesidades del mercado ayudando a
identificar, seleccionar y desarrollar con posterioridad las alternativas de tecnología
necesarias para satisfacer un conjunto de necesidades de un producto.

Se trata de una prospectiva por objetivos que, entre otras funciones, ayuda a identificar
necesidades y tecnologías, proporciona información necesaria en la toma de decisiones,
identifica tecnologías críticas o vacías en tecnología que deben llenarse para poder
desarrollar productos con desempeños específicos y analiza el proceso a través del tiempo.

¿Qué es el roadmap?

El Roadmap o “Mapeo de rutas” describe un ambiente futuro, los objetivos que pueden llegar
a obtenerse con ese ambiente y los planes para lograr los objetivos planteados a través del
tiempo. Explicita una estructura, o arquitectura, como una vía para el entendimiento de cómo
las partes de un complejo sistema tecnológico encajan, interactúan y evolucionan. Así
mismo, articula aplicaciones, desafíos tecnológicos y soluciones tecnológicas en forma
conjunta y ayuda a establecer las prioridades para la consecución de los objetivos.

¿Qué es el roadmapping?

La mejor hoja de ruta es creada a partir de un trabajo en equipo, recibiendo las visiones y el
conocimiento de un grupo de personas que llevan a cabo el plan de mapeo de rutas. El
proceso de Roadmapping ayuda al equipo a reunir diversas perspectivas sobre todos los
aspectos del ambiente y del plan. Así mismo ayuda al equipo a construir un consenso para
llevar a cabo el plan de acción. El mapeo de rutas también es la base para la descripción de
los objetivos.

Estructura del roadmapping:

El mapeo de rutas explicita campos de acción y permite trazar directrices para el


planteamiento de acciones orientadas a responder o desarrollar completamente un conjunto
de preguntas:

“Por qué – Qué – Cómo - Cuándo” elementos importantes para poder desarrollar planes y
proyectos de acción en la dirección de los objetivos planteados y alcanzar las metas
buscadas. La siguiente figura describe las cuatro partes de la arquitectura con base en un
mapeo de rutas.

El mapeo de rutas puede ser construido comenzando con la definición de las principales
necesidades del mercado para luego definir las tecnologías necesarias. (Prospectiva por
entradas del mercado). Recíprocamente, al mapeo también puede comenzar con la
definición de tecnologías claves y proseguir con los requerimientos del mercado que pueden
ser satisfechos con esas tecnologías. (Prospectiva por entradas de tecnologías).

25
2.3.7.- Modelo de Terry

Estudio del rendimiento de la factibilidad de nombramiento, el modelo de Terry

Los mensajes remitentes entre los procesos y objetos soportados por un sistema operativo
precisa la presentación para el sistema operativo de los nombres de los objetos que los
procesos quieren ganar acceso a. El problema es cómo localizar objetos nombrados. Esto
está directamente conectado a la gerencia del espacio de nombre y las estructuras de la
facilidad de nombramiento.

Como ha visto, acto de servidores de nombre como agentes obligatorios distribuidos que
amarran el nombre de un objeto para una cierta cantidad de sus propiedades, incluyendo la
posición del objeto. Algunos servidores de nombre pueden almacenar información acerca de
los objetos particulares. Tales servidores de nombre se llaman las autoridades que nombra o
servidores autoritarios de nombre para eso objetan. El problema es cómo distribuir servidores
de nombre, esto es, que de las estructuras de una facilidad de nombramiento es el mejor.

Los criterios diferentes pueden ser tomados en cuenta al desarrollar la facilidad de


nombramiento para sistemas de cómputo distribuidos. En la etapa de análisis de la estructura
de facilidad de nombramiento, usaremos la mayor parte de importante de esos criterios, a
saber actuación. Este criterio es importante para un ambiente distribuido porque que hay
usualmente un número de redes interconectadas (lo mismo es cierto en caso de una red de
área local conectando un número grande de computadoras personales y / o los puestos de
trabajo, y los servidores diferentes), lo cual insinúa que el costo de comunicación entre
clientes y servidores de nombre es el cuello de botella principal en localizar recursos
remotos. En este caso, la actuación de averiguaciones del servidor de nombre es dominada
por el número de servidores de nombre que deben ser a los que se ganó acceso y el costo
de ganar acceso a esos los servidores de nombre.

Los factores que afectan la eficiencia con la cual el espacio de nombre puede ser manejado y
el costo de recuperar información del servidor de nombre son:

El di denota el costo de ejecutar una averiguación en NS, éste costado depende de tales
factores como el tamaño global de la base de datos mantenida por NSi, y la clase de
instalaciones de la base de datos utilizaron. Se asume que se compone con el paso del
tiempo. El cui es el costo de comunicar con NSi de cliente u, depende del sitio en el cual el

26
cliente ejecuta, Este costo depende de tales factores como el número de portales de acceso
atravesados, y la velocidad de líneas de transmisión.

El CUi especifica el costo completo de ganar acceso al servidor de nombre, NSi,


remotamente de cliente u, y sea expresada por la siguiente fórmula:

El costo de recuperar la información del servidor de nombre acerca de un set de denominado


así es que urce s depende de posición del cliente relativo a servidores diversos de nombre y
la mezcla remisiva del cliente y puede ser expresado por la fórmula:

Donde Luk representa el coste total de poner en duda la información en partición de la base
de datos dk, incluir el costo de localizar los datos deseados. Porque estamos interesados en
el costo de recuperar la entrada del servidor de nombre de un objeto individual, ignoraremos
los patrones de acceso del cliente en E (Lu) ‘concentrándose sólo en Luk.

Structures de la facilidad de nombramiento:

Las siguientes estructuras básicas de facilidad de nombramiento para los sistemas


operativos distribuidos han sido identificadas por Terry (1984) e Indulska y Goscinski (1989):

 Una facilidad centralizada de nombramiento


 una facilidad replegada de nombramiento
 una facilidad descentralizada de nombramiento
 una facilidad distribuida de nombramiento
 una facilidad jerárquica de nombramiento.

Nombre. El sistema (5) centralizado, – (6) - el sistema replegado, (7) el sistema


descentralizado con división en los tipos del objeto, (1) completamente distribuyó sistema (2)
recursos locales conocidos en cada nodo y el mensaje emitido por radio pasando para
servidores del recurso en cada nodo, (3) distribuyó sistema (4) recursos locales conocidos en
cada nodo, sistema con creces distribuido dirección del recurso determinó por una función de
hashing que se definió sobre el set de identificadores del recurso, jerárquico -.

Ahora, describiremos estas estructuras de facilidad de nombramiento enfatizando evaluación


de rendimiento. La presentación de estos temas se basa en la actuación que el modelo
desarrolló por Terry, y también por Indulska y Goscinski.

Las instalaciones centralizadas de nombramiento

Una facilidad centralizada de nombramiento es implementada usando un servidor solo de


nombre, lo cual mantiene una mesa o base de datos con tal que el nombre necesario para
ocuparse de mapeos. Este sistema maneja un espacio plano de nombre donde los nombres

27
son cadenas de caracteres no exhibiendo estructura. La base de datos del servidor de
nombre es aumentada registrando servicios, va en procesión, pone a babor (los buzones) y
otros detalles pertinentes que quieren ser públicamente sabidos. Los directorios del archivo
pueden ser considerados como una causa especial de servicio de nombre. En este caso, Sk
= NS. El servidor de nombre contiene que la colección completa de información
aproximadamente toda nombró objetos en el ambiente distribuido. El costo de recuperación
es simplemente Lk = C, dónde la C especifica el coste máximo de ganar acceso a servidor
de nombre NS remotamente por la u más lejana del cliente.

La ventaja de esta estructura de nombramiento es su simplicidad, y la evitación de cualquier


problema de incongruencia que se identificó en algunos sistemas con más que un servidor.
Las desventajas son fiabilidad de punto bajo del sistema enteramente distribuido, y el tráfico
grande los retrasos aéreos y largos en ganar acceso al servidor y antes de iniciar una
transmisión orientada en servicio requerida.

Los sistemas replegados de nombramiento

Una facilidad replegada de nombramiento maneja un espacio plano de nombre también.


Cada nodo de la computadora (el sitio) del sistema distribuido mantiene una copia de la base
de datos con tal que los mapeos del nombre a la dirección necesarios para el sistema entero.
En este caso, Sk = {NS1. . . , NSN } ‘ Porque cada servidor de nombre contiene una”
colección completa ‘ De información aproximadamente toda nombró objetos (los recursos)
del sistema distribuido, cualquier cliente puede interrogar el servidor de nombre físicamente
más cercano, implícito aquí N Smain” que éste significa que el costo de recuperación es
simplemente cañería maestra Lk = C.

Este sistema tiene las siguientes ventajas: Es muy rápido, que no tiene retrasos de levantes
obligatorios de operación, el número de mensajes de orientes obligatorio es cero, y tiene
fiabilidad alta. El problema mantienen consistencia entre copias, nombran problemas de
materialización (si un proceso muere, entonces o un servicio se vuelve agotado) y requisitos
grandes de memoria de cada nodo.

La entrada de la base de datos de nombre orientó descentralizó sistemas

Una entrada de la base de datos de nombre orientó descentralizó sistema también maneja
un espacio plano de nombre, pero cada entrada del servidor de nombre es almacenada en
algún sitio arbitrario. En este caso, Sk = { NS ¡ }. Tal solución para una estructura de facilidad
de nombramiento insinúa que el almacenamiento y los problemas de consistencia,
mencionadas en el acercamiento previo, son evitados. Ésta es la ventaja principal de esta
estructura. El inconveniente de este sistema localiza los datos deseados, porque eso arruine
necesite interrogar cada servidor de nombre. Por término medio, la mitad de servidores de
nombre deben ser a los que se ganó acceso para recuperar información del objeto.

Dado que los saques de nombre son puestos en duda en la ordenación numérica, la
recuperación costada es como sigue:
28
Este sistema es valioso en términos de búsquedas del servidor de nombre.

Una modificación simple del citado anteriormente sistema es la facilidad distribuida de


nombramiento. En este sistema cada nodo de la computadora (el sitio) mantiene una base de
datos con tal que la dirección - nombre necesaria haciendo mapas para sus propios objetos
locales (los procesos, los puertos, los servicios, los recursos). Este sistema requiere difundir
en la red el nombre de un objeto pedido.

Ninguno de los sistemas descritos anteriormente es muy práctico para sistemas distribuidos
grandes. La situación puede ser mejorada añadiendo estructura para el nombre de un objeto.
Esta estructura debería reflejar la autoridad de la gerencia para el nombre.

Los sistemas descentralizados de nombramiento

Una facilidad descentralizada de nombramiento es implementada usando un número de


servidores de nombre operando en los dominios estrictamente definidos. La estructura se
agrega para el nombre de un objeto (resource’s) para reflejar la autoridad de la gerencia para
el nombre. La siguiente convención de nombramiento puede ser usada:

El servidor (1) correcto de @ nombre de _ nombre, donde _ el servidor de nombre identifica


el servidor de nombre esto es responsable para información directiva acerca del objeto, y _ el
nombre (2) correcto sin ambigüedades identifica el objeto en el contexto de la autoridad que
nombra.

Si los servidores de nombre son sin ambigüedades nombrados luego el nombre completo _
servidor correcto de @ nombre de _ nombre es globalmente inequívoco. La gerencia efectiva
de tal espacio de nombre siguiendo esta convención de nombramiento requiere que cada
servidor de nombre sabe la posición de otros servidores de nombre.

Hay avances diferentes para descentralizar un espacio de nombre:

La partición de discos (1) geográfica (el reconocimiento médico): Si el sistema está


compuesto de redes de área local múltiples conectadas de por ahí cruzan s y portales de
acceso, entonces es natural tener un servidor de nombre para cada red; Y La partición de
discos (2) organizativa (funcional): La partición del sistema entero en los dominios puede
estar hecha con base en organizaciones.

Básicamente dividieron en partes nombrando sistemas individuales mapeo existe entre


particiones de la base de datos y servidores de nombre, esto es, = la N de kilobyte y Sk =
{ NSk }. Tal estructura requiere dos accesos para obtener la información acerca de un objeto
dado (el recurso): Uno para hallar la autoridad que nombra y uno para ganar acceso a los
datos. Sólo un acceso es menester cuando la información deseada de nombramiento es
29
almacenada en el servidor primario de nombre, N Smain. El costo de búsqueda es expresado
por la fórmula:

Organizacionalmente dividieron en partes nombrando sistemas las particiones de la base de


datos corresponda a las organizaciones en vez de servidores de nombre. Cada servidor de
nombre puede ser la autoridad para algún subconjunto de las organizaciones. En este caso
los nombres toman la forma @ organización correcta de _ nombre en la cual la autoridad
para asignar nombres es explícitamente reconocida. En este caso el servicio de nombre
puede ser con holgura uso reconfigurado del beca la asignación de objeto nombres es
independiente de la asignación de la responsabilidad para mantener información acerca de
los objetos.

Consideremos los costos de búsqueda. Suponga, por el momento, que los datos de cada
organización están bajo la dirección de un servidor solo de nombre al igual que con un
espacio de nombre físicamente subdividido, Sk = { NSJ. Para eficazmente ganar acceso a
información acerca de un objeto dado, cada servidor de nombre debería saber cuál servidor
de nombre tiene responsabilidad para cada organización. Basadas en esta estructura, las
averiguaciones del servidor de nombre pueden ser tramitadas en pasos dobles como en
sistemas de nombramiento físicamente subdivididos.

El costo de búsqueda es expresado como sigue:

Dos recuperaciones de la base de datos son siempre precisadas desde que un servidor de
nombre no puede determinar de todos modos es la autoridad para los datos deseados sin
consultar la base de datos local. Si el servidor primario de nombre puede recuperar y puede
devolver la entrada del servidor de nombre directamente al descubrir que es el sitio de
almacenamiento para los datos deseados, entonces luego.

Una de las ventajas más importantes de un espacio de nombre de organizacional-Partición


es la facilidad con la cual la información replegada de nombramiento puede ser acomodada.
Esto quiere decir que la base de datos del servidor de nombre puede a medias ser
redundante. Del punto de la gerencia de vista, la copia soportadora requiere que el algoritmo
de búsqueda describió arriba esté extendido de tal manera en lo que se refiere a reconocer
varios servidores autoritarios de nombre para cada organización en vez de uno responsable
solo. Como consecuencia, cada servidor de nombre debería saber la colección completa de
servidores autoritarios de nombre para cada organización, Sk. Un ejemplo de un sistema
basado en este acercamiento es el sistema Grapevine (Birrell Et Al. 1982).

El costo de búsqueda del servidor de nombre viene bien

Esta fórmula fue desarrollada en la suposición que el servidor autoritario más cercano de
nombre puede ser determinado con costo insignificante. El costo para un sistema con datos
replegados debería estar menos del costo pues un sistema con espacio de nombre de
organizacional-Partición desde que el servidor de nombre ganó acceso a por clientes

30
diversos, N Smink puede diferir de cliente para el cliente, considerando en el caso previo
cada cliente se ve forzado a ganar acceso al mismo servidor de nombre.

La influencia de la copia de datos puede ser ilustrada por un ejemplo muy simple. Deje la R
ser número de materiales noticiosos, R~N, distribuido uniformemente, esto es, R servidores
autoritarios de nombre está seleccionado al azar para cada partición de la base de datos.
Doy por supuesto que los servidores de nombre son ordenados algo semejante que C<C
para yo < la j y NS. = NS.. Esta suposición no insinúa cualquier pérdida de generalidad.

Los sistemas jerárquicos de nombramiento:

Una facilidad jerárquica de nombramiento es una extensión del sistema previo por nombres
estructurados de dos partes extensibles para los nombres jerárquicos consistente en más
que dos partes. Hay dos avances básicos: El número fijo de estratos, o una jerarquía
arbitraria. Con gerencia jerárquica del espacio de nombre, los datos completos (Sk para toda
k) de configuración del servidor de nombre no necesitan guardarse en cada servidor de
nombre. Es suficiente que cada tienda del servidor de nombre lo suficientemente sólo
información localizar los servidores autoritarios de nombre para el nivel de la parte superior
de la jerarquía. Los servidores nivelados máximos de nombre deberían saber que los
servidores autoritarios de nombre para el nombre espacian subárboles directamente bajo su
control administrativo. Un análisis de estructuras jerárquicas de nombramiento puede ser
realizado por recursivamente aplicar las técnicas para los nombres de dos partes. Considere
un sistema usando los nombres de la forma _ nombre local: El dominio: La organización, esto
es, una jerarquía con tres niveles.

31

También podría gustarte