Programar em C/Algoritmo de alocação: diferenças entre revisões
[edição verificada] | [revisão pendente] |
Conteúdo apagado Conteúdo adicionado
Sem resumo de edição |
|||
Linha 1: | Linha 1: | ||
==first fist== |
==first fist== |
||
==best fit== |
==best fit== |
||
<syntaxhighlight lang="c"> |
|||
#include <stdio.h> |
|||
#include <windows.h> |
|||
int main(){ |
|||
int p,m; |
|||
printf("Enter number of processes:"); |
|||
scanf("%d",&p); |
|||
printf("Enter number of Memory blocks:"); |
|||
scanf("%d",&m); |
|||
int parr[p]; |
|||
struct mem{ |
|||
int id; |
|||
int size; |
|||
}marr[m]; |
|||
int i; |
|||
for(i=0;i<p;i++) |
|||
{ |
|||
printf("Enter size of process %d:",i+1); |
|||
scanf("%d",&parr[i]); |
|||
} |
|||
for(i=0;i<m;i++) |
|||
{ |
|||
printf("Enter size of memory %d:",i+1); |
|||
scanf("%d",&marr[i].size); |
|||
marr[i].id=i+1; |
|||
} |
|||
int j; |
|||
int size = 0; |
|||
for(i; size <= marr[i].size; i++ ) |
|||
size = marr[i].size; |
|||
int old_size = size ; |
|||
int im ; |
|||
int ref = 0; |
|||
for(i=0;i<p;i++){ |
|||
for(j=0;j<m;j++){ |
|||
if(marr[j].size>=parr[i]){ |
|||
if(marr[j].size < size){ |
|||
im = j; |
|||
size = marr[j].size; |
|||
ref = 1 ; |
|||
} |
|||
} |
|||
} |
|||
if(ref){ |
|||
ref = 0; |
|||
marr[im].size-=parr[i]; |
|||
size = old_size ; |
|||
printf("Allocating process %d to memory %d\n Size remaining in it after allocation %d\n\n",i+1,marr[im].id,marr[im].size); |
|||
}else {printf("Not enough memory for process %d",i);break;} |
|||
} |
|||
system ("pause"); |
|||
return 0; |
|||
} |
|||
</syntaxhighlight> |
|||
==worst fit== |
==worst fit== |
Revisão das 11h04min de 17 de abril de 2014
first fist
best fit
#include <stdio.h>
#include <windows.h>
int main(){
int p,m;
printf("Enter number of processes:");
scanf("%d",&p);
printf("Enter number of Memory blocks:");
scanf("%d",&m);
int parr[p];
struct mem{
int id;
int size;
}marr[m];
int i;
for(i=0;i<p;i++)
{
printf("Enter size of process %d:",i+1);
scanf("%d",&parr[i]);
}
for(i=0;i<m;i++)
{
printf("Enter size of memory %d:",i+1);
scanf("%d",&marr[i].size);
marr[i].id=i+1;
}
int j;
int size = 0;
for(i; size <= marr[i].size; i++ )
size = marr[i].size;
int old_size = size ;
int im ;
int ref = 0;
for(i=0;i<p;i++){
for(j=0;j<m;j++){
if(marr[j].size>=parr[i]){
if(marr[j].size < size){
im = j;
size = marr[j].size;
ref = 1 ;
}
}
}
if(ref){
ref = 0;
marr[im].size-=parr[i];
size = old_size ;
printf("Allocating process %d to memory %d\n Size remaining in it after allocation %d\n\n",i+1,marr[im].id,marr[im].size);
}else {printf("Not enough memory for process %d",i);break;}
}
system ("pause");
return 0;
}
worst fit
O algoritmo worst fit aloca o bloco de memória na região que tem o maior espaço livre.
Está técnica por procurar ocupar primeiro as partições maiores termina por deixar espaços livres que poderiam ser utilizados para que outros blocos de outros programas as utilizassem, diminuindo e/ou retardando a fragmentação.
Next Fit
Buddy System
Esta página é um esboço de informática. Ampliando-a você ajudará a melhorar o Wikilivros. |