Você está na página 1de 9

ALGORITMOS DE PLANIFICACION DE PROCESOS

#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int n,i,j,b,c,x[50],op;
float pes, ptr,q,tll[50],ts[50],tc[50], tf[50],tr[50],te[50],pri[50],
float taux[50],aux1[50],d,a,nM,s,qtm,ser,pm;
void ingreso()
{
cout<<"Ingrese el numero de procesos"<<endl;
cin>>n;
ser=0;
system("cls");
for (i=1;i<=n;i++)
{
cout<<"Ingrese tiempo de llegada"<<endl;
cin>>tll[i];
cout<<"Ingrese tiempo de servicio"<<endl;
cin>>ts[i];
system("cls");
ser=ser+ts[i];
}
}
void ingreso_prior()
{
cout<<"Ingrese el numero de procesos"<<endl;
cin>>n;
system("cls");
for (i=1;i<=n;i++)
{
cout<<"Ingrese tiempo de llegada"<<endl;
cin>>tll[i];
cout<<"Ingrese tiempo de servicio"<<endl;
cin>>ts[i];
cout<<"Ingrese la prioridad"<<endl;
cin>>pri[i];
system("cls");
}
}
void fcfs()
{
pes=0;
ptr=0;
for (i=1;i<=n;i++)
{
if (i==1)
tc[i]=tll[i];
else
tc[i]=tf[i-1];

tf[i]=tc[i]+ts[i];
tr[i]=tf[i]-tll[i];
te[i]=tr[i]-ts[i];
pes= pes+ te[i];
ptr= ptr+ tr[i];
}
ptr=ptr/n;
pes=pes/n;
}
void sjf()
{
a=0;
ptr=0;
pes=0;
nM=ts[1];
for (i=2;i<=n;i++)
{
if (ts[i]>nM)
nM=ts[i];
}
tc[1]=0;
tf[1]=ts[1];
for (i=1;i<=n;i++)
{
taux[i]=ts[i];
}
s=1;
c=1;
do
{
b=2;
for (i=2;i<=n;i++)
{
if (ts[b]>taux[i])
{
a=taux[i];
b=i;
}
}
tc[b]=tf[c];
tf[b]=tc[b]+ts[b];
taux[b]=nM+1;
c=b;
s=s+1;
}while(s<n);
for (i=1;i<=n;i++)
{
tr[i]=tf[i]-tll[i];
ptr=ptr+tr[i];
te[i]=tc[i]-tll[i];
pes=pes+te[i];
}
ptr=ptr/n;

pes=pes/n;
}
void rr()
{
cout<<"Ingrese el quantum"<<endl;
cin>>qtm;
system("cls");
for (i=1;i<=n;i++)
{
taux[i]=ts[i];
}
b=0;
x[1]=0;
tf[n]=0;
while (ser>0)
{
ser=0;
for (i=1;i<=n;i++)
{
if (x[i]==0)
{
if ((i==1))
tc[i]=tf[n-b];
else
tc[i]=tf[i-(b+1)];
if (taux[i]>qtm)
{
tf[i]=tc[i]+qtm;
taux[i]=taux[i]-qtm;
x[i]=0;
}
else
{
tf[i]=tc[i]+taux[i];
taux[i]=0;
x[i]=1;
}
ser=taux[i]+ser;
}
else
{
b=b+1;
}
}
};
for (i=1;i<=n;i++)
{
tr[i]=tf[i]-tll[i];
te[i]=tr[i]-ts[i];
pes= pes+ te[i];
ptr= ptr+ tr[i];

}
ptr=ptr/n;
pes=pes/n;
}
void srtf()
{
cout<<"Ingrese el quantum"<<endl;
cin>>qtm;
system("cls");
for (i=1;i<=n;i++)
{
taux[i]=ts[i];
aux1[i]=taux[i];
}
tc[1]=0;
if (aux1[1]>qtm)
{
tf[1]=qtm;
aux1[1]=aux1[1]-qtm;
x[1]=0;
c=0;
}
else
{
tf[1]=taux[1];
aux1[1]=0;
x[1]=1;
c=c+1;
}
for (i=1;i<=n;i++)
{
for (j=i+1;j<=n;j++)
{
if (aux1[i]>aux1[j])
{
if (tll[i]==0)
{
d=aux1[i];
aux1[i]=aux1[j];
aux1[j]=d;
d=tll[i];
tll[i]=tll[j];
tll[j]=d;
tc[j]=tc[i];
tf[j]=tf[i];
tf[i]=0;
x[j]=x[i];
x[i]=0;
}
else
{
d=aux1[i];
aux1[i]=aux1[j];

aux1[j]=d;
d=tll[i];
tll[i]=tll[j];
tll[j]=d;
tc[j]=tc[i];
}
}
}
}
c=0;
tf[n]=0;
while (ser>0)
{
ser=0;
for (i=1;i<=n;i++)
{
if (x[i]==0)
{
if ((i==1))
tc[i]=tf[n-c];
else
tc[i]=tf[i-(c+1)];
if (aux1[i]>qtm)
{
tf[i]=tc[i]+qtm;
aux1[i]=aux1[i]-qtm;
x[i]=0;
}
else
{
tf[i]=tc[i]+aux1[i];
aux1[i]=0;
x[i]=1;
}
ser=aux1[i]+ser;
}
else
{
c=c+1;
}
}
};
for (i=1;i<=n;i++)
{
tr[i]=tf[i]-tll[i];
te[i]=tr[i]-taux[i];
pes= pes+ te[i];
ptr= ptr+ tr[i];
}
ptr=ptr/n;
pes=pes/n;
for (i=1;i<=n;i++)
{

for (j=i+1;j<=n;j++)
{
if (tll[i]>tll[j])
{
d=tll[i];
tll[i]=tll[j];
tll[j]=d;
d=tc[i];
tc[i]=tc[j];
tc[j]=d;
d=tf[i];
tf[i]=tf[j];
tf[j]=d;
d=tr[i];
tr[i]=tr[j];
tr[j]=d;
d=te[i];
te[i]=te[j];
te[j]=d;
}
}
}
}
void hrn()
{
a=0;
ptr=0;
pes=0;
pm=pri[1];
for (i=2;i<=n;i++)
{
if (pri[i]<pm)
pm=pri[i];
}
tc[1]=0;
tf[1]=ts[1];
for (i=1;i<=n;i++)
{
taux[i]=pri[i];
}
s=1;
c=1;
do
{
b=2;
for (i=2;i<=n;i++)
{
if (pri[b]<taux[i])
{
a=taux[i];
b=i;
}
}

tc[b]=tf[c];
tf[b]=tc[b]+ts[b];
taux[b]=pm-1;
c=b;
s=s+1;
}while(s<n);
for (i=1;i<=n;i++)
{
tr[i]=tf[i]-tll[i];
ptr=ptr+tr[i];
te[i]=tc[i]-tll[i];
pes=pes+te[i];
}
ptr=ptr/n;
pes=pes/n;
}
void salida()
{
cout<<endl;
cout<<"Proceso
"<<"T.Ll
"<<"T.S
"<<"T.Co
"<<"T.Ret
"<<"T.Esp"<<endl;
for (i=1;i<=n;i++)
{
cout<<"P"<<i<<"
"<<tll[i]<<" "<<ts[i]<<" "<<tc[i]<<"
"<<tr[i]<<" "<<te[i]<<endl;
}
cout<<endl;
cout<<"Promedio de Tiempo de Retorno: "<<ptr<<endl;
cout<<"Promedio de Tiempo de Espera: "<<pes<<endl;
getch();
}

"<<"T.Fin

"<<tf[i]<<"

void salida_pri()
{
cout<<endl;
cout<<"Proceso
"<<"T.Ll
"<<"T.S
"<<"Prior
"<<"T.Co
"<<"T.Fin
"<<"T.Ret
"<<"T.Esp"<<endl;
for (i=1;i<=n;i++)
{
cout<<"P"<<i<<"
"<<tll[i]<<" "<<ts[i]<<" "<<pri[i]<<"
"<<tc[i]<<" "<<tf[i]<<" "<<tr[i]<<" "<<te[i]<<endl;
}
cout<<endl;
cout<<"Promedio de Tiempo de Retorno: "<<ptr<<endl;
cout<<"Promedio de Tiempo de Espera: "<<pes<<endl;
getch();
}
void main()
{
cout<<"MENU"<<endl;
cout<<"Ingrese un numero para:"<<endl;
cout<<"1. FCFS"<<endl;

cout<<"2. SJF"<<endl;
cout<<"3. Prioridades (HRN)"<<endl;
cout<<"4. SRTF"<<endl;
cout<<"5. Round Robin"<<endl;
cout<<"6. SALIR"<<endl;
cin>>op;
system("cls");
while (op>6)
{
system("cls");
cout<<"MENU"<<endl;
cout<<"Ingrese un numero para:"<<endl;
cout<<"1. FCFS"<<endl;
cout<<"2. SJF"<<endl;
cout<<"3. Prioridades (HRN)"<<endl;
cout<<"4. SRTF"<<endl;
cout<<"5. Round Robin"<<endl;
cout<<"6. SALIR"<<endl;
cin>>op;
}
system("cls");
while (op<6)
{
switch (op)
{
case 1:
{
ingreso();
fcfs();
salida();
break;
}
case 2:
{
ingreso();
sjf();
salida();
break;
}
case 3:
{
ingreso_prior();
hrn();
salida_pri();
break;
}
case 4:
{
ingreso();
srtf();
salida();
break;
}
case 5:

{
ingreso();
rr();
salida();
break;
}
}
getch();
cout<<"MENU"<<endl;
cout<<"Ingrese un numero para:"<<endl;
cout<<"1. FCFS"<<endl;
cout<<"2. SJF"<<endl;
cout<<"3. Prioridades (HRN)"<<endl;
cout<<"4. SRTF"<<endl;
cout<<"5. Round Robin"<<endl;
cout<<"6. SALIR"<<endl;
cin>>op;
system("cls");
while (op>6)
{
system("cls");
cout<<"MENU"<<endl;
cout<<"Ingrese un numero para:"<<endl;
cout<<"1. FCFS"<<endl;
cout<<"2. SJF"<<endl;
cout<<"3. Prioridades (HRN)"<<endl;
cout<<"4. SRTF"<<endl;
cout<<"5. Round Robin"<<endl;
cout<<"6. SALIR"<<endl;
cin>>op;
}
}
}

Você também pode gostar