#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //Para que los datos dentro de la distribucion normal se repitan o no #define REPETICION 0 //Para opciones de TIEMPO DE ATENCION o INSTANTE DE PAQUETE ATENDIDO #define ORDEN 0 #define PAQUETES_ATENDIDOS 0 //Tiempo ocupado y de llegada ,Distribucion Normal y de Poisson respectvamente #define DIST_NORMAL 1 //Para atencion de paquetes #define POISSON 1 //Para llegada de paquetes //Para que sea una distribucion uniforme, todos los datos deben ser equiprobables, // por lo que no se deben repetir //Variables Globales extern float lambdapoisson; //Promedio de llegada de paquetes extern float lambdaexponencial; //Promedio de tiempo atencion de paquetes extern char unidad; //Unidad de tiempo de tiemposervicio del servidor extern int resolucion; extern float tiemposervicio; //Tiempo de tiemposervicio del servidor extern char exper; //Cantidad de experimentos extern int experimentos; //Cantidad de experimentos extern int cantidad; //Cantidad de datos que llegan en el intervalo de tiempo extern float *tiempo_entre_llegadas; extern float *instante_llegada;//Instantes de llegada de paquetes extern float *instante_reduce_cola;//Instantes en que se reduce la cola extern float *tiempo_ocupado;//Tiempo ocupado para cada paquete extern float *tiempo_entre_reduce;//Tiempo transcurrido entre el termino de atencion de paquetes extern float tiempo_espera;//Tiempos de espera de cada paquete hasta ser atendido extern float *tiempo_sistema;//Tiempos de permanencia de un paquete en el sistema extern float tasa_de_ocupacion;//Tasa ocupacion de sistema extern float m; extern int cola; extern float aux; extern char c;//Para evitar eco en getchar extern float horadisp; //Variables para calculo de Leyes de Little extern float datos; extern float largo_cola; //Variables de control de loops extern int d; extern int i; extern int j; extern int k; extern int u; extern int check; extern char continuar; //----------------PARA PROCESOS------------------// extern pid_t pid; extern int pfd[2]; extern int status; extern FILE *sd; //----------------PARA HEBRAS------------------// extern int rc , detachstate; extern pthread_t tid; extern pthread_attr_t attr; //-------------PREDECLARACION DE FUNCIONES-------------// //--------------FUNCIONES PARA MANEJO DE DATOS DE LLEGADAS Y ATENCIONES--------// //Ingreso de datos void ingreso_datos(void); //Generadora de instante de paquete float *instante_llegadas_paquetes(float instante_llegadas[]); //Generadora de tiempo entre llegada de paquetes float *entre_llegadas(float *instante,float tiempo_entre_llegadas[]); //Generadora de tiempos de asistencia float *time_busy(float tiempo_ocupado[]); //Generadora de instantes de reduccion de cola float *tiempo_reduce_cola(float hora_disp[],float *instante,float *tiempo_busy); //Generadora de tiempo entre instantes de reduccion de cola float *entre_reduce_cola(float tiempo_dormido[],float *instante_reduce_cola); //Manejo de cola void manejo_cola(); //Tiempo medio de espera float average_wait_time(float tiempo_espera[],float *instante_reduce_cola, float *instante_llegada,float *tiempo_ocupado); //Tiempo medio en el sistema float *average_system_time(float system_time[],float *instante_reduce_cola,float *instante_llegada); //Tasa de ocupacion float tasa_ocupacion(float *tiempo_ocupado,float *instante_reduce_cola); //Tiempo medio de espera segun Little float tiempo_espera_little(); //Tiempo medio en el sistema segun Little float tiempo_sistema_little(); //Tasa de ocupacion segun Little float ocup_little(); //Tiempo total que el server esta ocupado segun Little float cola_little(); //--------------GRAFICOS Y DATOS EN OCTAVE-----------// //Envio de datos de llegada a Octave void posicion(float data[],FILE *sdA); //Ploteo de llegadas en octave void *plotoctave(); //Tratamiento de datos en octave void llegadas_octave(float *instllegada,FILE *sd); //Envio de datos de tiempos de atencion o instante de paquete atendido a Octave void posicion2(float data[],FILE *sdA); //Ploteo en octave de tiempos de atencion o instantes de paquete atendido void *plotoctave2(); //Tratamiento en Octave para tiempos de atencion o instantes de paquete atendido void atencion_octave(float *atencion,FILE *sd); //----------FUNCIONES RELACIONADAS AL IPCS Y SEÑALES -----------// //Configurar fork, pipes, y llamada a Octave void forkOctave(void); //Impresion de error de captura de señal void err_sys(char * msg) ; //Atexit void salir(void); //Imprimir arrays void imprimearray (float data[]); //Promedio de un arreglo float promedio(float data[]); //Promedio de diferencias en un arreglo float promedio2(float data[]);