Beruflich Dokumente
Kultur Dokumente
2.
INTRODUO
ESPAOS DE ENDEREAMENTO
MEMRIA VIRTUAL
ALGORITMOS DE SUBSTITUIO DE
PGINAS
Grupo 3
Referenciada e modificada
7.
6.
RESULTADOS
CONCLUSO
REFERNCIAS
Anexos
Estruturas utilizadas (memoria.h)
struct indice_tabela2 {
unsigned long pos_real; //relaciona a uma posicao de
memoria fisica
};
struct pagina1{
int pos_real1; //relaciona o primeiro nivel de tabela com
uma posicao da tabela 2
};
typedef struct indice_tabela2 ELEMENTO2;
struct frame{ //tabela 2 (segundo nivel)
int flag; //0 se a pag esta livre, 1 se esta ocupada
int tempoChegada;
int tempoUsada;
int vezesUsada;
ELEMENTO2 elemento_t2[1024]; //lista de 1024
elementos que se relacionam com a memoria fisica
};
struct tabela {
int mais, menos, desloc; //tabela que faz a leitura das
requisicoes de um arquivo
};
typedef struct tabela TABELA;
typedef struct frame FRAME;
typedef struct pagina1 FRAME_EXT;
}
}
void verificaFaltaDePagina(){
int i, mais, menos, desloc;
int tempo;
for (i=0; i<10; i++){
mais = tabelaPag[i].mais;
//menos = tabelaPag[i].menos;
if (frame_2[frame_1[mais].pos_real1].flag == 1){
printf("Falta de pagina para a requisio %d %d com deslocamento %d", tabelaPag[i].mais, tabelaPag[i].menos,
tabelaPag[i].desloc);
printf("\n");
//return 1;
}
else{
frame_2[frame_1[mais].pos_real1].flag = 1;
printf("Requisio %d %d com deslocamento %d foi alocada com sucesso", tabelaPag[i].mais, tabelaPag[i].menos,
tabelaPag[i].desloc);
printf("\n");
//frame_2[frame_1[mais].pos_real1].tempoChegada = tempo;
//return 0;
}
}
}
/*void alocaPagina(){
int i, mais, menos;
int aux = verificaFaltaDePagina();
for (i=0; i<10; i++){
if (aux==1) {
printf("Page fault. \n");
}
}
}*/
int main(){
int i, j;
carregaArq("teste.txt");
frame1();
pageDefault();
verificaFaltaDePagina();
//printf("%d\n", frame_2[0].flag);
//printf("%d\n", frame_2[frame_1[30].pos_real1].pagina[45].flag);
/*for (i=0; i<10; i++){
printf("%lud %d\n", frame_2[tabelaPag[i].mais].elemento_t2[tabelaPag[i].menos].pos_real, tabelaPag[i].desloc);
}*/
MMU(tabelaPag, frame_2, frame_1);
//verificaFaltaDePagina();
//alocaPagina();
/*for (i=0; i<TAM; i++){
for(j=0; j<TAM; j++)
printf("%d \n", frame_2[i].pagina[j].pos_real);
}*/
//printf("%d %d %d", tabelaPag[0].mais, tabelaPag[0].menos, tabelaPag[0].desloc);
}