Enviado em 27/06/2016 - 22:52h
Oi gente#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <pthread.h>
#include <time.h>
void movreg() {
printf("MOV REG, 32780\n"); // instrução de acesso
sleep(rand()%10); //tempo de geração do registro de acesso fictício
printf("Page is unmapped – page fault!\n"); // resposta fictícia
}
void mmu(){
int[] tabeladepaginas;
int[] mapeamentoentrepaginaseframes;
boolean gerouinstrucao;
String res;
int resultado;
if (gerouinstrucao = true) {
// MAPEAR ENDEREÇO VIRTUAL (EM MEMORIA VIRTUAL) NO ENDEREÇO REAL (EM MEMÓRIA PRINCIPAL).
resultado = memoriavirtual/memoriaprincipal;
res = ("Resultado do mapeamento de endereço virtual em memória virtual no endereço real em memória principal = %d", resultado);
return res;
}
// Mantém o mapeamento entre páginas e frames.
// Quando processador gera uma instrução:
// MMU mapeia o endereço virtual (em memória virtual) no endereço real (em memória principal).
// Uma nova instrução é gerada e deverá ser mostrada na saída padrão.
// A MMU pode realizar duas tarefas que, ao final, resultam na apresentação do conteúdo do processo (arquivo) contido no endereço gerado:
// 1 - Se o novo endereço (real) gerado pela MMU estiver em memória principal, é mostrado o conteúdo do processo (arquivo) contido neste endereço;
// 2 - Se o novo endereço (real) gerado pela MMU não estiver em memória principal, a MMU emite (na saída padrão) uma falta de página.
// Em caso de falta de página o processo de carregamento da página pode ocorrer de duas formas:
// Se existem frames disponíveis : o bloco de dados do arquivo correspondente ao frame é copiado para a memória principal no primeiro frame disponível e a tabela de páginas é atualizada
// Se não existem frames disponíveis, deve ser escolhido uma página a ser substituída. Este processo de escolha de qual página deve ser substituída deve-se dar através do algoritmo aging.
}
void main() {
int memoriaprincipal = 64;
int memoriavirtual = 1024;
int paginas = 8;
int frames = 8;
int processorepresentadoporumarquivodedados = 512;
sleep(rand()%10);
movreg();
mmu();
}
Atenção a quem posta conteúdo de dicas, scripts e tal (6)
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
O mínimo que você precisa saber sobre o terminal (parte 2)
O mínimo que você precisa saber sobre o terminal (parte 1)
Como iniciar uma máquina virtual do VirtualBox automaticamente no boot do LUbuntu 18 LTS
Como deixar as abas do Firefox mais fininhas
Mudar o gerenciador de login (GDM para SDDM)
"Tentando" fazer com que programas rodem no Wayland e no X11
Google Chrome não para de escrever no disco (2)
Notebook samsung 550xda não reconhece mais SSD (1)
Isso ta me cansando [RESOLVIDO] (4)
Inicio de uso do Mint 32bits (19)
Notebook instalado com Linux Debian de fábrica dando problema (3)