martes, 28 de agosto de 2012

SRTF, Short Remaining Time First.

Rommel Rodriguez

SRTF, Short Remaining Time First.

Es similar al SJF, con la diferencia de que si un nuevo proceso pasa a listo se activa eldispatcher para ver si es más corto que lo que queda por ejecutar del proceso en ejecución. Si es así, el proceso en ejecución pasa a listo y su tiempo de estimación se decremento con el tiempo que ha estado ejecutándose.

En SRTF se penaliza a las ráfagas largas (como en 
SJF). Un punto débil de este algoritmo se evidencia cuando una ráfaga muy corta suspende a otra un poco más larga, siendo más larga la ejecución en este orden al ser preciso un cambio adicional de proceso y la ejecución del código del planificador. Trabajos cortos.
Características:
- De los procesos que están esperando para usar la CPU,SRTF lleva a ejecución el proceso al que le reste menos tiempo para terminar.
- Los empates se dirimen mediante FIFO / FCFS

Funcionamiento:
- Los procesos llegan a la cola y solicitan un intervalo de CPU
- Si dicho intervalo es inferior al que le falta al proceso en ejecución para abandonar la CPU, el nuevo proceso pasa a la CPU y el que se ejecutaba a la cola de preparados.

Inconvenientes:
- El intervalo de CPU es difícil de predecir
- Posibilidad de inanición: los trabajos largos no se ejecutarán mientras hayan trabajos cortos.
.





#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{
float avg=0;
int i,j,n,temp1;
int tot=0,wt[10],pt[10];
char p[8][5],temp[6];
clrscr();
cout<<"please enter the no of processes:";
cin>>"%d",&n;
for(i=0;i<n;i++)
{
cout<<"enter process %d :\n",i+1;
cin>>"%s",&p[i];
cout<<"enter the process time";
cin>>"%d",&pt[i];
}
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(pt[i]>pt[j])
{
temp1=pt[i];
pt[i]=pt[j];
pt[j]=temp1;
strcpy(temp,p[i]);
strcpy(p[i],p[j]);
strcpy(p[j],temp);
}
}
}
wt[0]=0;
for(i=1;i<n;i++)
{
wt[i]=wt[i-1]+et[i-1];
tot=tot+wt[i];
}
avg=(float)tot/n;
cout<<"p_name\t P_time\t w_time\n";
for(i=0;i<n;i++)
cout<<"%s\t%d\t%d\n",p[i],et[i],wt[i];
cout<<"total waiting time=%d\n avg waiting time=%f",tot,avg;
getch();
}


3 comentarios:

Alejandra Salas dijo...

donde encuentro la aplicacion completa

enric loenoeneno dijo...

en tu teta

enric loenoeneno dijo...

te falta calle Alejanrdo, pene andando

Publicar un comentario

 

Algoritmos de Planificación Copyright © 2010 | Designed by: Compartidisimo