Práctica Sistemas Distribuidos (Sistemas Operativos)

De Cuba-Wiki

Plantilla:Back

Ejercicio 01:

Esta resuelto en la practica:
f = 40 MHz por lo tanto t = 1 / f = 0.025 ns
El total de instrucciones es de 100.000
El total de ciclos del programa es
45.000 * 1 + 32.000 * 2 + 15.000 * 2 + 8.000 * 2 = 155.000
Luego el promedio CPI es de 1,55 ciclos/instrucción
Ahora bien, sabemos que
MIPS = Ic / ( T * 106 ) millones de instrucciones por segundo (1)
Calculemos T
T = CPI * Ic * t = 1,55 * 100.000 * 0.025 ns = 3.875 ns = 3,875 ms = 0,003875 segundos
Luego reemplazando en (1) se tiene
MIPS = 100.000 / ( 0,003875 * 1.000.000 ) = 25,8
Luego,
CPI = 1,55 promedio de ciclos por instrucción
MIPS = 25,8 millones de instrucciones por segundo
Tiempo de ejecución = 3,875 ms

Ejercicio 02:

Pag 6
Ventajas
Economía : Los microprocesadores ofrecen mejor proporción de precio/rendimiento que los mainframe.
Velocidad : Un Sistema Distribuido puede tener un mayor poder de cómputo que un mainframe ya que al agregar otra terminal, se incrementa dicha potencia mientras que en el mainframe hay que cambiar el procesador por otro más veloz, y esto no siempre es posible.
Distribución inherente : Algunas aplicaciones poseen una distribución inherente a sí mismas, por ejemplo las diferentes sucursales de un supermercado operan casi totalmente en base a operaciones y decisiones locales y necesitan comunicarse entre sí solo en lo que respecta a intercambio de información.
Confiabilidad : Si una máquina falla, el sistema sobrevive en un gran porcentaje. Crecimiento incremental : Se puede añadir poder de cómputo en pequeños incrementos agregando más computadoras.


Desventajas
Software : Existe poco software para sistemas distribuidos en la actualidad.
Redes : La red se puede saturar o causar otros problemas como ser pérdida de mensajes, ruido en la línea, etc.
Seguridad : Si bien el poder compartir los datos es una ventaja se torna también en un problema la privacidad de los mismos

Ejercicio 03:

Pag 3
Multicomputadoras: Computadoras independientes, muy a menudo una de ellas actúa como supervisor, que realizan una tarea común en una sola ubicación.
Multiprocesadores: Un conjunto de unidades de cómputo, cada una de las cuales tiene sus propios conjuntos de instrucciones y datos, compartiendo una misma memoria.
Un multiprocesador es fuertemente acoplado, una multicomputadora no. Los multiprocesadores se comunican atravez de memoria compartida, que es mas rapido que el mecanismo que utilizan las multicomputadoras que es enviarse mensajes entre ellas.
NOTA: Estaria bueno poner mas diferencias/contrastar las dos cosas, y no solo dar la definicion de cada una.

Ejercicio 04:

NOTA: No estoy seguro de lo siguiente
Ademas de poseer una memoria coherente, los semaforos para funcionar necesitan contar con la instruccion TestAndSet o Swap que se ejecute de forma atomica. Si este sistema cuenta con tal funciones, que se ejecuten de forma atomica, es posible implementar semaforos, si no en principio no seria posible.

OTRA respuesta Para mi la pregunta apuntaba a que los monitores de cache son transparentes para el programador, entonces la respuesta es si.

Ejercicio 05:

Pag 8
La desventaja es que teniendo n CPU y n Memorias, se necesitan n^2 conmutadores. Si n es grande el costo puede ser prohibitivo.

Ejercicio 06:

En una retícula de 16 x 16 el mayor retraso posible sería de 16 saltos. Crece como la raiz cuadrada del numero de CPU (Tanenbaum Sistemas operativos modernos, pag 423)

Ejercicio 07:

Crece como el log(n), donde n es la cantidad de CPU en el hipercubo

Ejercicio 08:

Como hay 4096 CPUs,existen 12 etapas de conmutacion. (son log(nros CPUs) ) Tiempo de ejecucion de una instruccion es : 20 nano segundos (sale de regla de tres simple de los 50MIPS)

como hay 12 etapas, tiene que ir y volver. En total serian 24 usos de los conmutadores. Cada conmutador tiene que tardar 0.833 nano segundos, para que la solicitud valla y regre en un tiempo de instruccion.

Ejercicio 09:

Pag 10
Significa que todas las personas piensen que la colección de máquinas sea un sistema de tiempo compartido de un solo procesador. Se puede lograr en dos niveles distintos:
1) Ocultar la distribución a los usuarios. El usuario no tiene por qué saber que la ejecución, por ejemplo, de una serie de compilaciones se realiza en paralelo en distintas máquinas.
2) Transparencia al sistema para los programas. Lograr diseñar la interfaz de llamadas al sistema de modo que no sea visible la existencia de varios procesadores.

Ejercicio 10:

Pagina 9/10.
Un sistema distribuido son muchas computadoras que simulan una sola computadora virtual, que permite acceso simultaneo a muchos usuarios, y ejecutar muchos programas. Un sistema de red son muchas computadoras, las cuales permiten a un usuario acceder a un computadora remota atravez de un login. Ademas las mismas tienen un alto grado de autonomia. Y no suelen trabajar cooperativamente entre todas para ejecutar los programas de los usuarios.

Ejercicio 11:

Pag 11
Todos los servicios del SO se implementan por lo general como servidores a nivel usuario. Es precisamente esta capacidad de añadir, eliminar y modificar servicios lo que da al microKernel su flexibilidad.

Ejercicio 12:

NOTA: Esta es la definicion para sistemas distribuidos. Para Sist. Centralizados la concurrencia se maneja como se vio en los temas anteriores. Pag 11
Varios usuarios pueden compartir recursos de manera automática. El S.O. asegura un acceso secuencial no concurrente.

Es discutible, porque si el S.O. asegura un acceso secuencial no concurrente no existirian los semaforos,monitores,etc. Para mi la respuesta es no. Igual la pregunta es horrible como todas las preguntas de la practica.

Ejercicio 13:

Suponemos que los servidores replicados son independientes.
P(Disponible i) = 3/4.
Un servidor esta disponible o no disponible
P(No Disponible i) + P(Disponible i) = 1 ==>
P(No Disponible i) + 3/4 = 1 ==>
P(No Disponible i) = 1/4
Que halla disponibilidad significa que halla al menos un servidor disponible.
P(Disponibilidad) = P(Existe al menos un i disponible) = 1 - P(No existe ningun un i disponible) = x ser independientes P(No Disponible i)^Cantidad_de_Servidores = 1/4 ^ Cantidad_de_Servidores
yo quiero que:
P(Disponibilidad) >= 0.99 <=>
P(No Disponibilidad) <= 0.01 <=>
P(No Disponibilidad) = 1/4 ^ Cantidad_de_Servidores <= 0.01 <=>
ln 1/4 ^ Cantidad_de_Servidores <= ln 0.01 <=>
Cantidad_de_Servidores * ln (1/4) <= ln 0.01 <=>
Cantidad_de_Servidores >= ln 0.01 / ln (1/4) <=>
Cantidad_de_Servidores >= 3,3219280948873623478703194294894 <=>
como Cantidad_de_Servidores debe ser un numero entero y positivo Cantidad_de_Servidores >= 4.

Ejercicio 14:

NOTA: No estoy para nada seguro de esta respuesta.
Que halla (por ejemplo) dependencias entre los archivos a compilar, y que para compilar el nesimo archivo se necesite tener compilado el nesimo menos uno.
Otra razon valida podria ser, el sistema tiene n procesadores, pero en ningun lugar aclara que estan libres, y pueden ser utilizados en este momento.


Segun Graciela Pataro: Las demoras física y lógicas por transmitir los datos entres los procesadores.

Ejercicio 15:

NOTA: Revisar esta pregunta... Si si ya se, para que respondo si no me las creo ni yo?
Por que si se hiciera eso se perderia la independencia de las capas. Complicando asi su implementacion. Es similar a la diferencia entre monolotico vs microkernel.


Otra opinión: Si usaramos un solo encabezado, entonces nos veriamos forzados a usar este único protocolo en todas las transmisiones en todas las computadoras, en cambio de la otra manera podemos utilizar diverson protocolos, cada uno con distintas virtudes/defectos u orientaciones.

Otra mas : las capas fueron pensadas a futuro, osea que no sean limitantes respecto a tecnologia. Por ejemplo tener menos capas podria hacer que se necesite ¨algo mas¨ y esto sea lo ¨limitante¨ (pensar como pusieron en la segunda opinion,con una sola capa)

Ejercicio 16:

Pag 13
Se dice que un sistema es abierto cuando está preparado para comunicarse con cualquier otro sistema abierto mediante estándares que gobiernan el formato, contenido y significado de los mensajes enviados y recibidos.

Ejercicio 17:

Cap. 20 - Pag. 13

Basicamente un protocolo es un acuerdo en como debe llevarse la comunicacion. El modelo OSI distingue entre dos tipos de protocolos:

Orientados a conexión: Establecen una conexion explicita entre Sender y Receiver y posiblemente negociacion de que protocolo van a utilizar. (Ej. Telefono)

Orientados sin conexion: No se realiza ningun tipo de negociacion previa, se envian los datos cuando el Sender esta listo.

Ejercicio 18:

Cap. 20 - Pag 10.

Los Sistemas Distribuidos permiten La Migración de Datos, La Migración de Procesos y La Migración de Trabajos.

- Migración de Datos : cuando un usuario remoto requiere un archivo existen dos maneras de satisfacerlo. Una es enviarle el archivo entero y la otra es enviarle la porción que necesita, si luego necesita más se le enviará. En el primer caso cuando haya modificado el archivo lo reenviará completo, en el segundo reenviará las porciones modificadas.

- Migración de Procesos : en muchos casos es preferible, cuando los archivos son muchos o de gran volumen,transferir los procedimientos. Aquí también tenemos dos alternativas : una es que un procedimiento invoque una necesidad a otro en el sitio remoto y que éste la satisfaga (Remote Procedure Call) y la otra es que un proceso envíe un mensaje al sitio remoto y allí se genere un nuevo proceso que satisfaga sus necesidades.

- Migración de Trabajos : significa la transferencia directa de Trabajos de un nodo a otro, con lo cual se puedelograr :

   - balancear el sistema
   - subdivisión de tareas que ejecutan en forma concurrente
   - uso de mejor o nuevo hardware
   - uso de mejor o nuevo software

Ejercicio 19:

Pag 7?
Todas. Los sistemas operativos/arquitecturas no influyen en la implementacion de un sistema distribuido.

Otra Rta: Segun el libro, los sistemas distribuidos son mas usuales las arquitecturas MIMD, ya sea fuertemente acoplado (varios cores o procesadores en una sola maquina) o debilmente acoplado (varias computadoras interconectadas).

Ejercicio 20:

a) La comunicación en un S.O. de red se implementa con memoria compartida
Falso. Los S.O. de red se comunican atravez de mensajes, ya que sus distintas CPUs no tienen por que compartir la memoria siquiera.
b) Un S.O. multiprocesador implementa la comunicación con pasajes de mensajes
Falso. Esto es posible, pero normalmente se suele utilizar memoria compartida ya que es un metodo mucho mas veloz y eficiente.
c) Archivos compartidos es el "mecanismo de comunicación" en un sistema distribuido
Falso. En un sistema distribuido las computadoras se comunican atravez de mensajes.
d) Una forma de implementar la comunicación entre procesos es a través de RPC
Falso. Esto es una forma de utilizar un recurso de otra computadora, no de intercambiar mensajes. Ademas el RPC para funcionar necesita que la comunicacion entre procesos ya este implementada, pues usa las primitivas send y recive.

Ejercicio 21:

Cap. 20 - Pag 11.

El microKernel es flexible pues casi no hace nada. Proporciona cuatro servicios mínimos:

1) Un mecanismo de comunicación entre procesos. 2) Cierta administración de la memoria. 3) Una cantidad limitada de planificación y administración de procesos de bajo nivel. 4) Entrada/Salida de bajo nivel.

No provee (a diferencia del nucleo monolítico) el sistema de archivos, el sistema de directorios, la administración completa de los procesos ni gran parte del manejo de las llamadas al sistema.

Ejercicio 22:

a) único esquema de protección de recursos
Correcto (ver Cap 20. Pag 9 "Caracteristicsas".
b) igual mecanismo de administración de procesos en todo el sistema
Correcto (ver Cap 20. Pag 9 "Caracteristicsas".
c) varios mecanismos de comunicación de procesos
Falso. Debe existir uno único.
d) misma interfase al sistema operativo en todos los nodos
Correcta.
e) transparencia a nivel usuario y a nivel programa
Correcta.
f) flexibilidad
Correcta. Aunque faltaria aclarar flexibilidad con respecto a que.
g) brindar la ilusión al usuario de varios computadores virtuales
Incorrecta. Se trata de dar la ilusion de una sola computadora virtual.

Ejercicio 23:

Qué diferencia existe entre la confiabilidad de un sistema distribuido y la seguridad de acceso a información del mismo ?

La seguridad de acceso a la informacion es solo una parte de lo que se llama confiabilidad en un sistema distribuido. Las otras son, por ejemplo, la disponibilidad (tiempo q el sistema esta disponible), redundancia (duplicar soft y hard) y la tolerancia a fallas.

Ejercicio 24:

Por "Transparencia" de un sistema distribuido debe entenderse (marque la falsa):

a)- la ilusión de una única máquina virtual b)- la facilidad de migración de recursos c)- la imposibilidad de conocer la ubicación real de los recursos d)- el desconocimiento de sobre cuál CPU se ejecutarán cada una de las tareas e)- la provisión de mecanismos de tolerancia a fallas del sistema f)- todas g)- ninguna

Pag. 11

Rta.: "G"

Ejercicio 25:

Las ventajas que provee un sistema distribuido respecto de computadoras aisladas son (marque la falsa):
a)- compartir datos
b)- compartir recursos
c)- comunicación
d)- velocidad
e)- flexibilidad
f)- todas
g)- ninguna

En ciertas circunstancias pueden ser todas. Pero la d y la e no siempre se dan. Si vamos a ser puristas con el libro, que es finalmente de donde se basan para corregir, la correcta s la "G". Ver Pagina 6

Ejercicio 26:

26) Indique si la siguiente frase es falsa o verdadera:
" En un sistema fuertemente acoplado la demora al enviar un mensaje de un nodo a otro es pequeña y la cantidad de bits por segundo que pueden transferirse es alta ".

Falsa. En un sistema fuertemente acoplado, la comunicacion es a traves de memoria compartida, no de mensajes, aunque es cierto q la cantidad de bits transferidos es alta, si se toma como transferencia a la velocidad de disponibilidad de los datos por parte del que los pidio.

Otra opinion : verdadera, ya que se refiere al hardware. Osea un s.o. distribuido podria correr en un mainframe que tiene memoria compartida (por eso son caros) y los mensajes estan en la memoria. Me parece a mi, no se. Igual pensarlo como el punto anterior tambien podria estar bien, la pregunta es medio ambigua.

Ejercicio 27:

Cap. 20 - Pag. 9

Mencione tres características deseables que debe tener un sistema distribuido.

Definiremos a los Sistemas Distribuidos como sistemas "débilmente acoplados", donde los procesadores no comparten memoria común ni reloj y donde cada procesador tiene su propia memoria local. La comunicación entre ellos se realiza por medio de vías de comunicación (buses, líneas telefónicas, etc.).
Los objetivos de un Sistema Distribuido son: - compartir recursos, - mayor capacidad de procesamiento, y - comunicación.
La mayor capacidad de procesamiento se da cuando es posible dividir una tarea en varias subtareas concurrentes. Si es posible que éstas ejecuten en distintos computadores se obtiene un alto grado de paralelismo. Otra situación se da cuando una computadora que se encuentra sobrecargada de trabajo lo deriva a otros procesadores.
Compartir recursos significa la posibilidad de utilización de un recurso no disponible en forma local, pero sí hacer posible su uso en forma remota. Además sería posible la utilización de recursos, descompuestos en un sitio, por otros de igual capacidad en forma remota.
La Comunicación significa el intercambio de información, y abarca desde distribuir procesos hasta el simple correo electrónico.


También se puede estar refiriendo a:

Características:

   - Debe existir un Mecanismo de comunicación global entre los procesos (cualquiera puede hablar con cualquiera). No tiene que haber distintos mecanismos 
en distintas máquinas o distintos mecanismos para la comunicación local o la comunicación remota.
   - Debe existir un esquema global de protección 
   - La administración de procesos debe ser la misma en todas partes (crear, destruir, iniciar, detener)
   - Debe existir un sistema global de archivos y debe tener la misma apariencia en todas partes

Ejercicio 28:

Cap. 20 - Pag. 13

De las capas del modelo OSI/ISO : a) Aplicación b) Presentación c) Sesión d) Transporte e) Red f) Enlace g) Físico

i) Cuál se encarga de la comunicación host-to-host ? g) ii) Cuál se encarga de la corrección de errores de transmisión ? f) iii) Cuál se encarga del ruteo de los paquetes ? e) iv) Cuál se encarga de la sincronización de las transacciones ? c)

Ejercicio 29:

Pag 8 o Pag 421 tanenbaum. resp : 1 nano segundo

Ejercicio 30:

(Hay que pensar uff)

Ejercicio 31:

Pag 13

Ejercicio 32:

Cap. 20 - Pag 3.

UMA: Uniform Memory Acces Todos los procesadores tienen igual tiempo de acceso a las memorias

NUMA: Not Uniform Memory Acces Los procesadores tienen memorias locales, por lo que acceder a la memoria local será mas rápido que acceder a la memoria de otro procesador.

Ejercicio 33:

Pag 7

Ejercicio 34:

Pag 11

Ejercicio 35:

Pag 17

Ejercicio 36:

(Hay que pensar otra vez)

Ejercicio 37:

Pag 2

Ejercicio 38: