Primitivas SEND BLOQUEANTES (Primitivas sincrónicas SEND NO BLOQUEANTES (Primitivas asincrónicas SEND SIN BLOQUEO CON INTERRUPCIÓN PRIMITIVAS ALMACENADAS EN BUFFER vs NO ALMACENADAS PRIMITIVA CONFIABLES vs NO CONFIABLES
Confiable vs No confiable
Implementación Cliente Servidor
Mensajes de Control
Secuencias de Mensaje de Control
Temas de Implementación Uso de procesadores remotos Ejecución Asincrónica Cliente/Servidor Ejecución Sincrónica Remote Procedure Call Remote Procedure Call Simula la llamada a un procedimiento remoto como si fuera local. Exiten herramientas que generan el código fuente RPCGEN (XDR, SRC) ? (SRC) Se generan los stubs cliente y servidor. Existe binding dinámico y registración del servidor.
Etapas RPC
Temas de implementación Remote Procedure Call (Camino Critico) El procedimiento cliente llama al stub cliente de manera transparente. Usando Stack. El stub cliente arma el mensaje y se lo envía al kernel. El kernel realiza el send del mensaje al kernel de la máquina remota. El kernel remoto le da el mensaje al stub del server El stub del server desempaqueta los parámetros y se los pasa al server. Usan Stack. El server propiamente dicho realiza su trabajo y retorna un resultado al stub. El stub del server empaqueta el valor retornado y se lo manda al kernel. El kernel remoto envía el mensaje al kernel del cliente. El kernel del cliente sube el mensaje al stub del cliente. El stub cliente desempaqueta el resultado y se lo pasa al cliente.
Pasaje de Parámetros
Pasaje de Parámetros Por referencia ? Por valor copy/restore
Pasaje de Parámetros Suponemos int a, b; res: a + b (*) Reemplazamos (*) por función suma res = suma(a, b)
suma (c,d) resp:= c + d (por valor) return (resp)
Pasaje de Parámetros O res := suma (&a, &b)
suma (c, d) resp = *c + *d return (resp) (1)
Pasaje de Parámetros Si estamos en (1) copy/restore Stub cliente suma (c, d) c1 = *c d1 = *d Enviar servidor (suma (c1, d1) Recibir seridor (resp) Return (resp)
Pasaje de Parámetros Stub servidor
Recibir (cliente, suma(c1, d1)) resp := c1 + d1 Enviar (cliente, resp)
Pasaje de Parámetros Imaginemos inc(i, i) o sea i:= i +1 call inc(&i, &i)
inc (i, i) c1 = *i c2 = *i Enviar serv inc (c1, c2) Recibir serv (c1, c2)
&i = c1 &i = c2 ¿qué valor queda en i ?
Protocolos RPC Conexión: Ventajas: comunicación más fácil, el núcleo del cliente no debe reocuparse de si los mensajes se pierden o de si no hay reconocimiento. Desventajas: En una LAN tiene pérdida de desempeño debido a que todo este software adicional estorba, además la ventaja de no perder los paquetes no tiene sentido ya que las LAN son confiables en esto.
Protocolos RPC Sin Conexión: En general en sistemas dentro de un único edificio se utilizan protocolos sin conexión. Mientras que en redes grandes se utiliza uno orientado a conexión. * Utilizar un protocolo estándar o alguno diseñado en forma específica para RPC, por ejemplo: * IP (o UDP, integrado a IP) tiene puntos a favor: — Ya está diseñado (ahorra un trabajo considerable) — Se dispone de muchas implementaciones
Protocolos RPC * Protocolo Detenerse y esperar (stop and wait protocol): establece que el cliente envíe el paquete y espere un reconocimiento antes de enviar el segundo paquete. * Protocolo de Chorro (Blast Protocol): establece que el cliente mande todos los paquetes y luego espere el reconocimiento del mensaje completo
Temas de implementación Remote Procedure Call (Semántica de Fallas) El Cliente no puede ubicar al servidor EXCEPCIÓN Se pierde el msg de requerimiento del cliente al servidor Retransmisión al no recibir ACK usando TIMER El msg de respuesta del servidor se pierde Diferenciar esta falla con la anterior. (nro de secuencia) El servidor se cae luego de recibir el requerimiento A) Recibe y procesa, se cae antes de enviar la respuesta B) Se cae antes de procesar el pedido Semántica: At Lest Once – At most Once – Exactly Once El Cliente se cae Huérfanos : Reencarnación – Reencarnación Suave – Expiración Exterminación.
Temas de Diseño de S.O. Transparencia De Locación / De Migración / De Réplica De Concurrencia / De Paralelismo Flexibilidad Monolitico / Microkernel Confiabilidad Performance Métricas Tiempo de Respuesta / Rendimiento Uso del Sistema / Capacidad consumida de Red Escalabilidad NFS no es escalable
Consultas ? Arquitecturas MIMD Tipos / Performance Sistemas Operativos Distribuidos Modulos Sistemas Distribuidos Servicios Modelo Cliente-Servidor RPC Varias…..
Página anterior | Volver al principio del trabajo | Página siguiente |