Trabalho de Sistemas Operacionais Paginação
Por: Valdomiro Martins • 5/10/2015 • Trabalho acadêmico • 4.535 Palavras (19 Páginas) • 931 Visualizações
UNIVERSIDADE FEDERAL DE UBERLÂNDIA CAMPUS (MONTE CARMELO).
Trabalho de
Sistemas operacionais.
Paginação
Grande parte dos sistemas com memória virtual utilizam-se da técnica de paginação. Em todo computador existe um conjunto de endereços de memória que são gerados a cada execução de um programa. Todos esses endereços gerados através da execução de programas são definidos como endereços virtuais dos quais são constituídos o espaço de endereçamento virtual.
Nos computadores desprovidos de memória virtual os endereços virtuais são iguais ao endereços físicos, tanto para ler ou escrever em uma posição de memória ele é colocado direto no barramento da memória. Quando o computador possui memória virtual o endereço não vai diretamente para o barramento de memória, logo esse endereço é enviado para a unidade de gerenciamento de memória (MMU) cuja função é mapear endereços virtuais para endereços físicos como podemos observar na figura exemplo.
[pic 1]
Vejamos um exemplo dado na figura seguinte como funciona esse mapeamento onde o computador gera endereços de 16 bits ou seja de 0 a 64k-1, logo esse computador possui apenas 32 kb de memória física sendo assim possível escrever programas de 64 kb porém eles não podem ser carregados por completo para a memória para que eles possam ser executados.
[pic 2]
Nesse contexto o espaço de endereçamento virtual é dividido em pequenas estruturas denominadas páginas, essas estruturas semelhantes na memória física são conhecidas como molduras de páginas onde as páginas e molduras possuem o mesmo tamanho. Logo a transferências de memória para disco são apenas de páginas completas. A notação da figura de 0K-4K significa que tanto os endereços físicos tantos os virtuais nessa página são de 0 a 4095 e de 4K-8K são de 4096 a 8191 e assim sucessivamente.
Vejamos o que acontece quando o programa tenta executar uma instrução do tipo MOV REG,0 nesse instante o endereço 0 é repassado para a MMU que conclui que esse endereço virtual está situado na página virtual 0 que segundo o mapeamento corresponde a moldura de página 2.
Após isso a MMU tem a função de transformar o endereço virtual 0 no endereço 8192 que se encontra na moldura de página 2 e depois envia esse endereço para o barramento lembrando-se que a memória não identifica nada a respeito da MMU. É necessário lembrar-se de que se só existirem n moldura de páginas somente será possível mapear n páginas ao mesmo tempo na memória física. Um bit de ausente ou presente sempre é utilizado pelo hardware para cada entrada na tabela de páginas para definir se uma página se encontra ou não na memória física.
Caso aconteça de um programa tentar usar uma página virtual não mapeada imediatamente a MMU verifica a inexistência dessa página e faz um desvio da CPU para o sistema operacional onde essa interrupção é determinada como falta de página. Posteriormente o sistema operacional pega uma moldura pouco usada e salva ele em disco então o S.O carrega sobre a moldura liberada a página virtual que havia sido requisitada e logo em seguida o sistema operacional faz a atualização na tabela de páginas e reinicializa a instrução que causou a interrupção.
Agora veremos um exemplo de como funciona a MMU.
[pic 3]
Através desse exemplo é possível entender por que o tamanho de páginas são potência de 2. Quando o endereço virtual com 16 bits entra na MMU o que feito é dividir esse endereço em um número de páginas com 4 bits e um deslocamento com 12 bits. Com 4 bits para números de páginas podemos ter até 16 páginas virtuais e com os outros 12 bits do deslocamento é possível ser endereçado 4096 bytes por página.
Esses 4 bits mais significativos ou seja o número da página é usado como índice na tabela de páginas para encontrar a moldura de página física correspondente.
Se acontecer do bit de presente/ ausente estar em 0 isso acarretará em um interrupção de falta de página do contrário o número da moldura correspondente na tabela de páginas é copiado para os 3 primeiros bits mais significativos no registrador de saída e concatenando com os 12 bits do deslocamento formando assim então o endereço físico de 15 bits que é enviado via o barramento para a memória.
Tabela de páginas
No modo mais simples o mapeamento de endereços virtuais para endereços físicos consiste em dividir o endereço virtual em número de página virtual e de deslocamento onde o número virtual é utilizado como índice da tabela de páginas para ser possível encontrar a entrada da tabela que está associada a página virtual em questão, feito isso é possível se chegar ao número da moldura da página física correspondente caso ela exista.
Logo após isso o que é feito é apenas concatenar o número da moldura com os bits de deslocamento fazendo uma substituição do número da página virtual pelo número da moldura da página física formando se então o endereço físico que será enviado para a memória. O principal objetivo da tabela de páginas é justamente transformar páginas virtuais em moldura de páginas físicas.
Falando-se matematicamente a tabela de páginas nada mais é do que uma função que recebe como argumento a página virtual e tem como retorno o número da moldura física, com o retorno dessa função o campo que endereça uma página virtual em um endereço virtual pode ser trocado pelo campo que endereça a moldura obtendo-se então um endereço na memória física.
Acelerando a paginação
No sistema de paginação dois problemas devem ser encarados o primeiro é que o mapeamento de endereço virtual para físico precisa de ser rápido, outro problema é que se o espaço de endereçamento virtual for grande necessariamente a tabela de páginas também será grande. Esse mapeamento de endereço virtual para endereço físico deve ocorrer a cada referência a memória. Uma segunda coisa a ser reportada e que os computadores modernos estão usando cada vez mais endereços virtuais de pelo menos 32 á 64 bits. Por exemplo se as páginas são de 4 kb e possuem espaço de endereçamento de 32 bits tem se 1 milhão de páginas com esse tamanho a tabela de páginas deve conter 1 milhão de entradas lembrando que cada processo necessita de sua própria tabela de páginas.
Uma solução simples para isso é possuir uma tabela de páginas providos de um arranjo de registradores possuindo entrada para cada página virtual.Com a inicialização do processo o sistema carrega os registradores com a tabela retirada de uma cópia da memória.
Esse processo tem a vantagem de ser extremamente rápido, mas enfrenta a desvantagem de ser muito caro caso a tabela de páginas seja muito grande e ainda ser necessário o carregamento de toda a tabela de páginas a cada mudança de contexto o que influencia muito no desempenho.
...