Skip to content

Instantly share code, notes, and snippets.

@alessandrostein
Created September 4, 2014 14:34
Show Gist options
  • Save alessandrostein/148ccb5855f154995847 to your computer and use it in GitHub Desktop.
Save alessandrostein/148ccb5855f154995847 to your computer and use it in GitHub Desktop.
Next-fit
funcao encontraPosicaoNextFit(vetor<TAD_CelulaMemoria> , TAD_Processo processo, inteiro posicaoInicial): inteiro
inicio
inteiro j,i
TAD_CelulaMemoria celula;
booleano achou = false;
i := posicaoInicial
j := 0;
enquanto (!achou) faca
se (i <= (TAMANHO_memoria -1))
celula := memoria[i]
se ((TAMANHO_processo <= TAMANHO_celula) e (celula está livre))
j := i;
achou := verdadeiro;
Fim se
i ++;
Fim se
senao
se ((i = TAMANHO_memoria) e (!achou))
se (posicaoInicial = 0)
achou := verdadeiro;
j := -1; // Este valor caracteriza que o algoritmo não encontrou a solução
Fim se
senao
i := 0;
enquanto(!achou) faca
celula := memoria[i];
se ((TAMANHO_processo <= TAMANHO_celula) e (celula está livre))
j := i;
achou := verdadeiro;
Fim se
i ++;
se ((i = posicaoInicial) e (!achou))
achou := verdadeiro;
j := -1 // Este valor caracteriza que o algoritmo não encontrou a solução
Fim se
Fim equanto
Fim senao
Fim se
Fim senao
Fim enquanto
encontraPosicaoMextFit := i;
fim;
funcao nextFit(vetor<TAD_CelulaMemoria) memoria, TAD_Processo processo, inteiro posicaoInicial) :Vetor<Tad_CelulaMemoria>
inicio
inteiro resto, i, j, sucesso;
Vetor<Tad_CelulaMemoria> novaMemoria := memoria;
Tad_CelulaMemoria celula;
booleano achou := falso;
i := posicaoInicial;
j := 0;
enquanto (!achou) faca
se (i <= (TAMANHO_memoria -1))
celula := memoria[i];
se ((TAMANHO_processo <= TAMANHO_celula) e (celula está livre))
resto := (TAMANHO_celula - TAMANHO_processo);
j := i;
achou := verdadeiro;
sucesso := 1;
Fim se
i++
Fim se
senao
se ((i=TAMANHO_memoria) e (!achou))
se (posicaoInicial = 0)
achou := verdadeiro;
j := -1;
Fim se
senao
i := 0
enquanto (!achou) faca
celula := memoria[i];
se ((TAMANHO_processo <= TAMANHO_celula) e (celula está livre))
resto := (TAMANHO_celula - TAMANHO_processo);
j := i;
achou := verdadeiro;
sucesso := 1;
Fim se
i ++
se ((i = posicaoInicial) e (!achou))
achou := verdadeiro;
j := -1;
Fim se
Fim enquanto
Fim senao
Fim se
Fim senao
Fim enquanto
se (sucesso = 1)
celula := processo;
novaMemori[j] := celula;
se (resto > 0)
novaMemoria[j + 1] := celula_livre_de_tamanho_igual_a_'resto';
Fim se
Fim se
nextFit := novaMemoria;
fim
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment