Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Captulo 10
Introduccin a los sistemas distribuidos
Contenido
Sistemas distribuidos
Sistemas operativos distribuidos
Comunicacin de procesos
Sincronizacin de procesos
Gestin de procesos
Sistemas de archivos
Gestin de memoria
Conceptos previos
Un programa es un conjunto de instrucciones.
Un proceso es un programa en ejecucin.
Una red de computadores es un conjunto de computadores
conectados por una red de interconexin.
Un sistema distribuido (SD)
Modelo fsico: conjunto de nodos (procesadores sin memoria
ni reloj comn) conectados por una red.
Modelo lgico: conjunto de procesos que ejecutan
concurrentemente en uno o ms computadores que colaboran
y comunican intercambiando mensajes.
Un protocolo es un conjunto de reglas e instrucciones que
gobiernan la comunicacin en un sistema distribuido, es decir, el
intercambio de mensajes.
Caractersticas
Compartir recursos (HW, SW, datos).
Acceso a recursos remotos.
Modelo cliente-servidor
Modelo basado en objetos
Desventajas
Necesidad de software ms complejo
Problemas de fiabilidad
Problemas de seguridad y confidencialidad
R e d d e in te r c o n e x i n
Redes e interconexin
Paquete: tipo de mensaje que se intercambia entre dos
dispositivos de comunicacin.
Tamao limitado por el hardware
Mensaje: objeto lgico que se intercambian entre dos o ms
procesos.
Su tamao puede ser bastante grande.
Un mensaje se descompone en paquetes.
Subsistema de comunicacin: conjunto de componentes
HW y SW que proporcionan servicios de comunicacin en un
sistema distribuido.
Protocolo: conjunto de reglas e instrucciones que gobiernan el
intercambio de paquetes y mensajes
Sistemas operativos: una visin aplicada
Protocolos de comunicacin
Protocolo: conjunto de reglas y formatos que permiten la
comunicacin entre procesos.
La definicin de un protocolo tiene dos parte:
Especificacin de la secuencia de mensajes que deben
intercambiarse.
Especificacin del formato de mensajes.
El software de red se organiza en niveles
Ejemplos de protocolos
Protocolos internet:
Originados por el trabajo de DARPA en los 70
Muy utilizados en la actualidad
Gran crecimiento durante los 90 debido al uso del Web
Protocolos OSI (open system interconection)
Estndar desarrollado por ISO
Estndares propietarios
SNA de IBM (aos 70)
DECnet desarrollado por DEC
NetWare: red de Novell para redes de PC
Protocolos TCP/IP
Resultado de la investigacin y desarrollo llevados a cabo en la
red ARPANET (financiada por DARPA) en los aos 70
Familia de protocolos utilizados en Internet
En los 90 se ha establecido como la arquitectura comercial
dominante:
Se especificaron y utilizaron antes de OSI
Independiente de la tecnologa de red utilizada
Internet est construida sobre un conjunto de protocolos
TCP/IP.
Espectacular desarrollo de World Wide Web
Protocolos TCP/IP
E m is o r
R e c e p to r
Protocolos de transporte
Protocolo TCP
Orientado a conexin
Garantiza que los datos se entregan en el orden en el que se
envan
Las conexiones TCP se ven como un flujo de bytes
La transmisin se considera fiable. Pueden perderse
mensajes (sobrecarga en la red, fallos en encaminadores, etc.)
Cuando los mensajes son muy pequeos, TCP los retrasa
hasta conseguir uno ms grande
Esta opcin debe desactivarse si es necesario
Protocolos de transporte
Protocolo UDP
Protocolo de datagramas no orientado a conexin.
Protocolo no fiable
Los paquetes se pueden perder, duplicar, recibir en orden
distinto al enviado
Encaminamiento
Permite que los paquetes viajen del proceso emisor al receptor.
Algoritmo:
Un programa de aplicacin genera un paquete, o bien se lee
un paquete de la interfaz de red.
Si el paquete es para la mquina, se acepta.
En caso contrario, se incrementa el contador de saltos, si se
excede el mximo, el paquete se descarta.
Si el paquete no es para la mquina se busca en la tabla de
encaminamiento y se retransmite a la interfaz adecuada.
Tablas estticas, las ms utilizadas
Tablas dinmicas
1985-1990
1990-1995
1995-2000
2000-20005
Contenido
Sistemas distribuidos
Comunicacin de procesos
Sincronizacin de procesos
Gestin de procesos
Sistemas de archivos
Gestin de memoria
A p lic a c io n e s
L e n g u a je s d e p r o g r a m a c i n
L e n g u a je s d e p r o g r a m a c i n
S is te m a o p e r a tiv o
S is te m a o p e r a tiv o
H a rd w a re
H a rd w a re
R e d d e in te r c o n e x i n
H a rd w a re
R e d d e in te r c o n e x i n
Transparencia
Acceso: acceso a recursos remotos y locales de igual forma
Posicin: acceso a los recursos sin necesidad de conocer su
situacin
Concurrencia: acceso concurrente a recursos compartidos sin
interferencias
Replicacin: Acceso a recursos replicados sin conocimiento de
que lo son
Fallos: mantenimiento del servicio en presencia de fallos.
Migracin: permite que los recursos y objetos se muevan sin
afectar a la operacin de los programas.
Capacidad de crecimiento: facilidad para crecer sin afectar a la
estructura del sistema
Sistemas operativos: una visin aplicada
S is t e m a o p e r a t iv o
H a rd w a re
H a rd w a re
R e d d e in te r c o n e x i n
Servicios de comunicacin
Servicios de sincronizacin
Gestin distribuida de procesos
Sistemas de archivos distribuidos
Memoria compartida distribuida
Contenido
Sistemas distribuidos
Sistemas operativos distribuidos
Comunicacin de procesos
Sincronizacin de procesos
Gestin de procesos
Sistemas de archivos
Gestin de memoria
Comunicacin cliente-sevidor
Muy utilizada en entornos distribuidos (ms del 90% de los sistemas distribuidos utilizan la arquitectura
cliente-servidor)
M q u in a A
p e tc ic i n
c lie n t e
NCLEO
M q u in a B
s e r v id o r
re s p u e s ta
NCLEO
RED
Comunicacin de grupos
Utiliza mensajes multicast
til para:
Ofrecer tolerancia a fallos basado en servicios replicados
Localizar objetos en sistemas distribuidos
Mejor rendimiento mediante datos replicados
Actualizaciones mltiples
Operaciones colectivas en clculo paralelo
Sockets
Aparecieron en 1981 en UNIX BSD 4.2
Intento de incluir TCP/IP en UNIX
Diseo independiente del protocolo de comunicacin
Un socket es punto final de comunicacin (direccin IP y
puerto)
Abstraccin que:
Ofrece interfaz de acceso a los servicios de red en el nivel de
transporte
Protocolo TCP
Protocolo UDP
Sockets: introduccin
Sujetos a proceso de estandarizacin dentro de POSIX (POSIX
1003.1g)
Actualmente
Disponibles en casi todos los sistemas UNIX
En prcticamente todos los sistemas operativos
WinSock: API de sockets de Windows
Sockets
UNIX
Dominios de comunicacin
Tipos de sockets
Direcciones de sockets
Creacin de un socket
Asignacin de direcciones
Solicitud de conexin
Preparar para aceptar conexiones
Aceptar una conexin
Transferencia de datos
Dominios de comunicacin
Tipos de sockets
Stream (SOCK_STREAM)
Orientado a conexin
Fiable, se asegura el orden de entrega de mensajes
No mantiene separacin entre mensajes
Si PF_INET se corresponde con el protocolo TCP
Datagrama (SOCK_DGRAM)
Sin conexin
No fiable, no se asegura el orden en la entrega
Mantiene la separacin entre mensajes
Si PF_INET se corresponde con el protocolo UDP
Raw (SOCK_RAW)
Permite el acceso a los protocolos internos como IP
Sistemas operativos: una visin aplicada
Direcciones de sockets
Cada socket debe tener asignada una direccin nica
Las direcciones se usan para:
Asignar una direccin local a un socket (bind)
Especificar una direccin remota (connect o sendto)
Dependientes del dominio
Se utiliza la estructura genrica struct sockaddr
Cada dominio usa una estructura especfica
Direcciones en PF_UNIX (struct sockaddr_un)
Nombre de fichero
Ejemplo
Programa que obtiene la direccin en formato decimal-punto a
partir de un formato dominio-punto.
void main(int argc, char **argv) {
struct hostent *hp;
struct in_addr in;
hp = gethostbyname(argv[1]);
if (hp == NULL) {
printf(Error en gethostbyname\n);
exit(0);
}
memcpy(&in.s_addr,*(hp->h_addr_list),sizeof(in.s_addr));
printf(%s es %s\n, hp->h_name, inet_ntoa(in));
}
Direcciones de sockets II
En TCP/IP los nmeros se emplean con formato big-endian.
En computadores que no utilicen este formato es necesario
emplear funciones para traducir nmeros entre el formato que
utiliza TCP/IP y el empleado por el propio computador:
u_long htonl (u_long hostlong)
u_short htons (u_short hostshort)
u_long ntohl (u_long netlong)
u_short ntohs (u_short netshort)
Las primera traduce un nmero de 32 bits representado en el
formato del computador al formato de red (TCP/IP).
Creacin de un socket
int socket(int dominio, int tipo, int protocolo)
Crea un socket devolviendo un descriptor de fichero
dominio: PF_XXX
tipo: SOCK_XXX
protocolo: dependiente del dominio y tipo
0 elige el ms adeucado
Especificados en /etc/protocols
Asignacin de direcciones
int bind(int sd, struct sockaddr *dir, int long)
sd: descriptor devuelto por socket
dir: direccin a asignar
long: longitud de la direccin
Si no se asigna direccin (tpico en clientes)
Se le asigna automticamente (puerto efmero) en la su
primera utilizacin (connect o sendto)
Direcciones en dominio PF_INET
Puertos en rango 0..65535. Reservados: 0..1023. Si 0, el
sistema elige uno
Host: una direccin local IP
INNADDR_ANY: elige cualquiera de la mquina
Solicitud de conexin
Realizada en el cliente
int connect(int sd, struct sockaddr *dir, int long)
sd: descriptor devuelto por socket
dir: direccin del socket remoto
long: longitud de la direccin
Si el socket no tiene direccin asignada, se le asigna una
automticamente
Normalmente se usa con streams
/* fallo */
Cerrar un socket
Se usa close para cerrar ambos tipos de sockets
Si el socket es de tipo stream, close cierra la conexin en ambos
sentidos
Se puede cerrar un nico extremo:
int shutdown(int st, int modo)
sd: descriptor devuelto por socket
modo: SHUT_RD, SHUT_RW o SHUT_RDWR
Configuracin de opciones
Existen varios niveles dependiendo del protocolo afectado como
parmetro
SOL_SOCKET: opciones independientes del protocolo
IPPROTO_TCP: nivel de protocolo TCP
IPPTOTO_IP: nivel de protocolo IP
Consultar opciones asociadas a un socket
int getsockopt(int sd, int nivel, int opc, char *val, int *long)
socket()
Proceso cliente
bind()
listen()
socket()
Abrir conexin
connect()
accept()
Crear
thread
accept()
write()
read()
Peticin
read()
Respuesta
close()
write()
close()
Ejemplo
(TCP)
M q u in a A
c lie n te
s u m a r (5 ,2 )
M q u in a B
s e r v id o r
5+2
NCLEO
R e s tu la d o = 7
NCLEO
RED
Servidor (TCP)
void main(int argc, char *argv[])
{
struct sockaddr_in server_addr,
int sd, sc;
int size, val;
int size;
int num[2], res;
client_addr;
Servidor (TCP)
listen(sd, 5);
size = sizeof(client_addr);
while (1)
{
printf("esperando conexion\n");
sc = accept(sd, (struct sockaddr *)&client_addr,&size);
read(sc, (char *) num, 2 *sizeof(int));
// recibe la peticin
// se enva el resultado
close(sc);
}
close (sd);
exit(0);
}
Cliente
(TCP)
void main(void)
{
int sd;
struct sockaddr_in server_addr;
struct hostent *hp;
int num[2], res;
sd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
bzero((char *)&server_addr, sizeof(server_addr));
hp = gethostbyname ("arlo.datsi.fi.upm.es");
memcpy (&(server_addr.sin_addr), hp->h_addr, hp->h_length);
server_addr.sin_family = AF_INET;
server_addr.sin_port = 4200;
Cliente
(TCP)
// se establece la conexin
connect(sd, (struct sockaddr *) &server_addr,
sizeof(server_addr));
num[0]=5;
num[1]=2;
write(sd, (char *) num, 2 *sizeof(int));
read(sd, &res, sizeof(int));
// enva la peticin
// recibe la respuesta
Servidor (datagramas)
void main(void)
{
int num[2];
int s, res, clilen;
struct sockaddr_in server_addr, client_addr;
s =
Servidor (datagramas)
clilen = sizeof(client_addr);
while (1)
{
recvfrom(s, (char *) num, 2* sizeof(int), 0,
(struct sockaddr *)&client_addr, &clilen);
res = num[0] + num[1];
sendto(s, (char *)&res, sizeof(int), 0,
(struct sockaddr *)&client_addr,
}
}
clilen);
Cliente (datagramas)
void main(int argc, char *argv[]){
struct sockaddr_in server_addr, client_addr;
struct hostent *hp;
int s, num[2], res;
if (argc != 2){
printf("Uso: client <direccion_servidor> \n");
exit(0);
}
s = socket(AF_INET, SOCK_DGRAM, 0);
hp = gethostbyname (argv[1]);
bzero((char *)&server_addr, sizeof(server_addr));
server_addr.sin_family = AF_INET;
memcpy (&(server_addr.sin_addr), hp->h_addr, hp->h_length);
server_addr.sin_port = 7200;
Cliente (datagramas)
bzero((char *)&client_addr, sizeof(client_addr));
client_addr.sin_family = AF_INET;
client_addr.sin_addr.s_addr = INADDR_ANY;
client_addr.sin_port = htons(0);
bind (s, (struct sockaddr *)&client_addr, sizeof(client_addr));
num[0] = 2;
num[1] = 5;
Funcionamiento de las
RPC
El proceso que realiza la llamada empaqueta los argumentos en
un mensaje, se los enva a otro proceso y espera el resultado
El proceso que ejecuta el procedimiento extrae los argumentos
del mensaje, realiza la llamada de forma local, obtiene el
resultado y se lo enva de vuelta al proceso que realiz la
llamada
Objetivo: acercar la semntica de las llamadas a procedimiento
convencional a un entorno distribuido (transparencia).
S IS T E M A S E R V ID O R
C D IG O D E L A A P L IC A C I N
IN IC IO
F IN
LLAM ADA LLAM ADA = 7
s u m a (5 ,2 )
P R O C E D IM IE N T O S
E JE C U TA
P R O C E D IM IE N T O
REM O TO
1
RESG UARDO
C L IE N T E
P R EPA R A
ENTRADA
C O N V IE R T E
S A L ID A
RESG UARDO
S E R V ID O R
C O N V IE R T E
ENTRADA
6
PR EPA R A
S A L ID A
Suplentes (stubs)
Se generan automticamente por el software de RPC
En el cliente:
Localizan al servidor
Empaquetan los parmetros y construyen los mensajes
Envan el mensaje al servidor
Espera la recepcin del mensaje y devuelven los resultados
En el servidor
Realizan tareas similares
Los suplentes son independientes de la implementacin que se
haga del cliente y del servidor. Slo dependen de la interfaz.
cliente
el servidor
prepara
parmetros,
enva peticin
Desempaqueta
la respuesta
servidor
Se registra con un
servicio de nombres
recibe peticin
Ejecuta el
procedimiento
enva peticin
Transferencia de parmetros
Una de las funciones de los resguardos es empaquetar los
parmetros en un mensaje: aplanamiento (marshalling)
Problemas en la representacin de los datos
Servidor y cliente pueden ejecutar en mquinas con
arquitecturas distintas
Transmisin con un formato estndar:
XDR (external data representation) es un estndar que define
la representacin de tipos de datos
Aplanamiento
S IS T E M A C L IE N T E
S IS T E M A S E R V ID O R
C D IG O D E L A A P L IC A C I N
P R O C E D IM IE N T O S
P r o c e d im ie n to ( A B C , 1 2 3 , 1 2 .3 4 )
P r o c e d im ie n to ( A B C , 1 2 3 , 1 2 .3 4 )
RESG UARDO
C L IE N T E
a p la n a m ie n to
RESG UARDO
S E R V ID O R
m e n s a je
A
1 2 3 1 2 .3 4
T ir a d e b y te s
1 2 3 1 2 .3 4
E x tr a e lo s
p a r m e tro s
Enlazador dinmico
Enlazador dinmico (binder): Es el servicio que mantiene una
tabla de traducciones entre nombres de servicio y direcciones.
Incluye funciones para:
Registrar un nombre de servicio
Eliminar un nombre de servicio
Buscar la direccin correspondiente a un nombre de servicio
Como localizar al enlazador dinmico:
Ejecuta en una direccin fija de un computador fijo.
El sistema operativo se encarga de indicar su direccin
Difundiendo un mensaje (broadcast) cuando los procesos
comienzan su ejecucin.
M q u in a A
S e r v id o r
d e n o m b re s
M q u in a B
s e r v id o r
5 . D a r d e b a ja
p r o c e d im ie n to
3 . D ir e c c i n
d e l s e r v id o r
2. B uscar
s e r v id o r
M q u in a C
s e r v id o r
4 . E je c u ta r
p r o c e d im ie n to
No garantizar nada
Semntica al menos una vez
Aspectos de implementacin
Protocolos RPC
Orientados a conexin
Fiabilidad se resuelve a bajo nivel, peor rendimiento
No orientados a conexin
Uso de un protocolo estndar o un especfico
Algunos utilizan TCP o UDP como protocolos bsicos
FICHERO
DE DEFINICIN
DE INTERFAZ
COMPILADOR IDL
CABECERA
SUPLENTE
EN CLIENTE
FICHEROS
FUENTE DEL
CLIENTE
COMPILADOR C
CABECERA
CABECERA
COMPILADOR C
OBJETO
SUPLENTE
EN CLIENTE
DESARROLLO
DEL
CLIENTE
FICHEROS
OBJETO DEL
CLIENTE
SUPLENTE
EN SERVIDOR
FICHEROS
FUENTE DEL
SERVIDOR
COMPILADOR C
COMPILADOR C
BIBLIOT.
RPC
BIBLIOT.
RPC
FICHEROS
OBJETO DEL
SERVIDOR
MONTADOR
MONTADOR
EJECUTABLE
DEL
CLIENTE
EJECUTABLE
DEL
SERVIDOR
OBJETO
SUPLENTE
EN SERVIDOR
DESARROLLO
DEL
SERVIDOR
RPC de
Sun
Utiliza como lenguaje de definicin de interfaz XDR:
Una interfaz contiene un n de programa y un n de versin.
Cada procedimiento especfica un nombre y un n de
procedimiento
Los procedimientos slo aceptan un parmetro.
Los parmetros de salida se devuelven mediante un nico
resultado
El lenguaje ofrece una notacin para definir:
constantes
definicin de tipos
estructuras, uniones
programas
RPC de
Sun
rpcgen es el compilador de interfaces que genera:
Suplente del cliente
Suplente del servidor y procedimiento principal del servidor.
Procedimientos para el aplanamiento (marshalling)
Fichero de cabecera (.h) con los tipos y declaracin de
prototipos.
Enlace dinmico
El cliente debe especificar el host donde ejecuta el servidor
El servidor se registra (n de programa, n de versin y n de
puerto) en el portmapper local
El cliente enva una peticin al portmapper del host donde
ejecuta el servidor
Sistemas operativos: una visin aplicada
Ejempl
o
M q u in a A
c lie n te
s u m a r ( 5 ,2 )
M q u in a B
s e r v id o r
5+2
NCLEO
R e s tu la d o = 7
NCLEO
RED
Esquema de la aplicacin
c lie n te .c
A r c h iv o s p a r a
e l c lie n te
s u m a _ c ln t.c
s u m a .x
re p c g e n
s u m a _ x d r.c
A r c h iv o s
com unes
s u m a .h
s u m a _ s v c .c
A r c h iv o s p a r a
e l s e r v id o r
s e r v id o r.c
suma.
x
struct peticion {
int a;
int b;
};
program SUMAR {
version SUMAVER {
int SUMA(peticion) = 1;
} = 1;
} = 99;
suma.
h
#ifndef _SUMA_H_RPCGEN
#define _SUMA_H_RPCGEN
#include <rpc/rpc.h>
struct peticion {
int a;
int b;
};
#define
#define
extern
extern
SUMAVER ((u_long)99)
SUMA ((u_long)1)
int * suma_1(peticion *, CLIENT *);
int * suma_1_svc(peticion *, struct svc_req *);
#endif /* !_SUMA_H_RPCGEN */
servidor.c
#include "suma.h"
int *suma_1_svc(peticion *argp, struct svc_req *rqstp)
{
static int result;
result = argp->a + argp->b;
return(&result);
}
cliente.c
#include "suma.h"
main( int argc, char* argv[] )
{
CLIENT *clnt;
int *res;
peticion suma_1_arg;
char *host;
if(argc < 2) {
printf("usage: %s server_host\n", argv[0]);
exit(1);
}
host = argv[1];
cliente.c II
/* localiza al servidor */
clnt = clnt_create(host, SUMAR, SUMAVER, "udp");
if (clnt == NULL) {
clnt_pcreateerror(host);
exit(1);
}
suma_1_arg.a = 5;
suma_1_arg.b = 2;
res = suma_1(&suma_1_arg, clnt);
if (res == NULL) {
clnt_perror(clnt, "call failed:");
}
printf("La suma es %d\n", *res);
clnt_destroy( clnt );
}
Contenido
Sistemas distribuidos
Sistemas operativos distribuidos
Comunicacin de procesos
Sincronizacin de procesos
Gestin de procesos
Sistemas de archivos
Gestin de memoria
Relojes lgicos
En ausencia de un reloj global la relacin causa-efecto (precede
a) es la nica posibilidad de ordenar eventos
Relacin de precedencia (Lamport)
Si a y b son dos eventos del mismo proceso y a ocurri antes
que b, entonces a b
Si a=send(m) y b=receive(m), entonces a b
La relacin es transitiva
Dos eventos son concurrentes (a || b) si no se puede deducir
entre ellos una relacin de causalidad potencial
Relojes
vectoriales
Desarrollado independientemente por Fidge, Mattern y Schmuck
Todo proceso lleva asociado un vector de enteros RV
RVi[a] es el valor del reloj vectorial del proceso i cuando
ejecuta el evento a.
Mantenimiento de los relojes vectoriales
Inicialmente RVi= 0
Cuando un proceso i genera un evento
RVi[i ] = RVi[i ] +1
Relojes
vectoriales
P0
(1 ,0 ,0 )
(2 ,1 ,0 )
(3 ,1 ,2 )
(4 ,1 ,2 )
(5 ,1 ,2 )
(1 ,2 ,3 )
P1
(4 ,3 ,3 )
(0 ,1 ,0 )
P2
(1 ,0 ,1 )
(1 ,0 ,2 )
(1 ,0 ,3 )
(1 ,0 ,4 )
(5 ,1 ,5 )
Algoritmo centralizado
Existe un proceso coordinador
O K
1
s a lid a
e n tra d a
e n tra d a
N o h a y re s p u e s p u e s ta
(b lo q u e a a l c lie n te )
2
O K
Anillo con
testigo
Los procesos se ordenan conceptualmente como un anillo.
Por el anillo circula un testigo.
Cuando un proceso quiere entrar en la SC debe esperar a recoger
el testigo
Cuando sale de la SC enva el testigo al nuevo proceso del anillo
te s tig o
1
2
5
4
Algoritmo
distribuido
Algoritmo de Ricart y Agrawala requiere la existencia un orden
total de todos los mensajes en el sistema
Un proceso que quiere entrar en una seccin crtica (SC) enva
un mensaje a todos los procesos (y a l mismo)
Cuando un proceso recibe un mensaje
Si el receptor no est en la SC ni quiere entrar enva OK al
emisor
Si el receptor ya est en la SC no responde
Si el receptor desea entrar, compara la marca de tiempo del
mensaje. Si el mensaje tiene una marca menor enva OK. En
caso contrario entra y no enva nada.
Cuando un proceso recibe todos los mensajes puede entrar
Contenido
Sistemas distribuidos
Sistemas operativos distribuidos
Comunicacin de procesos
Sincronizacin de procesos
Gestin de procesos
Sistemas de archivos
Gestin de memoria
Modelos de sistema
Conjunto de estaciones de trabajo
El sistema consta de estaciones de trabajo a las que tienen
acceso los usuarios.
Pool de procesadores
Los usuarios con terminales.
Los procesos se envan a procesadores de un pool.
Modelo hbridos
Trabajos interactivos en las estaciones de trabajo.
Trabajos no interactivos en en el pool de procesadores.
Asignacin de procesadores
Objetivo: decidir en qu procesador se debera ejecutar un
proceso para equilibrar la carga y optimizar el rendimiento.
Evitar que un nodo est inactivo mientras hay procesos
esperando a ejecutar.
Suposiciones:
Todos los procesadores son compatible en el cdigo.
La velocidad de los procesadores puede ser distinta.
Conectividad total: cualquier procesador puede comunicarse
con cualquier otro.
N odo
(a )
Te n g o m u c h a c a rg a .
B u s c o e s ta c i n in a c t iv a
N odo
(b )
Planificacin de procesos
Contenido
Sistemas distribuidos
Sistemas operativos distribuidos
Comunicacin de procesos
Sincronizacin de procesos
Gestin de procesos
Sistemas de archivos
Gestin de memoria
Arquitectura
......................
C lie n te
C lie n te
R E D D E IN T E R C O N E X I N
CTR
.....
........
S e r v id o r
......................
S e r v id o r
CTR
CTR
.....
.....
........
CTR
.....
Componentes
Servicio de directorio:
Gestin de los nombres de los archivos
Objetivo: ofrecer un espacio de nombres nico
Servicio de archivos:
Proporciona acceso a los datos de los archivos
Modelo carga/descarga
Transferencias completas del fichero
Localmente se almacenan en memoria o discos locales
Normalmente utilizan semntica de sesin
Eficiencia en las transferencias
Llamada open con mucha latencia
Mltiples copias de un fichero
Modelo de servicios remotos
El servidor debe proporcionar todas las operaciones sobre el fichero.
Acceso por bloques
Modelo cliente/servidor
Empleo de cache en el cliente
Combina los dos modelos anteriores.
Tipos de servidores
Servidores con estado
Cuando se abre un fichero, el servidor almacena informacin
y da al cliente un identificador nico a utilizar en las
posteriores llamadas
Cuando se cierra un fichero se libera la informacin
Servidores sin estado
Cada peticin es autocontenida (fichero y posicin)
Tipos de servidores II
Ventajas de los servidores con estado
Mensajes de peticin ms cortos
Mejor rendimiento (se mantiene informacin en memoria)
Facilita la lectura adelantada. El servidor puede analizar el
patrn de accesos que realiza cada cliente
Es necesario en invalidaciones iniciadas por el servidor
Ventajas de los servidores sin estado
Ms tolerante a fallos
No son necesarios open y close. Se reduce el n de mensajes
No se gasta memoria en el servidor para almacenar el estado
Cache de
bloques
El empleo de cache de bloques permite mejorar el rendimiento
Explota el principio de proximidad de referencias
Proximidad temporal
Proximidad espacial
Lecturas adelantadas
Mejora el rendimiento de las operaciones de lectura, sobre todo
si son secuenciales
Escrituras diferidas
Mejora el rendimiento de las escrituras
Otros tipos de cache
Cache de nombres
Cache de metadatos del sistema de ficheros
Sistemas operativos: una visin aplicada
Ms capacidad,
Ms lento
No voltil, facilita la recuperacin
En memoria principal
Menor capacidad
Ms rpido
Memoria voltil
Polticas de actualizacin
Escritura inmediata (write-through)
Buena fiabilidad
En escrituras se obtiene el mismo rendimiento que en el
modelo de accesos remotos
Las escrituras son ms lentas
Escritura diferida (write-back)
Escrituras ms rpidas. Se reduce el trfico en la red
Los datos pueden borrarse antes de ser enviados al servidor
Alternativas
Volcado (flush) peridico (Sprite)
Write-on-close
Contenido
Sistemas distribuidos
Sistemas operativos distribuidos
Comunicacin de procesos
Sincronizacin de procesos
Gestin de procesos
Sistemas de archivos
Gestin de memoria
Nodo B
P a g in a d o r e x te r n o
T r a n s fe r ir p g in a
E s p a c io d e
d ir e c c io n e s
d e l p ro c e s o
F a llo s d e p g in a
M e n s a je s
N c le o
N c le o
Nodo A
p ro c e s o
Nodo C
p ro c e s o
p ro c e s o
M e m o r ia c o m p a r tid a d is tr ib u id a
M e m o ria
fs ic a
M e m o ria
fs ic a
M e m o ria
fs ic a
R e d d e in te r c o n e x i n
Caractersticas
Se construye utilizando paso de mensajes.
Modelo de programacin ms sencillo, no es necesario el paso
de mensajes.
Sincronizacin utilizando construcciones tradicionales
(semforos, mutex, ...).
Rendimiento?
Los accesos a memoria no son siempre locales
Modelos:
Basado en hardware (arquitectura NUMA).
Basado en pginas.
Basado en objetos
Sistemas operativos: una visin aplicada
Implementacin
Replicacin y caching (igual que los sistemas de ficheros)
Las escrituras se realizan localmente
Aparece un problema en el acceso a variables compartidas (en
escritura).
Problema idntico a la coherencia de cache