Escolar Documentos
Profissional Documentos
Cultura Documentos
h>
#include <conio.h>
#include <iostream.h>
#include <time.h>
#define MAX 5
typedef int infocola;
typedef struct tipocola
{
int elems;
int elems1;
int entrada;
int entrada1;
int salida;
int salida1;
infocola procesos[MAX];
infocola tamano[MAX];
};
tipocola cola;
typedef struct tipocola1
{
int elems2;
int elems3;
int entrada2;
int entrada3;
int salida2;
int salida3;
infocola procesos1[MAX];
infocola tamano1[MAX];
};
tipocola1 cola1;
//Prototipo de funcion para el grafico
void grafico();
//Prototipo para hacer una pausa de x tiempo
void sleep( clock_t wait );
//Prototipos de funciones para el paquete basico de la cola1
void crear(tipocola *cola);
int vacia(tipocola cola);
int llena(tipocola cola);
void meter(tipocola *cola, int proc, int tam);
void sacar(tipocola *cola, int *proc, int *tam);
void imprimir(tipocola cola, int proc, int tam);
}
crear(&cola);
crear1(&cola1);
while (n1<iter1)
{
proceso=pro1[n1];
tamano=ta1[n1];
meter(&cola, proceso, tamano);
n1++;
}
while (n2<iter2)
{
proceso1=pro2[n2];
tamano1=ta2[n2];
meter1(&cola1, proceso1, tamano1);
n2++;
}
//----------------------------------------------------------------------while (!vacia(cola))
{
sacar(&cola, &proceso, &tamano);
aux1=proceso;
tam1=tamano;
pausa=tam1*1000;
c=13;
for(i=0; i<5; i++)
{
gotoxy(c,5);cout<<" ";
c=c+4;
}
sleep(pausa);
imprimir(cola, proceso, tamano);
gotoxy(43,5); cout<<aux1;
pausa=0;
pausa=2000;
sleep(pausa);
gotoxy(43,5); cout<<" ";
gotoxy (57,5); cout<<aux1;
}
//--------------------------------------------------------------------------imp1(cola1, proceso1, tamano1);
c=29;
for(i=0; i<5; i++)
{
gotoxy(c,11);cout<<" ";
c=c+4;
}
sleep(pausa);
while (!vacia1(cola1))
{
sacar1(&cola1, &proceso1, &tamano1);
aux2=proceso1;
tam2=tamano1;
pausa=0;
pausa=tam2*1000;
c=13;
sleep(pausa);
for(i=0; i<5; i++)
{
gotoxy(c,5);cout<<" ";
c=c+4;
}
pausa=0;
pausa=2000;
sleep(pausa);
imp1(cola1, proceso1, tamano1);
gotoxy(43,5); cout<<aux2;
sleep(pausa);
gotoxy(43,5); cout<<" ";
gotoxy (57,5); cout<<aux2;
}
gotoxy(43,5); cout<<" ";
getch();
gotoxy(57,5); cout<<" ";
//----------------------------------------------------------------------gotoxy(10,15);cout<<"proceso";
gotoxy(22,15);cout<<"tiempo espera";
gotoxy(37,15);cout<<"tiempo proceso";
c=14;
c1=30;
f=16;
tie=tie1;
for (i=0; i<iter1; i++)
{
gotoxy (c,f); printf("%i",pro1[i]);
gotoxy(42,f); printf("%i",ta1[i]);
gotoxy (c1,f); printf("%i", tie);
tie=tie+ta1[i];
sumpro=sumpro+ta1[i];
prom=prom+ta1[i];
f++;
}
for (i=0; i<iter2; i++)
{
gotoxy (c,f); printf("%i",pro2[i]);
gotoxy(42,f); printf("%i",ta2[i]);
gotoxy (c1,f); printf("%i", tie);
tie=tie+ta2[i];
sumpro=sumpro+ta2[i];
prom=prom+ta2[i];
f++;
}
prom=prom/5;
prom1=tie/5;
gotoxy(14,21); printf("El Tiempo total es = %d", sumpro);
gotoxy(14,22); printf("El promedio de espera es = %.2f", prom);
gotoxy(14,23); printf("El promedio de respuesta es = %.2f", prom1);
} //fin de la funcion main
//Funciones del paquete basico de la cola1
void crear(tipocola *cola)
{
cola->elems = cola->salida =cola->entrada = 0;
cola->elems1=cola->salida1=cola->entrada1=0;
}
int vacia(tipocola cola)
{
if (cola.elems==0 && cola.elems1==0)
return 1;
else return 0;
}
int llena(tipocola cola)
{
if (cola.elems==MAX && cola.elems1==MAX)
return 1;
else return 0;
}
void meter(tipocola *cola, int proc, int tam)
{
cola->elems++;
cola->elems1++;
cola->procesos[cola->entrada++]=proc;
cola->tamano[cola->entrada1++]=tam;
if (cola->entrada==MAX && cola->entrada1==MAX)
{
cola->entrada=0;
cola->entrada1=0;
}
}
cola1->tamano1[cola1->entrada3++]=tam1;
if (cola1->entrada2==MAX && cola1->entrada3==MAX)
{
cola1->entrada2=0;
cola1->entrada3=0;
}
}
{
printf ("Presiona el 1 si el proceso es de CPU o 2 si es de E/S:
");
scanf ("%i", &tipo);
printf ("introduzca el Proceso 1, 2...: \n");
scanf ("%i",&proceso);
printf("Introduzca el tamao del proceso: ");
scanf("%i", &tamano);
if (tipo==1)
meter(&cola, proceso, tamano);
else if (tipo==2)
{
proceso1=proceso;
tamano1=tamano;
meter1(&cola1, proceso1, tamano1);
}
}
}
clrscr();
gotoxy(13,3); cout<<"Procesos en Cola";
gotoxy(37,3); cout<<"Despachador";
gotoxy(56,3); cout<<"CPU";
gotoxy(2,5); cout<<"------->";
for (i=0; i<21; i++)
{
gotoxy(c,4); cout<<"-";
c++;
}
c=11;
for (i=0; i<21; i++)
{
gotoxy(c,6); cout<<"-";
c++;
}
c=11;
for (j=0; j<6; j++)
{
gotoxy(c,5); cout<<"|";
c=c+4;
}
gotoxy(33,5); cout<<"------->";
c=41;
for (j=0; j<2; j++)
{
gotoxy(c,5); cout<<"|";
c=c+4;
}
c=41;
for (i=0; i<5; i++)
{
gotoxy(c,4); cout<<"-";
c++;
}
c=41;
for (i=0; i<5; i++)
{
gotoxy(c,6); cout<<"-";
c++;
}
gotoxy(47,5); cout<<"------->";
c=55;
for (i=0; i<5; i++)
{
gotoxy(c,4); cout<<"-";
c++;
}
c=55;
for (i=0; i<5; i++)
{
gotoxy(c,6); cout<<"-";
c++;
}
c=55;
for (j=0; j<2; j++)
{
gotoxy(c,5); cout<<"|";
c=c+4;
}
c=57;
f=7;
for (j=0; j<4; j++)
{
gotoxy(57,f); cout<<"|";
f++;
}
gotoxy(35,9); cout<<"E/S";
gotoxy(49,11); cout<<"<-------";
c=27;
for (i=0; i<21; i++)
{
gotoxy(c,10); cout<<"-";
c++;
}
c=27;