Publicado el 14 de Enero del 2017
772 visualizaciones desde el 14 de Enero del 2017
79,5 KB
23 paginas
Creado hace 24a (08/11/2000)
Prácticas de Arquitectura de Computadores
4 curso de Ingeniería de Telecomunicación. Curso 2000-2001
Tutor de prácticas: Daniel Morató
6 de noviembre de 2000
1 Introducción
El objetivo de estas prácticas es la creación de unas herramientas que permitan un cierto modelo de
comunicación entre procesos.
El desarrollo se va a centrar en la creación de lo que correspondería a la parte que da la fun-
cionalidad de comunicación dentro del sistema operativo y de una librería que provea de un interfaz
de programación cómodo al usuario para emplear esas nuevas funcionalidades.
Para evitar la programación de un módulo en el espacio del kernel la funcionalidad de sistema
se implementará como un proceso de usuario. La librería permitirá acceder a los servicios de ese
proceso sin necesidad de conocer su implementación específica sino tan solo los fundamentos del
servicio y la especificación del API.
Procesos de
usuario
Libreria
Funcionalidad
del SO
Figura 1: Esquema general
1.1 Esquema de comunicación
1.1.1 Extremo a extremo
Se pretende proveer de canales unidireccionales de comunicación entre procesos dependientes de
diferentes entidades de comunicación. Estas entidades pueden encontrarse en el mismo o distintos
1
ordenadores. Para realizar la comunicación extremo a extremo entre los procesos de usuario los
datos pasarán a través de las entidades de comunicación mediante un paradigma de conmutación de
paquetes.
Aplicacion
Aplicacion
Entidades de comunicacion
Figura 2: Esquema de comunicación
1.1.2 Paradigma cliente-servidor
Los extremos emplearán un modelo de cliente-servidor. Para establecer un canal de comunicación
uno de los extremos deberá colocarse a la espera sobre un punto de acceso conocido sobre su entidad
de comunicación. El flujo de datos se dirigirá desde la otra aplicación extremo (cliente) hacia ese
punto de acceso conocido.
Aplicacion a la espera
sobre el punto de acceso 1
Aplicacion a la espera
sobre el punto de acceso 2
Punto de
acceso 1
1
2
Punto de
acceso 2
Figura 3: Puntos de acceso
1.1.3 Interconexión de entidades de comunicación
Las entidades de comunicación van a formar lo que se conoce como una topología, definida por
el esquema de interconexión. Cada entidad puede tener uno o varios canales bidireccionales de
comunicación permanentes con otras entidades. A través de estos canales fluyen los datos que se
desean transmitir las aplicaciones, encapsulados con la infomación que precisen las entidades en
paquetes de tamaño constante. Dos aplicaciones que deseen comunicarse entre sí pueden depender
2
de entidades que no poseean un canal de datos directo entre ambas. En ese caso la comunicación se
realizará a través de otros enlaces, pasando por otras entidades, hasta llegar al destino.
1
2
4
5
Figura 4: Ejemplo de topologia y de flujo indirecto
6
3
1.2 Visión general de la implementación
En este apartado se va a presentar el esquema global de funcionamiento de una entidad de comuni-
cación.
En la figura 5 se ve este esquema. Encerrado en un óvalo se encuentran los diversos componentes
que forman una entidad de comunicación. Las flechas representan canales de comunicación, que
pueden emplear distintas técnicas de comunicación entre procesos. Todos los canales representados
son unidireccionales. Así, la conexión entre dos entidades de comunicación viene dada por dos
líneas, una para cada sentido de la comunicación. Cada entidad de comunicación está identificada
por un número.
El bloque B realiza la función de multiplexar toda la información proviniente de otras entidades.
Entrega esta información al bloque A. El bloque A a su vez se encarga de entregar a los servidores
dependientes de ella los datos que se reciban para ellos y aquellos datos (de usuarios o de otras
entidades) que no sean para usuarios de esta entidad son reenviados a otras entidades.
2 Programas y librerías
En esta sección se va a detallar el funcionamiento de cada una de las partes de la entidad de comu-
nicación, así como de la librería y de la topología a emplear.
Comenzaremos por dar unas hipótesis sobre las características de los programas que implemen-
tarán los bloques A y B de la figura 5. Con ello se diseñará un programa que cree una sencilla
topología de entidades interconectadas (práctica 1).
Tras esto pasaremos a la implementación del bloque B (práctica 2), cuya función es simplemente
de multiplexación.
El bloque A contiene la mayor cantidad de funcionalidades y en su desarrollo (práctica 3) se verá
cuál debe ser el esquema de la librería (práctica 4) para un correcto funcionamiento en conjunción
con él.
3
transmisor
receptor
transmisor
A
B
1
2
3
1
2
3
Figura 5: Implementación
Finalmente se propone la realización de unos programas que empleen el sistema de comunicación
recién diseñado.
2.1 Especificación externa de los bloques A y B
En este apartado vamos a presentar el funcionamiento de los bloques A y B a alto nivel, lo necesario
para poder lanzarlos creando una topología de entidades interconectadas.
Para simplificar se supondrá que cada entidad tiene 3 enlaces a otras entidades. Así pues, cada
bloque de tipo A podrá enviar datos hasta a 3 entidades y cada bloque B recibir de hasta 3 entidades.
2.1.1 Bloque A
El programa que implementa el bloque A se va a llamar nucleo. La sintaxis de opciones del mismo
es la siguiente:
nucleo IDesteServ IDservDesc3 IDservDesc4 IDservDesc5 clave
Donde IDesteServ es el indentificador de la entidad de comunicación de la que va a formar parte.
IDservDesc3, IDservDesc4 y IDservDesc5 son los identificadores de las 3 entidades a las que está
conectado y clave es un valor numérico que permite reconocer a este bloque A de otros dentro de
una misma máquina y facilita la comunicación con el bloque B de la misma entidad mediante una
cola de mensajes. A la entidad identificada con IDservDesc5 se la conocerá también como enlace o
ruta por defecto. Si se desea conectar la entidad a menos de 3 destinos bastará con realizar más de
un enlace con el mismo, es decir, si solo se quiere conectar con otras dos entidades se podría hacer
con IDservDesc4=IDservDesc5.
4
Para su correcto funcionamiento, la aplicación nucleo supone que sobre sus descriptores de
fichero 3, 4 y 5 se encuentran los canales de comunicación (de escritura) que le enlazan con las
entidades IDservDesc3, IDservDesc4 y IDservDesc5 respectivamente.
2.1.2 Bloque B
El programa que implementa el bloque B se va a llamar muxin. La sintaxis de opciones del mismo
es la siguiente:
muxin clave desc1 desc2 desc3
Donde clave tiene el mismo valor que el del mismo nombre en el programa nucleo que junto con
éste forma una entidad de comunicación.
Los valores desc1, desc2 y desc3 son los descriptores de fichero sobre los que se encuentras los
canales de lectura cuyos datos de entrada debe multiplexar esta aplicación. Si no hay tantos canales
de entrada se indica poniendo un 1 como descriptor que no se desee utilizar, por ejemplo una
entidad con dos enlaces de entrada sobre los descriptores 4 y 5 y que emplee como clave 2100 se
indicaría con muxin 2100 4 5 -1.
2.2 Creación de topología (práctica 1: 2 ptos)
El programa a crear en esta práctica debe disponer en una máquina la topología de entidades de
comunicación que se ve en la figura 6
1
2
4
Figura 6: Topología
3
Dado que los programas nucleo y muxin necesitan descriptores de fichero como puntos de acceso
a los canales de comunicación una solución lógica es el empleo de pipes o tuberías como técnica de
comunicación entre procesos.
La aplicación que va a crear la topología se va a llamar lanzador y su cometido será crear el
número de pipes y procesos necesarios, colocar las pipes sobre los descriptores adecuados de cada
proceso y ejecutar los programas nucleo y muxin con las opciones que corresponda. Tras crear la
topología, lanzador termina su ejecución.
2.2.1 Requisitos
Para realizar esta práctica se dispone de unas versiones de los programas nucleo y muxin.
5
Se necesitará el empleo al menos de las siguientes llamadas al sistema de UNIX:
fork(): Para la creación de los nuevos procesos.
execvp(): Para la ejecución de los programas dentro de los nuevos procesos creados.
pipe(): Para crear las pipes.
dup2(): Para colocar los descriptores de las pipes en el lugar deseado.
close(): Para eliminar los descriptores que no se necesiten.
Nota: Tenga en cuenta que cada vez que emplee la llamada pipe() el sistema reservará dos nuevos
descriptores de la tabla de descriptores de fichero del proceso. Dado que inicialmente es probable
que los descriptores 3, 4 y 5 estén libres pueden ser empleados por las pipes. Un método simple de
evitar esto es ocuparlos antes de crear las pipes, tal vez duplicando sobre ellos otro ya existente.
Para aprender el manejo de estas llamadas al sistema se sugiere la realización antes de los ejer-
cicios 1-8.
2.2.2 Pruebas sugeridas
Se ha dejado en el directorio $(HOME)/../ficheros dos programas llamados nucleog y muxing. Son
versiones de los programas nucleo y muxin que dan cierta información por la salida estándar cada
vez que reciben un paquete. Pueden emplearse para comprobar que el programa lanzador ejecuta
los programas correctamente. Igualmente en ese directorio hay dos programas cliente test1 y servi-
dor test1 que son dos simples programas que emplean la librería libcommarq.a para comunicarse.
Se pueden emplear para comprobar que la interconexión entre los programas nucleo y muxin es
correcta. Su sintaxis de empleo es la siguiente:
servidor test1 IDcolaSuEntidad PuntoDeAcceso
Donde IDcolaSuEntidad es la clave empleada en los programas nucleo y muxin que forman la
entidad que va a emplear este programa y PuntoDeAcceso es el valor de punto de acceso al servicio
que va emplear.
cliente test1 IDcolaSuEntidad IDEntidadRemota PuntoDeAccesoRemoto
Donde ID
Comentarios de: Prácticas de Arquitectura de Computadores (0)
No hay comentarios