Gerenciador de memória

0 respostas
P

Olá Pessoal, estou com um trabalho na faculdade para fazer mas estou com muita dificuldade. A tarefa consiste em simular o gerenciamento de processos na memória que os SO utilizam (Memória Contígua - First Fit). Nesse caso, os processos estão sendo gerados mas quando devem ir para a memória, alguns não estão indo. Poderíam analizar meu código?

Obrigado

package Classes;

public class GerenciadorDeMemoria {
    
    public int TAM = 30;  
    public Processo memoria[] = new Processo[TAM];
    
    
    public int FirstFit(Processo processo){
        int rep = 0;
        boolean temespaco;
        //encontra o primeiro buraco vago
        while((memoria[rep] != null)&&(rep<=TAM)){
            rep++;
        }
        //encontrou um buraco e vai verificar se tem espaço
        temespaco = this.Temespaco(rep, processo);
        
        //se tiver espaço retorna com a posição para adicionar ao Insere
        if (temespaco == true){
            return rep;
        }
            //se não tiver chamara o retira espaço
            else{
                return this.RetiraProcesso(processo);
                }        
        
    }
    
    public int RetiraProcesso(Processo processo){
        //pra retirar um processo é preciso achar o processo mais antigo. Método vai chamar o processo AchaProcessoAntigo
        //processoAux vem do AchaprocessoAntigo vai ser comparado com o processo processo até for maior ou igual a ele
        Processo processoAux = this.AchaProcessoAntigo();
        while (processoAux.tam < processo.tam){
            processoAux = this.AchaProcessoAntigo();
        }
        
        return processoAux.id;
        
    }
    
    
    
    
    public Processo AchaProcessoAntigo(){
        Processo processoAux = new Processo(999,1);
        
        for(int i = 0;i<TAM;i++){
            if (processoAux.id > memoria[i].id){
                processoAux =  memoria[i];
            }
        }
        return processoAux;        
    }
    
    
    public boolean Temespaco(int rep, Processo processo){
        boolean temespaco = true;
        for(int i = rep;i<processo.tam;i++){
            if (memoria[i] == null){
                temespaco = true;
            }
            else{
                temespaco = false;
            }
        }
        return temespaco;
        
    }
    
    
    
    public void Insere(Processo processo){ 
        //chama o firstfit pra encontrar o primeiro livre e inserir
        for(int i = this.FirstFit(processo);i<processo.tam;i++){
            memoria[i] = processo;
            System.out.println(memoria[i].tam);
        }
    }
    
    
    }

Obs: Minha Classe Processo possui apenas 3 atributos.

Nome
ID
Tamanho

Eu agradeço enormemente!!!!
Obrigado, desde já!

Criado 19 de junho de 2011
Respostas 0
Participantes 1