Aplicación de la más corta de empleo First (SJF) algoritmo Preemptive CPU de planificación usando C ++

En este artículo, vamos a aprender sobre implementación de trabajo más corta primero (SJF) algoritmo de planificación preventiva usando C ++ programa .

preventiva: Si un proceso de mayor prioridad viene a continuación, la primera CPU será asignar al proceso con mayor prioridad en primer lugar.

criterios de programación nos dice que cualquier algoritmo es la cantidad eficiente, se dan los criterios class de programación a continuación:

El tiempo de espera

  • utilización de la CPU
  • Rendimiento
  • La hora de llegada
  • El tiempo de respuesta
  • tiempo de ejecución

* Listo cola es una cola en la que todos los procesos esperan para comenzar el CPU main su ejecución.

utilización de la CPU: La cantidad de tiempo de CPU está ocupada.

Throughput: El número de proceso calculado por unidad de tiempo.

hora de llegada: El momento en que el proceso de entrada en cola de listos.

El tiempo de entrega: El intervalo entre los tiempos de presentación de un proceso a la hora de finalización.

Tiempo de espera: La cantidad total del tiempo de un proceso pasa en cola de listos.

Tiempo de ejecución: El momento en que el proceso finaliza su ejecución.

tiempo de ráfaga: El tiempo que necesita la CPU para completar su ejecución.

SORTEST trabajo de primera (preventiva)

Este algoritmo también conocido como SRTF (la más corta de tiempo restante primero) . Como este algoritmo es preferente por lo que el proceso que tiene el tiempo de llegada mínimo se ejecutará primero y después de este SJF normal (CORTO trabajo de primera) será seguimiento.

C ++ Programa SJF (preventiva) de programación:

//Implementation fo SHORTEST JOB FIRST(Preemptive) Using C++
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
typedef struct proccess
{
int at,bt,ct,ta,wt,btt;
string pro_id;

}Schedule;
bool compare(Schedule a,Schedule b)
{
return a.at<b.at;

}
bool compare2(Schedule a,Schedule b)
{
return a.bt<b.bt;

}
int main()
{
Schedule pro[10];
//An array of Processes
int n,i,j,pcom;
//n = number of processes, i= iteration variable
cout<<"Enter the number of Process::";
cin>>n;
cout<<"Enter the Process id arrival time burst time :::";
for(i=0;i<n;i++)
{
cin>>pro[i].pro_id;
cin>>pro[i].at;
cin>>pro[i].bt;
pro[i].btt=pro[i].bt;
}
sort(pro,pro+n,compare);

i=0;
pcom=0;
while(pcom<n)
{
for(j=0;j<n;j++)
{
if(pro[j].at>i)
break;
}
sort(pro,pro+j,compare2);

if(j>0)
{
for(j=0;j<n;j++)
{
if(pro[j].bt!=0)
break;
}
if(pro[j].at>i)
{
i=pro[j].at;
}
pro[j].ct=i+1;
pro[j].bt--;
}
i++;
pcom=0;
for(j=0;j<n;j++)
{
if(pro[j].bt==0)
pcom++;
}
}
cout<<"ProIDtAtimetBtimetCtimetTtimetWtimen";
for(i=0;i<n;i++)
{
pro[i].ta=pro[i].ct-pro[i].at;
pro[i].wt=pro[i].ta-pro[i].btt;

cout<<pro[i].pro_id<<"t"<<pro[i].at<<"t"<<pro[i].btt<<"t"<<pro[i].ct<<"t"<<pro[i].ta<<"t"<<pro[i].wt;
cout<<endl;
}
return 0;
}

salida

Implementation of Shortest Job First (SJF) Preemptive CPU scheduling algorithm using C++ - 4


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *