transparencias

Anuncio
UNIVERSIDAD
REY JUAN CARLOS
Curso Académico 2005 / 2006
SERVIDOR DE FICHEROS
9P EN JAVA
Autor: Jaime Garzón Pérez
Tutor: Fco. J. Ballesteros
Servidor de ficheros 9P en Java
-1-
Introducción
Objetivos del proyecto
PLAN 9
Cliente
9P
LINUX
MacOS
Servidor 9P
Servidor 9P
Windows
Servidor 9P
Servidor de ficheros 9P en Java
-2-
Introducción
Sistemas de ficheros en red
Ø Acceder a ficheros remotos como si fuesen locales.
Servidor
Cliente
Protocolo de
ficheros en red
Servidor de ficheros 9P en Java
-3-
Introducción
Plan 9
Ø Sistema operativo de libre distribución, propiedades:
· Todo es tratado como un fichero.
· Recursos locales o remotos se tratan igual (Protocolo 9P).
· Múltiples espacios de nombres.
Servidor de ficheros 9P en Java
-4-
Introducción
Protocolo 9P (1)
Ø Es un protocolo de sistemas de ficheros en red.
· Estructura Cliente-Servidor.
· Comunicaciones dentro de una Sesión 9P.
Cliente
9P
Petición 9P (T-mensajes)
Respuesta 9P (R-mensajes)
Servidor
9P
Servidor de ficheros 9P en Java
-5-
Introducción
Protocolo 9P (2)
Ø Tipos de mensajes 9P:
·
·
·
·
·
·
·
Establecimiento de conexion: attach, auth, version
Manejo ficheros: open, create, read, write, remove
Moverse por la jerarquia: walk
Desechar un FID: clunk
Acceso a atributos: stat, wstat
Abortar mensajes: flush
Retornar errores: error
Servidor de ficheros 9P en Java
-6-
Introducción
Protocolo 9P (3)
Ø Ejemplo de mensajes 9P, lectura de un fichero:
...
cli
cli
cli
cli
cli
cli
cli
cli
cli
cli
...
->
<->
<->
<->
<->
<-
srv:
srv:
srv:
srv:
srv:
srv:
srv:
srv:
srv:
srv:
Twalk tag 11 fid 261 newfid 260 nwname 1 file
Rwalk tag 11 nwqid 1 (0 0 1217401143)
Topen tag 11 fid 260 mode 0
Ropen tag 11 qid (0 0 1217401143) iounit 0
Tread tag 11 fid 260 offset 0 count 8192
Rread tag 11 count 17
Tread tag 11 fid 260 offset 17 count 8192
Rread tag 11 count 0
Tclunk tag 11 fid 260
Rclunk tag 11
Servidor de ficheros 9P en Java
-7-
Diseño
Diseño del Proyecto
Ø Diseño modular
Interfaz de acceso a
recursos
Recursos
Recursos
I/O
I/O
driver
Procesado de
Mensajes 9P
Sesión 9P
Interfaz
tipo
fichero
Sesión 9P
Mensajes 9P
Mensajes 9P
Recepción de nuevas
conexiones
driver
RED
Servidor de ficheros 9P en Java
-8-
Diseño
Sesión 9P
Ø Dentro de las Sesiones 9P, veremos:
Sesión 9P (conexión)
Interfaz de
acceso a
Recursos
Petición / Respuesta
R-Mensaje
RPC
T-Mensaje
Lectura y
escritura
de
mensajes.
RED
Mensajes 9P
Servidor de ficheros 9P en Java
-9-
Implementación
Implementación
Sistema de ficheros
Paquete PFS
Tratamiento de mensajes.
Paquete P9P
fidtable
server9P
4
8
pfid
pfile
pfid
6
pfid
5
rmsg9P
9
thread
rpc9P
tmsg9P
7
3
2
nuevas
Conex.
10
1
Servidor de ficheros 9P en Java
- 10 -
Implementación
Paquete P9P
Ø Clases que forman el servidor 9P:
· server9P
Ø Clases relacionadas con el protocolo 9P:
· msg9P, rpc9P
msg9P
tmsg9P
tauth9P
rpc9P
rmsg9P
rpc9Pauth
rauth9P
twalk9P
rwalk9P
rpc9Pwalk
Servidor de ficheros 9P en Java
- 11 -
Implementación
Paquete PFS
Ø Usa un interfaz semejante al de un fichero.
pfile
· pfile representa un fichero.
pfileramfs
pfiledisk
· pfid representa un descriptor de fichero.
· fidtable es una tabla de descriptores con una estructura de pfiles.
fidtable
pfile
pfid
pfid
pfid
pfid
pfile
pfile
Servidor de ficheros 9P en Java
- 12 -
Implementación
Ejemplo 1: “Extracción y ejecución”
msg9P.SetTypeMsg()
Crea una instancia de msg9P
rpc9P.getrpc()
retorna la rpc
1
3
rcp9P
4
process()
tmsg9P
rmsg9P
read()
2
54 F0 06 A64D FF 16 C4
..
.. .. ..
65
3F 3F C1 54 4D 00 16 A0
..
.. .. ..
00
write()
Mensajes 9P como cadena de Bytes
Servidor de ficheros 9P en Java
- 13 -
Implementación
Ejemplo 2: “Inicio de un Servidor 9P”
Ø El siguiente código muestra cómo se inicia una instancia de
server9P.
...
pfile pfileobj;
pfileobj= new pfiledisk(path);
...
server9P srv;
srv=new server9PSE(16,64,port,show_msg,pfileobj);
srv.ejecutar();
...
Servidor de ficheros 9P en Java
- 14 -
Pruebas
Pruebas
Ø Prueba de lectura de un fichero.
term% srv tcp!192.168.1.5!5000 con9p
term% mount –c /srv/con9p /tmp
term% cat /tmp/dir1/file2
archivo 2
Servidor de ficheros 9P en Java
- 15 -
Conclusiones
Conclusiones (I)
Ø ¿Hemos cumplido los objetivos?
·
·
·
·
Funcionamiento del servidor 9P
Portabilidad.
Modularidad.
Eficiencia.
Servidor de ficheros 9P en Java
- 16 -
Conclusiones
Conclusiones (2)
¿Qué fue necesario hacer?
·
·
·
·
Estructuras, métodos y RPCs de los mensajes de 9P.
Implementación de un sistema de ficheros en memoria.
Implementar interfaz de acceso a ficheros.
Implementar programas de pruebas en varias plataformas.
Servidor de ficheros 9P en Java
- 17 -
Conclusiones
Conclusiones (3)
Ø Conocimientos adquiridos en el desarrollo:
·
·
·
·
Funcionamiento básico de PLAN 9.
Programación en JAVA y orientación a objetos.
Protocolos de sistemas de ficheros en red.
Especificación del protocolo 9P y de sus mensajes.
Servidor de ficheros 9P en Java
- 18 -
Descargar