![]() |
Laboratorio Curso 1998/99 |
Universitat de València
![]() |
Simular la administración y el funcionamiento de un conjunto de Redes de Ordenadores representadas cada una de ellas por una lista doblemente enlazada
Como primera tarea de la práctica, se debe escribir un módulo en TP donde se especifique la estructura de datos lista, que representa, como hemos dicho, una red de ordenadores.
Conexion_Ordenador = ^Ordenador; Identificador = 1..MAX_ORDENA; Ordenador = Record Direccion : Identificador; Ord_Siguiente: Conexión_Ordenador; Ord_Anterior : Conexión_Ordenador; End;
Con respecto al identificador de ordenador, consideraremos que es único para cada uno de los ordenadores, es decir, que no existirán dos ordenadores con el mismo identificador en distintas redes. La asignación del identificador se hará de forma automática; cada vez que se añada un ordenador nuevo a la red se le asignará un número. Cuando un ordenador se desconecta de la red su identificador se guarda en una estructura de datos "Cola" de forma que si la cola tiene elementos no se añaden nuevos identificadores sino que se utilizan los que se han guardado en la cola.
Supondremos que tenemos un número de redes limitado a un número máximo (MAX_REDES) por lo que podemos utilizar como estructura de datos un vector de redes que nos permita acceder al conjunto de redes existentes. Este vector será, pues, un array de punteros al primero de los ordenadores de cada una de las redes.
La estructura de datos se representa de la siguiente forma:
Indice = 1..MAX_REDES; Red_Total = Array[Indice] of Conexión_Ordenador;
En la figura 1 se muestra un pequeño esquema que clarifica la estructura de datos que utilizaremos.
Merece la pena destacar que los identificadores de los ordenadores no tiene por qué estar ordenados, dependerán de las inserciones y eliminaciones que se realicen en cada una de las subredes. Por lo tanto, no supondremos, en ningún caso, que los ordenadores tienen algún orden en las subredes.
Las operaciones básicas que tenemos que definir para manejar la red de ordenadores van a ser:Procedure Iniciar_Red_Total ( Var la_red: Red_Total );
Function Anadir_Ordenador ( Var la_red: Red_Total; num_red: Indice; ip: Identificador ): Boolean;
Añade un ordenador nuevo con identificador ip al final de la red num_red.
Function Buscar_Ordenador ( la_red: Red_Total; ip: Identificador; Var ord: Conexion_Ordenador ): Boolean;
Function Desconectar_ordenador ( Var la_red: Red_Total; ord: Conexion_Ordenador ): Boolean;
Function Enviar_Mensaje ( ord1, ord2: Conexion_Ordenador ): Boolean;
Procedure Unir_Redes ( Var la_red: Red_Total; num_red1, num_red2: Indice );
Figura 1: Esquema general de la red de ordenadores simulada.
La simulación de la red anterior la realizaremos mediante la lectura de un fichero de datos que contiene una serie de sucesos que ocurren en la red. Cada uno de estos sucesos implica la realización de una determinada tarea en la administración de la red. Los sucesos que supondremos que pueden ocurrir en las redes de ordenadores son:
Todas las tareas de administración de la red deben realizarse utilizando exclusivamente las funciones definidas en la unidad de listas.
En este fichero se especifican todos los sucesos u operaciones que ocurrirán o realizarán en la simulación.
Cada uno de estos sucesos aparece en una línea del fichero texto. En primer lugar se indica el código del suceso y a continuación los ordenadores a los que dicho suceso afecta dentro de la red total.
Veamos el código de sucesos:
F id_ordenador | (falla el ordenador id_ordenador) |
M id_ord1 id_ord2 | (mensaje desde el ordenador id_ord1 al ordenador id_ord2) |
A id_SubRed | (Añadir ordenador a la subred id_SubRed) |
U id_SubRed1 id_SubRed2 | (Unión de la subred id_SubRed1 con la subred id_SubRed2) |
Todos los identificadores anteriores son números enteros.
Ejemplo de fichero:
A 1Otro ejemplo de fichero: simula.dat
Para visualizar los sucesos que van ocurriendo en la red, se proporcionan una serie de funciones y procedimientos que facilitarán la representación gráfica de las redes de ordenadores. Estas funciones, incluidas en el módulo dibu_red.tpu, tienen la siguiente forma:
Procedure Fin_Modo_Grafico;
Finaliza el modo gráfico.
Procedure Dibujar_Ordenador ( red, posicion, ip: Integer );
Dibuja un ordenador en la posición posicion de la subred red con el identificador es ip
Procedure Marcar_Ordenador ( red, posicion, ip: Integer );
Dibuja el ordenador en la posición posicion de la subred red con el identificador es ip, con un color diferente.
Procedure Escribir ( num: Integer; cad: string );
Escribe cad en la línea num (1 ó 2) de la ventana de mensajes que aparece en la parte inferior de la pantalla.
Procedure Limpiar_Red ( red: Integer )
Borra la subred red de la pantalla
Con estas funciones se pretende que el alumno, además de programar las funciones anteriormente citadas, escriba un procedimiento en Pascal que dibuje en pantalla la red de ordenadores completa. El algoritmo de este procedimiento es el siguiente:
Para(1) cada red (red_i) de la red total hacer Limpiar_Red (red_i) posicion = 1 Para(2) todos los ordenadores de la red (red_i) hacer Dibujar_Ordenador(red_i, posicion, identificador_ordenador) posicion := posicion + 1 Fin_para(1) Fin_para(2)
Este procedimiento tendrá que ser llamado cada vez que se realice una modificación en la red.
Al finalizar la práctica se entregarán al profesor tres programas en Pascal:
Red_Ord.pas
El programa principal que realiza la simulación (lectura de los sucesos desde el fichero y ejecución de las tareas de administración adecuadas)
Uni_List.pas
Unidad que contiene la definición de los tipos necesarios y la implementación de los subprogramas de trabajo sobre las listas doblemente enlazadas.
Uni_Cola.pas
Unidad que contiene las definiciones de tipo adecuadas y la implementación de los subprogramas de trabajo sobre colas circulares.
Antes de poder empezar a realizar cualquiera de las prácticas es necesario presentar al profesor un pequeño esquema de las tareas que va a realizar la práctica, explicando brevemente y en lenguaje natural como van a solucionarse los problemas que se plantean.
Una vez entregado al profesor el esquema se procederá a realizar la práctica, entregándose la práctica resuelta al profesor en el plazo previsto para ello, no pudiéndose prorrogar este plazo en ningún caso.
ENTREGA DE PROGRAMAS: Al finalizar la segunda sesión de prácticas correspondiente.