universidad autonqma metropolitana unidad iztapalapa de

26
UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DIVISION DE CIENCIAS BASICAS E INGENIERIA

Upload: others

Post on 01-Oct-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA

DIVISION DE CIENCIAS BASICAS E INGENIERIA

Page 2: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Autores: Alvaro Lorenzana Ca Jorge Manuel Pined

Asesor: Fausto Casco Sanchez

Mayode 1997

Page 3: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

CONTENIDO

I. Introducción

I I . Simulación

I I. 1 . Concepto

11.2. Números Aleatorios

Ill. La Red Estrella

IV. Descripción del programa

V. Pruebas de comportamiento del simulador

VI. Apéndice A. Listado

Proyecto de Ingeniería Electrónica I y I1

VII. Apéndice B. Gráficos de distribuciones aleatorias

VI I I. Bibliografía

Pag .

1

2

3

5

6

8

9

20

23

Page 4: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Proyecto de Ingeniería Electrónica I y I /

I. INTRObVCCION

Con la proliferación de las redes de computadoras, no es difícil imaginar la necesidad creciente de la comunicación de datos. Una descripción breve de algunas aplicaciones soportadas por las redes ayudará a comprender los problemas básicos que surgen en este campo.

Esisten muchas aplicaciones basadas e el acceso remoto a recursos centralizados. Un ejemplo común son las redes locales donde hay un cierto número de estaciones de trabajo sin disco duro de almacenamiento que usan uno o varios servidores para accesar archivos. Otros ejemplos son los sistemas de información y servicios financieros disponibles para los usuarios de computadoras personales. Ejemplos más elaborados, que requieren de una interacción estrecha entre la instalación remota y la educación a distancia asistida por computadora. En algunos casos, existe un compromiso entre la localización de la base de datos, dondequiera que se necesite y el costo del acceso remoto. En otros, cuando la base de datos cambia rápidamente, no existe más alternativa que la comunicación entre los sitios distantes y la instalación central.

Junto a estos, se encuentran aplicaciones que incluyen la actualización remota de una base de datos, quizá al mismo tiempo que el acceso a la lectura. Los sistemas de reservación de las aerolíneas, los cajeros automáticos, los sistemas de control de inventarios, los procesadores de texto que aceptan un conjunto de autores geográficamente distribuidos, son algunos ejemplos. En general, para las aplicaciones de este tipo, existen varios puntos dispersos sobre un territorio desde donde los datos pueden ingresar y aún salir. Ya sea que los datos se procesen y almacenen en uno o varios puntos, existe la necesidad de la red para colectarlos y distribuirlos. En cualquier base de datos con usuarios múltiples existe un problema para mantener la consistencia de la información.

Los requerimientos de acceso a archivos y bases de datos han crecido en los Últimos años. En parte se debe al crecimiento natural en el campo. Otra razón es que las nuevas estaciones de trabajo se han orientado en forma progresiva hacia los gráficos y para transmitir una imagen de alta resolución se necesitan varios millones de bits.

Otra aplicación muy conocida es el correo electrónico entre los usuarios de una red, en donde la correspondencia puede leerse, imprimirse, archivarse, retransmitirse con comentarios agregados y difundirse a un conjunto de usuarios en forma simultánea.

Desde el punto de vista del usuario, y de una forma muy general, una red de comunicación de datos está constituida por un conjunto de elementos capaces de realizar la tarea de comunicación entre dos entidades que así lo requieran. Dichos elementos serán programas o equipos entre los que pueden establecerse relaciones específicas. Por ejemplo, comunicación entre programas con objeto de intercambiar información para cooperar en la resolución de una función; comunicaciones entre programas y equipos con el objeto de que los primeros hagan uso de los servicios de los segundos.

1

Page 5: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Proyecto de Ingeniería Electrónica I y I1

11. SIMULACION

11.1 . Concepto

A veces para que un modelo sea tratable analíticamente tienen que hacerse hipótesis no muy realistas sobre el sistema y/o su funcionamiento que pueden comprometer seriamente la credibilidad del modelo resultante. En estos casos, una alternativa sería evaluar las prestaciones del sistema haciendo experimentos con el propio sistema. Esto puede que no sea posible si el sistema aún no se ha implementado o no puede ser perturbado. Ahí sólo nos queda una salida: usar la técnica de simulación. Con la simulación, los experimentos se realizan con un modelo del sistema y no con el sistema.

Informalmente, un modelo es una abstracción del sistema en estudio. Una directriz básica al hacer esa abstracción es la de que sólo se capturen las características esenciales del sistema. La dificultad de construir un modelo para un sistema reside en la elección juiciosa de sus características esenciales. Debe observarse también que la abstracción de las características de un sistema esta influenciada por las inclinaciones y por la experiencia de la persona encargada del modelado. Así, podemos concluir que, para un mismo sistema, no existe un modelo único. El modelo de un sistema puede ser visto como una simplificación que descarta las características del sistema juzgadas como irrelevantes.

Una vez construido el modelo de un sistema deben obtenerse medidas de sus salidas en función de sus entradas y del conjunto de valores adoptados para sus parámetros. La simulación es una técnica numérica de realizar experimentos a fin de obtener las medidas de interés.

AI desarrollar el simulador, se debe tener siempre en mente que el programa que se esta escribiendo no es el modelo. Esta separación es importante para que no se confunda la validación del modelo con la depuración del programa simulador.

Los siguientes puntos deben ser considerados cuidadosamente:

o

a

a

, o

a

o

a

a

El modelo debe ser lo más simple posible pero sin comprometer la fidelidad con las características esenciales del sistema simulado. Para aumentar la precisión de los resultados se deben hacer mas ejecuciones o ejecuciones más largas del simulador aumentando el costo de la simulación. Cualquier programa debe ser probado minuciosamente. El modelo debe reproducir la estructura del sistema y no su forma en las mínimos detalles. Hay que resistirse a la tentación de generalizar conclusiones basadas en los resultados del simulador. El efecto de las muestras autocorrelacíonadas está casi siempre presente en experimentos de si mu lación. Los experimentos de simulación deben, en consecuencia, ser escogidos debidamente para examinar y evaluar sólo los casos más prometedores; entonces puede escogerse la alternativa con las mejores prestaciones. Ello no implica, sin embargo, que la alternativa escogida sea la Óptima. AI comparar la solución analítica del modelo, la técnica de simulación camufla las relaciones entre causas y efectos, es decir, la dependencia de las prestaciones observadas con los parámetros del modelo no se consigue explícitamente a través de una relación simbólica.

2

Page 6: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Proyecto de Ingeniería Electrónica I y I1

Es práctica común inicializar el reloj del simulador con un valor de cero. Unidad de tiempo simulado (uts) es el valor mínimo con el cual el reloj se incrementa. Una uts debe tener un valor lo suficientemente pequeño como para reflejar la forma realista de los intervalos de tiempo significativos para el sistema. Es importante tomar en cuenta que no existe ninguna relación entre el tiempo simulado y el tiempo real.

En términos generales el programa simulador consta de tres partes: 1. Inicialización 2. Rutinas de manejo de sucesos 3. Rutinas de salida de resultados

11.2. Números Aleatorios

Muchos de los sistemas que son estudiados por simulación tienen la característica de la aleatoriedad. Por ejemplo, en una red local, el proceso de llegada de paquetes a la subred de comunicación y el proceso relativo a los tiempos de servicio de esos paquetes son procesos aleatorios. Para simular aleatoriedad, el simulador debe producir valores para las diversas variables aleatorias del modelo.

Un procedimiento que puede producir números; se dice que es un generador de números aleatorios si los números generados son equiprobables y si cada número generado es completamente independiente del número anterior. Estadísticamente, esto equivale a decir que estos números son elementos de variables aleatorias independientes y que estas variables están distribuidas uniformemente.

El generador de número aleatorios sigue una distribución uniforme. En el simulador, sin embargo, los otros tipos de distribución de probabilidades son usualmente necesarios para caracterizar variables exógenas (es decir, variables aleatorias usadas para describir actividades en el entorno que afectan el sistema modelado). Por tanto, el simulador debe incluir la representación de valores aleatorios que son especificados de acuerdo con una cierta distribución. estos valores aleatorios son frecuentemente usados para representar las variables exógenas. En este proyecto además de la distribución uniforme, se utilizan los siguientes generadores de valores aleatorios:

0 Exponencial: Obteniéndolo de la siguiente forma con T, = tiempo medio entre llegadas

A = tasa de llegadas medias

0 Gaussiana:

Si K=12

3

Page 7: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Proyecto de Ingeniería Electrónica I y I1

12

Y = C X i - 6

El apendice B muestra las distribuciones aleatorias utilizadas en la simulación e indica a que variables fuerón aplicadas.

4

Page 8: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Proyecto de Ingeniería Electrónica I y I1

111. LA REb ESTRELLA

El objetivo principal de una red de computadoras es el de transmitir información de un punto a otro. Existen distintas topologías de redes como son:

Topología en bus 0 Topología en anillo

Topología en estrella Topología en árbol

0 Topología de malla

La topología en estrella es una de las más usadas en los sistemas de comunicación de datos principalmente por razones históricas.

La red en estrella se utilizó a lo largo de los años sesenta y principios de los setenta, porque se consideraba fácil de controlar; debido a que la programación para su funcionamiento y mantenimiento no es complicada y su flujo es sencillo.

Todo el tráfico atraviesa el núcleo de la estrella, que en la figura 1 es el nodo central. este nodo, por lo general una computadora, posee el control total de los ETD (Equipos Terminales de Datos) conectados a él.

El nodo central es responsable de enrutar el tráfico hacia el resto de los componentes, se encarga además, de localizar las averías; esta tarea es relativamente sencilla en el caso de una topología estrella, ya que siempre es posible aislar las líneas para identificar el problema. Sin embargo, una red en estrella puede sufrir saturaciones y problemas en caso de ocurrir una avería en el nodo central.

Figura 1 Esquema de una red con Topología estrella

5

Page 9: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Proyecto de Ingeniería Electrónica I y II

I V . DESCRIPCION DEL PROGRAMA

Generalidades El simulador de red estrella utiliza la técnica de programación recursiva para la generación, conexión y desconexión de los envíos generados por las terminales que se conectan a la red; emplea rutinas de generación de valores aleatorios para asignar origen, destino y duración de los envíos(Ver apendice B). La simulación comienza con dos eslabones y cada corrida sucesiva incrementa el número de eslabones hasta llegar a veinte; la selección del número máximo de eslabones se realizo con base en el comportamiento observado. Para un número de eslabones mayor a diez el número de bloqueos tendía rápidamente hacia cero.

La programación del simulador se basa en el diagrama de flujo mostrado en la figura 2; en el diagrama TF se refiere al número entero más grande que puede manejar la computadora y TA es el tiempo de llegada del próximo paquete. Además de los procedimientos que se describen más adelante, el simulador utiliza dos archivos de cabecera (gpr0tii.h y pprotii.h), en los que se implementan los procedimientos y funciones de presentación, captura de parámetros de simulación y despliegue de resultados parciales y finales de las variables de simulación.

I I

Figura 2 Diagrama de flujo para el desarrollo del simulador

6

Page 10: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Proyecto de ingeniería Electrónica I y I1

bescripción de procedimientos y funciones principales

simulacion. Es aquí donde se realiza propiamente la simulación de la red. Se trata de un procedimiento recursivo en el que se generan y atienden (conexión y desconexión) los paquetes generados por las terminales conectadas a la red. La recursión termina cuando se alcanza el tiempo máximo de simulación T-MAX (en segundos); las variables generadas por cada corrida del simulador se almacenan en listas ligadas para elaborar un reporte de resultados final.

generajaquete. Se encarga de generar los paquetes a ser enviados; para esto, crea listas ligadas de estructuras PAQUETE para cada terminal; cada estructura tiene los siguientes campos:

destino. Se refiere a la terminal con la que se desea establecer el enlace físico. estado. Es la condición actual del paquete; EN-ESPERA significa que aun no ha sido enviado, EN-PROCESO indica que ya se realizo la conexión física con la terminal destino y probablemente aun no termine de ser enviado. tiempo de llegada. Indica la hora de creación del paquete, se utiliza en combinación con el campo longitud para saber si el envío ya se completó. eslabon. Contiene el número de eslabón utilizado en la conexión, si eslabon=-1, entonces el envío no ha sido conectado. longitud. Es el tamaño del paquete en bytes.

actualiza-envios. Aquí se simula el circuito de conmutación de paquetes(Nod0 central). Se consultan todos los frentes de las listas de paquetes por terminal; si el campo estado de la estructura PAQUETE indica EN-PROCESO, entonces verifica si el envío ha sido completado, en cuyo caso libera el enlace utilizado. Por otro lado, si el paquete esta marcado como EN-ESPERA, trata de conseguir un eslabón para enviarlo. Este procedimiento actualiza los contadores de ocupados y bloqueados.

cambios y avances. Durante cada una de las corridas del simulador, se proporciona información al usuario sobre el estado actual de las variables del sistema; estas variables son: número de envíos bloqueados, número de envíos ocupados y número de envíos logrados. Las corridas se distinguen por el número de eslabones utilizados por el circuito de conmutación.

eliminajaquete. Cuando un paquete es enviado totalmente a su destino, el eslabón que se utilizo es liberado y las terminales origen y destino se marcan como LIBRE, además, se actualiza el contador de logrados y el paquete es eliminado del frente de la lista de la terminal origen.

libera-nodo. Cuando un paquete ha sido enviado o cuando, al final de la simulación han quedado paquetes sin enviar; se llama a este procedimiento para liberar la memoria utilizada por los nodos de las listas ligadas de estructuras PAQUETE.

reporte-final. AI finalizar todas las corridas del simulador, muestra gráficos que describen el comportamiento del modelo del sistema, y una tabla que sintetiza los resultados en función del número de eslabones.

, primera. Muestra en pantalla la presentación del proyecto (Nombre del proyecto, Asesor, Nombre de los alumnos,...).

segunda. Es donde se definen los parámetroc (No. de terminales, velacidad de proceso, tiempo medio de llegada y longitud media de los paquetes) con los que se va a llevar a cabo la simulación

7

Page 11: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Proyecto de Ingeniería Electrónica I y I1

V. PRUEBAS DE COMPORTAMIENTO OEL SIMULADOR

A continuación se muestran los resultados obtenidos cuando se ejecuto el simulador para distintos valores de los parámetros de simulación mientras se mantenía alguno o algunos de estos parámetros constantes.

Parámetroc: T-MAX ; Es el máximo tiempo de simulación (en segundos). tiemed: Tiempo medio de llegada de los paquetes (en segundos). velcpu: Velocidad de proceso de la CPU en Mbps. lonmed: Longitud media de paquete en Kbytes.

Para: tiemed=3 segundos, lonmed=300 Kbytes. velcpu=l Mbps.

A variar T-MAX se observa que para valores menores de 5500 segundos de simulación las corridas se realizan en forma normal, pero para valores superiores, ocurre error en la asignación dinámica de memoria a partir de la simulación correspondiente a nueve eslabones.

Para: T_MAX=3600 segundos lonmed=300 Kbytes velcpu=l Mbps

Para tiemed con distribución exponencial. Modificando tiemed desde 3 hasta 30 segundos, no se observa ningún efecto en la ejecución normal del programa. Pero los resultados muestran que la gráfica de bloqueadas decae más rápidamente cuanto mayor es el valor de tiemed. Para tiemed con distribución uniforme. Se observa un aumento en el número de bloqueos y ocupados cuando tiemed=3 se tienen hasta 4000 bloqueos y 2500 ocupados, mientras que para tiemed =30 el número de bloqueos y ocupados es muy pequeño.

Para: T_MAX=3600 segundos lonmed= 300 Kbytes tiemed=l O segundos

Cuanto mayor es la velocidad de la CPU más rápidamente son despachados los paquetes y por lo tanto se observa que el número bloqueos disminuye rápidamente, lo mismo que los ocupados.

Para: T:MAX=3600 segundos tiemed=3 segundos velcpu=l Mbps

Si se incrementa el valor de lonmed se observa un aumento considerable en el número de bloqueos y ocupados.

En todas las pruebas se mantuvo fijo el número de terminales de la red en 100 unidades.

En general se observó que cuando se incrementaba el número de eslabones disminuía el número de bloqueos mientras aumentaba el número de ocupados. Para una velocidad de CPU baja (1 Mbps) podemos sugerir que el número de eslabones Óptimo es de 12 ya que a partir de 1 O es muy raro que aparezcan paquetes bloqueados.

8

Page 12: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Proyecto de Ingeniería Electrónica I y I1

Listado del Programa Simulador

9

Page 13: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Proyecto de Ingeniería Electrónica I y I1

A continuación se presenta el listado del programa simulador; no se muestran las las líneas correspondientes a los archivos de cabecera gpr0tii.h y ppr0tii.h debido a que no contienen información relevante respecto al funcionamiento del programa. Estos archivos se utilizan sobre todo para el manejo de la interface con el usuario.

'

PROYECTO DE INGENIERIA ELECTRONICA I1

S I M U L A D O R D E R E D E S T R E L L A

ASESOR : Fausto Casco Sánchez

ALUMNOS : Lorenzana Camacho Alvaro Pineda Pérez Jorge Manuel

#include "gpr0tii.h" #include "ppr0tii.h"

/* Definición de constantes simbólicas */

#define MAX-TER 101 #define OCUPADA 1 #define LIBRE O #define T-MAX 3600 #define NINGUNO - 1 #define EN-ESPERA O #define EN-PROCESO 1

/* 1 hora (Tiempo total de simulación)

/* Definicien de estructuras */

typedef struct PAQUETE ( unsigned destino, /* Terminal destino */ estado; /* Indica si un paquete est en */

*/ unsigned long llegada, /* Hora de llegada del paquete */

longitud; /* Longitud de paquete en Kbytes */

/* espera o ya fue conectado

int eslabon;

struct PAQUETE *siguiente; /* Apunta al próximo paquete a ser */ } PAQUETE; /* enviado */

/* Variables y apuntadores globales */ unsigned

n-esl, n-ter= 100, ocupadas=O,

bloqueados=O,

logrados=O,

/* Número de líneas en la red /* Número de terminales conectadas a la red */ /* Número de envíos que encuentran la */

*/

/* terminal destino ocupada */ /* Número de envíos que no encontrarán */ /* eslabón libre */ /* Número de envíos realizados con éxito *I

*/

10

Page 14: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Proyecto de Ingeniería Electrónica I y I1

totales=O, velcpu= 1, lonmed=300, tiemed=3,

linea [5 11, terminal [MAXTER];

double espera; unsigned long reloj,

longmed, vel-cpu, n-paq ;

char opc;

PAQUETE *frente [MAX-TER], *final [MAX-TER];

extern PUNTO "frente-b, "frente-o;

/* ocupadas+bloqueados+logrados */ /* Velocidad de la CPU /* Longitud media del paquete /* Tiempo medio de llegada del los paquetes */

*/ */

/* Suma de tiempos de espera en terminal */ /* Reloj del simulador */

/* Apuntan a frente y final de la cola de */ /* paquetes generados por cada terminal */

/* PROTOTIPOS */

void inicia-graficos(void), dibujaVetd(int,int,int,char[2]), primera(int,int), segunda(int,int), tercera(int,int), cuarta( int) ;

/*------Programa principal------*/

void main() {

clrscr(); inicia-graficos(); maxx=getinaxx(); maxy=getmaxy (); primera(maxx,maxy); getch0; dol

segunda(maxx,maxy); ) while(opc!=27); closegraph(); window( I , 1,80,25); textbackground(BLACK); clrscr();

1

/* Gráfico de bloqueo de envíos *I /* Gráfico de envíos ocupados */

/*------Prototipos ---_______ */ void texto1 (void),

aleatorio (void), marcos (void), efecto (int,int,int,int,int), efecto 1 (int,int,int,int,int), saturno (int,int,int);

11

Page 15: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Proyecto de Ingeniería Electrónica I y I1

void primera(int x, int y)( cleardevice(); aleatorio(); saturno(x,y, I ) ; dibuja-etd(x, 125,1,"A"); dibuja-etd(x,y-50,1 ,"I"); dibuja-etd(x/2,y/2+40,1 ,"U"); dibuja-etd(3 *x/2,y/2+40,1 ,"M"); marcos(); del ay( 5 00) ; texto 1 ();

1

/*---Prototipos----*/

void texto2(void), texto2-1 (void), captura(void), seleccion(int), canales(int,int), reporte-final(void);

void segunda(int x,int y){ cleardevice(); aleatorio(); setcolor(L1GHTGRAY); setfillstyle( SOLID-FILL,LIGHTGRAY); bar(x/2,30,~-70,230); efecto(x/2+5,35,~-75,225,2); saturno( x/2,y,2); dibuja_etd(x/2,150,2,"A"); dibuja-etd( x/2,y- 100,2,"1"); di b uj a-e td ( d 4 - 20, y/2+20,2, "U"); di buj a-etd( 3 *x/4+20,y/2+20,2,"M"); texto2(); captura(); texto2- 1 (); seleccion(maxx);

1

/* _ _ _ _ Prorotipos _ _ _ _ _ _ _ */ int campos(int); void mas(int),

menos(int);

void seleccion(int x){ i nt cont=O,camb=O,sal ,t=maxx/2+ 15 ;

do { sal=O; setfillstyle(SOL1D-FILL,LIGHTGRAY); opc=toupper(getch()); switch(opc) (

case 9 : efectol(t,368,t+140,383,1);

12

Page 16: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Proyecto de Ingeniería Electrónica 1 y 11

bar(x/2+ 10,45,x-80,220); cont=campos(cont); texto2(); captura(); camb++; if(camb==5) camb= 1 ;

break; texto2-1();

case 72 : efectol(t,383,t+140,397,1);

case 80

if(cont>=O && camb>O){ mas(camb); bar(x/2+ 10,45 ,x-85,220); if(cont>O) cont--; else cont=3; cont=campos(cont); texto2(); cap ma();

1 texto2-10; break; efecto1 (t,398,t+140,4 12,l); if(cont>=O && camb>O)(

menos(camb); bar(x/2+ 10,45,x-85,220); if(cono0) cont--; else cont=3; cont=campos(cont); texto2(); captura();

I texto2-10; break;

case 83 : efectol(t,4 13,t+140,427,1); tercera( maxx, max y); cuarta(maxx/2); getch0; reporte-final(); sal= 1 ; opc=27; break;

delay(50); sal= 1 ; break;

case 27 : efectol(t,428,t+l40,442,1);

I ] while(sal==O);

I

/*-----Prototipos---*/ void texto3(int),

avances(void), cambios(void), transmision(int,int,int), inicializa(void), simulacion(unsigned long), elimina-paquete(unsigned), libera-nodos(void),

13

Page 17: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Proyecto de Ingeniería Electrónica I y I1

libera(PUNT0 *);

void tercera(int x,int y)( int i,nivel=O;

cleardevice(); aleatorio(); saturno(x/2,y,2); dibuja-etd(x/2,150,2,"A"); dibuj a-etd( d2,y- 100,2,"1"); dibuja-etd(x/4-20,y/2+20,2,"U"); dibuj a-etd( 3 *x/4+20,y/2+20,2,"M"); texto3( d2 ) ; setcolor(WH1TE); longmed=lonmed* le3; vel-cpu=velcpu* le6; randomize(); for(n-es1=2;n-esl<=MAX-LIN;n-e~1++) (

inicializa(); simulacion(0); avanceso; cambios(); for(i=O;i< 1 O;¡++)(

if( nivel==O) nivel= 1 ; else nivel=O; transmision(x/2,y,nivel); delay( 15); canales(x/2,y);

1 guarda-resultado(n-esl); libera-nodos(); I

1 /*______Prototipo _ _ _ _ _ _ */ void texto4(int);

void cuarta(int x)( cleardevice(); aleatorio(); texto4(x);

I

/* Asigna valores iniciales para las variables del simulador */ /* Prototipos */ void genera-paquete(void); unsigned long gaussiano(void);

void inicializa() { in t i ;

for(i=l; i<n-ter; i++)

for(i=O; ia -es l ; i++)

reloj=O;

terminal [ i]=LIBRE;

linea[i]=LIBRE;

14

Page 18: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Proyecto de Ingeniería Electrónica I y II

bloqueados=O; logrados=O; ocupadas=O; totales=O; n_paq=O; espera=O; I

/* Generación de paquetes y actualización las colas donde se guardan.

/* Prototipos * I float genera-llegada(void); void conecta-envio(unsigned,int),

Reporta el estado de las variables del simulador *I

actualiza-envios( void), incrementa( char);

void simulacion(unsigned long t-llegada) (

if(T-MAX > t-llegada) ( reloj=t-llegada; genera-paquete(); n-paq++; actualiza-envios(); t-llegada=reloj +genera-llegada(); simulacion(t-llegada);

1 reloj=T-MAX;

actualiza-envios(); I

/* Genera paquetes y los asigna a alguna terminal. La asignación se realiza mediante una variable aleatoria con distribución uniforme *I

void genera-paquete() { PAQUETE *nodo; unsigned origen, destino;

nodo=( PAQUETE *)malloc( sizeof(PAQUETE)); if( !nodo)

errasignal(); origen=random(n-ter); do

while(origen==destino); nodo->destino=destino; nodo->llegada=reloj; nodo->longi tud=gaussiano(); nodo->eslabon=NINGUNO; nodo->estado=EN-ESPERA; nodo->siguiente=NULL; if(!frente[origen]) [

1 else

final[origen]=nodo;

destino=random(n-ter);

frente[origen]=nodo; final[origen]=nodo;

final[origen]->siguiente=nodo;

I

/* Revisa las colas de paquetes por terminal para realizar la conexión de los paquetes que se encuentren al frente. También elimina paquetes de las colas cuando el envío ha sido completado. Actualiza los contadores de bloqueadas y ocupadas. *I

15

Page 19: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Proyecto de Ingeniería Electrónica I y I1

I* Prototipos *I hay-eslabon(unsigned *);

void actualiza-envios() ( unsigned i, libre, band-o=O;

for(i=O; i<n-ter; i++) if(frente[i]) (

i f(frente[ i] ->estado==EN-ESPERA) if(hay-eslabon(&libre))

if( terminal [ frente [ i] ->desti no]==LIBRE) conecta-envio( i Jibre);

else incrernenta('0');

else if(!band-o) {

1 incrementa('B'); band-o= 1 ;

if(frente[ i]->estado==EN-PROCESO) if(reloj >= (frente[i]->llegada+frente[ i]->longitud*8/vel~cpu)) (

espera+=reloj-frente[i]-Alegada; elimina-paquete(¡); band-o=O;

1 I

1

void incrementa(char c) { switch(c) (

case 'O': ocupadas++; break; case 'B': bloqueados++; break; case 'L': logrados++; break; 1 totales++;

1

/*Conecta el envío *I

void conecta-envio(unsigned origenjnt eslabon) ( terminal [origen]=OCUPADA; terminal[frente[origen]->destino]=OCUPADA; linea[eslabon]=OCUPADA; frente[ origen]->estado=EN-PROCESO; frente[origen]->eslabon=eslabon;

I

/* Elimina un paquete de la cola cuando ha sido enviado con éxito. *I Actualiza el contador de logradas.

void elimina-paquete(unsigned actual) [ PAQUETE *aux=fren te [ actual] ;

if(aux) ( frente[actual]=frente[actual]->siguiente; if(! frente[actual])

terminal [actual]=LIBRE; final[actual]=NULL;

16

Page 20: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Proyecto de Ingeniería Electrónica I y I1

terminal[ aux->destino]=LIBRE; linea[aux->eslabon]=LIBRE; free( aux) ; incrementa('L');

I I

/* Investiga si hay eslabón 1ib;e *I

hay-eslabon(unsigned "eslabon) { unsigned exito=O; for( *eslabon=O; *eslabon <n-esl && !exito; (*eslabon)++) exito=(linea[ *eslabon] == LIBRE)? 1 : O; (*eslabon)--; return(exit0);

I

I* Generadores de números aleatorios */

/* Distribución gaussiana (Longitud del paquete en Bytes) */ unsigned long gaussiano(void) (

int i ; unsigned long x=O,y,des=le6;

for(i=O;i<l2;i++) { y=abs(raiidom(30)-6); x=x+y;

I return((x*des+longmed)/72.0); I

I* Distribución exponencial (Intervalo de llegada del siguiente paquete) */ float genera-llegada(void) (

double expo,z;

z=random(tiemed)+ 1 ; expo=log(z)*3; return(ceii(exp0));

I

/* En caso de que no todos los paquetes que se generaron hayan sido enviados y si se alcanzo el tiempo máximo de simulación la memoria utilizada por estos es liberada */

void libera-nodos() ( i n t i ; PAQUETE *aux;

for(i=O; i<n-ter; i++) i f(fren te[ i])

while(frente[i]) ( aux=frente[i]; frente[i]=frente[i]->siguiente; free(aux);

' I I

17

Page 21: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Proyecto de Ingeniería Electrónica I y I1

/* Prototipos *I void parametros( void);

void reporte-final() { int graf=O; char c,

gO[5O]="ENVIOS BLOQUEADOS", gl[50]="OCUPADOS";

inicia-graficos(); prepara-pagina(); grafica(frente-b,g0); graf++; parametros(); do {

if( g r a b 1 ) graf=0;

if(islower(c=getch())) c=toupper(c);

menu(0); switch(graf) { case 0 : grafica(frente_b,gO); break; case 1 : grafica(frente-o,gl); break; 1 delay( 100); menu(-1); graf++;

if(c=='G') {

I if(c=='T') {

menu( I ) ; tabla(); delay(100); menu(-1); I

} while(c != 27 && c != 'SI); menu(2); delay( 100); menu(-1); delay(100); libera(frente-b); libera(frente-o);

I

void parametros() { int x I=getmaxx()-330, x2=x1+295, yl=getmaxy()-60, y2=y1+40; char *niens[3]=( "Tiempo medio de llegada de paquetes [seg] : ","Longitud media de paquete

[bytes] : ","Velocidad de proceso de la CPU [bps] : ' I ) ,

saux[20], saux 1 [ 1001;

tecla(x 1 ,y 1 ,x2,y2,0); settextstyle(SMALL-FONT,0,4); setcolor(BLACK); strcpy(saux 1 ,mens[O]); outtextxy(xl+5,y 1+3,strcat(sauxl,itoa(tiemed,saux,lO))); strcpy(saux 1 ,mens[ I]); outtextxy(x 1 +5,y I +13,strcat(sauxl ,Itoa(longmed,saux, 10))); strcpy(saux 1 ,mens[2]); outtextxy(x1+5,y1+23,strcat(sauxl ,Itoa(vel-cpu,saux,lO)));

I

void libera(PUNT0 *lista) { PUNTO *aux;

Page 22: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Proyecto de Ingeniería Electrónica I y II

if(lista) ( aux=lista->siguiente; free(1ista); libera( aux) ;

I

19

Page 23: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Proyecto de Ingeniería Electrónica

~

l y I1

Gráficos de Distribuciones Aleatorias

20

Page 24: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Proyecto de Ingeniería Electrónica I y I1

Gráfica 1 Distribución Uniforme.

Gráfica 2 Representación de la distribución Gaussiana

21

Page 25: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Proyecto de Ingeniería Electrónica I y I1

Gráfica 3 Representación de la distribución Exponencial

22

Page 26: UNIVERSIDAD AUTONQMA METROPOLITANA UNIDAD IZTAPALAPA DE

Proyecto de Ingeniería Electrónica I y II

VIII. BIBLIOGRAFIA

' Redes Locales de Computadoras Protocolos de alto nivel y evaluación de prestaciones José Antao Beltrao Moura Jacques Philippe Sauve William Ferreira Giozza José Fabio Marinho de Araujo Mc Graw Hill 1990

Las Redes de Computadoras -Monografía- Ricardo Marcelín J. Oreste Téllez A. Rubén Vázquez M. Noviembre de 1994

O El lenguaje de programación C Kernighan Ritchie Prentice Hall Hispanoamericana 1990

23