Páginas

NIMADRES

Simulacion de Procesos (Primero Mas Corto) en C++

Otra forma de reducir el sesgo favorable al proceso más largo inherente al FCFS es la política de primero el proceso más corto (SPN, Shortest Process Next), una política no apropiativa en la que se selecciona el proceso con menor tiempo esperado de ejecución. Así pues, un proceso corto saltará a la cabeza de la cola, sobrepasando a trabajos largos.


en este seria básicamente como el FIFO, solo con la pequeña diferencia de tener que acomodar los procesos por el menor tiempo. en este caso yo utilice el ordenmiento rapido para que se acomodara el arreglo del menor a mayor.


#include <iostream>

using namespace std;

#define limite 5
int cont;

void insertar(char datos[],int tiempo[],int l){
    for(int i = 0; i < (l); i++){
        cout << "inserte el tiempo en el proceso [" << datos[i] << "]: ";
        cin >> tiempo[i];
        system("cls");
    }
}
void swap(char datos[],int tiempo[], int i, int j) {
    int auxChar = datos[i];
    int aux = tiempo[i]; 
    datos[i] = datos[j];
    tiempo[i] = tiempo[j];
    datos[j] = aux;
    tiempo[j] = auxChar;
}

void OrdenamientoRapido(char datos[],int tiempo[], int inf, int sup) {
    if (sup > inf) {
        int pivote = tiempo[sup];
        int i = inf - 1;
        int j = sup;
        do {
            while (tiempo[++i] < pivote);
            while (tiempo[--j] > pivote);
            if (i < j) 
               swap(datos,tiempo, i, j);
        } 
        while (i < j);
        swap(datos,tiempo, i, sup);
        OrdenamientoRapido(datos,tiempo, inf, i-1);
        OrdenamientoRapido(datos,tiempo, i+1, sup);
    }
}

int OrdenamientoRapido(char datos[],int tiempo[], int numero) { 
    cont = 0;
    OrdenamientoRapido(datos, 0, numero-1);
    return cont;
}


void primeroMasCorto(char datos[],int tiempo[], int l){
    int intercambio; 
    int tiempoTotal=0;
    float tiempoReturn=0;
    insertar(datos,tiempo,l);
    OrdenamientoRapido(datos,tiempo,0,l);
    for(int j = 0;j < l; j++){
        tiempoTotal += tiempo[j];
        tiempoReturn += tiempoTotal;
        cout<<"\n""tiempo de retorno ["<<datos[j]<<"]: "<<tiempoTotal<<"\t";
    }      
    tiempoReturn = tiempoReturn / l;
    cout<<"\n\nEl tiempo de las entradas son: "<<tiempoReturn;
}

int main(){
    system("title PRIMERO MAS CORTO");
    system("color 0e");
    cout<<"\t\t\tSimulacion proceso de Primero mas Corto en C++"<<endl;
    cout<<"\t\t_______________________________________\n"<<endl;
    char datos[limite] = {'a','b','c','d','e'};
    int tiempo[limite];
    primeroMasCorto(datos,tiempo,limite);
    cin.get();
    cin.get();
    return 0;
}


No hay comentarios:

Publicar un comentario