SóProvas


ID
487024
Banca
CESPE / CEBRASPE
Órgão
MPE-RR
Ano
2008
Provas
Disciplina
Arquitetura de Computadores
Assuntos

Na gerência de memória virtual, se um processo acessa uma posição de memória em uma página fora da memória principal, uma unidade de gerência de memória no hardware solicita uma interrupção ao processador e, se a posição for inválida para o processo, o sistema operacional transfere a página para a memória principal.

Alternativas
Comentários
  • Errado.
    A memória virtual está no disco rígido, seja no arquivo pagefile.sys do Windows ou na partição swap do Linux.
  • A memória virtual é todo o espaçamento de endereço do processo pode estar na memória principal ou no disco ou em ambos. O erro consiste em afirmar que se a posição for inválida será feito o swap in. Nesse caso será gerada uma excessão de endereço inválido.
  • a ideia básica por trás da memória virtual é que cada programa tem seu próprio espaço de endereçamento, que é dividido em blocos chamados páginas. Essas páginas são mapeadas na memória física, mas nem todas precisam estar na memória física ao mesmo tempo. Quando o programa referencia uma parte de seu espaço de endereçamento que está na memória física, o hardware executa o mapeamento necessário dinamicamente. Quando o programa referencia uma parte de seu espaço de endereçamento que não está em sua memória física o sistema operacional é alertado para obter a parte que falta e reexecutar a instrução que falhou. Agora, quando o endereço de memória referenciado é estranho ao próprio processo, é sinal de algo está errado e, provavelmente, uma interrupção de erro será produzida.
  • Um dos erros está no trecho: "uma unidade de gerência de memória no hardware solicita uma interrupção ao processador", na verdade, é o processador que gera uma interrupção para o sistema operacional quando o dado não está na memória principal.

    O outro erro está em: "se a posição for inválida para o processo, o sistema operacional transfere a página para a memória principal." O Sistema operacional irá transferir a página se ela for válida.
  • A questão fala sobre falta de página, q é uma interrupcao disparada pela MMU quando um programa acessa uma pagina mapeada no espaço de memória virtual, mas que não foi carregada na memoria fisica.

    Repare q uma página nada mais eh q é um bloco de memória, utilizada como uma unidade de transferência entre a memória física e um dispositivo de armazenagem externo. Essa página tem q ser mapeada no seu correspondente endereco da memoria fisica, no caso, os frames. O q acontece se esse mapeamento, por algum motivo, for feito de forma ilegal(ex: conceder a um processo uma posicao invalida)? Ora, a execução desse processo eh interrompida. Imagine a variavel String A sendo atribuída a uma posição de endereço do tipo Integer. Isso nao da pra ser tradado. O processo precisa ser abortado.

    Especificamente, o erro da questao esta em dizer q, em casos de acesso invalido, o SO consegue tratar essa exceção (mapeando-a mesmo assim). Esta errado. Em casos de acesso ilegal, nada pode ser feito. O processo nao pode continuar.

  • Segundo Tanenbaum(Sistemas Operacionais Modernos, 3°ed, p.116), "Oque acontece se um programa tenta usar uma página virtual não mapeada na memória ? A MMU constata que essa página virtual não está mapeada e força o desvio da CPU para o sistema operacional. Essa interrupção é denominada falta de página(page fault). O S.O, então, escolhe uma moldura de página( page frame) pouco usada e a salva em disco, ou seja, escreve seu conteúdo de volta no disco( se já não estiver lá). Em seguida, ele carrega a página virtual referenciada pela instrução na moldura de página recém liberada, atualiza o mapeamento da tabela de páginas e reinicializa a instrução causadora da interrupção."