Sie sind auf Seite 1von 11

Sistemas Operacionais

AULA 14 - Memria Virtual

A idia bsica da memria virtual permitir que programas muito maiores que a memria disponvel possam ser executados. Para isso, em 1961 Fotheringham criou o mtodo conhecido como memria virtual. Com o uso dessa memria o SO mantm as partes ativas do programa na memria e o restante em disco, sendo carregadas ou removidas da memria de acordo com as necessidades. Memria virtual uma tcnica que se utiliza da memria secundria para produzir o efeito prtico de aumentar significativamente o espao de endereamento disponvel aos programas. Essa tcnica no depende do tamanho da memria principal que continua sendo limitado para ser implementada. A memria secundria (normalmente um disco rgido) passa a servir como uma espcie de extenso da memria principal, armazenando a maior parte dos programas e dados carregados para execuo. memria principal so transferidas por vez apenas algumas partes destes programas e dados, essenciais ao momento pontual da execuo. Deste modo, cria-se dois espaos de endereamento de memria: o espao de endereamento virtual e o espao de endereamento real. Endereos virtuais so os endereos gerados pelos compiladores e linkers na implementao dos programas. Eles representam o espao completo que os programas necessitam para serem carregados, isto , o tamanho de memria que efetivamente ocupam. No entanto, a memria real ou memria principal (RAM Random Access Memory) pode ser bastante limitada, possuindo um espao de endereamento real s vezes menor at mesmo que um nico programa. Um endereo real corresponde a uma clula fsica de endereamento presente na memria principal da mquina. Obviamente, apenas parte das aplicaes carregadas no espao de endereamento virtual poder ocupar a memria real num certo instante. Por outro lado, somente os dados carregados na memria principal so processados pela CPU. Como vrias aplicaes podem estar sob execuo, concorrendo pela utilizao do processador, uma soluo encontrada foi dividir o espao total de endereamento dos programas em pequenos blocos de tamanho fixo, as chamadas pginas de memria. A implementao dessa estratgia constitui o mecanismo de paginao. Outra alternativa dividir o cdigo de uma aplicao com base em critrios lgicos, ou seja, modularizando o programa de acordo com a funo dos diversos trechos de cdigo identificados. Segmentao o nome que se d a esta segunda estratgia de particionamento de cdigo, em que Prof. Dr. Jean M. Laine 1

Sistemas Operacionais os segmentos gerados possuem tamanhos independentes e variveis. Ambos os mecanismos so importantes, sobretudo em ambientes multiusurios e multiprogramveis. Conforme o momento de execuo, parte dos dados (working set) so transferidos temporariamente para a memria principal a fim de serem processados, retornando memria secundria quando solicitados pelo sistema operacional, o qual responsvel pelo gerenciamento da memria.

Figura 1. Endereos virtuais x fsicos. A traduo feita por uma tab. de pginas.

Paginao
A tcnica denominada paginao utilizada na maioria dos sistemas com memria virtual. Como sabemos, os endereos gerados pelos programas so denominados endereos virtuais e constituem o espao de endereamento virtual. Em computadores que no tem memria virtual, os endereos virtuais so idnticos aos endereos fsicos. Por outro lado, quando usamos memria virtual estes endereos diferem. Portanto, o endereo gerado pelo programa no pode ser colocado diretamente no barramento do sistema para acessar uma posio qualquer de memria. Assim, a MMU mapeia os end. virtuais em fsicos. Prof. Dr. Jean M. Laine 2

Sistemas Operacionais A memria fsica dividida em blocos de tamanho fixos denominados molduras de pginas (page frames). J a memria lgica dividida em blocos de tamanho fixos denominados pginas (pages). As pginas e as molduras de pginas so sempre do mesmo tamanho. Quando um programa tenta usar uma pgina virtual que no est mapeada gerada uma interrupo da CPU para o sistema operacional a fim de buscar esta pgina na memria. Esta interrupo (trap) denominada falta de pgina (page fault). As aes desencadeadas so: o sistema operacional escolhe uma moldura de pgina (page frame) pouco usada e a salva em disco. Em seguida, carrega a pgina virtual referenciada pela instruo na moldura de pgina que foi liberada. Feito isso o sistema operacional pode reinicializar a instruo causadora da interrupo. Tabela de Pginas A tabela de pginas montada durante o instante em que o processo carregado e servir para informar qual a pgina fisica correspondente a cada pgina lgica. Para que um programa possa ser executado corretamente necessrio que o endereo lgico especificado em cada instruo seja traduzido no endereo fisico que representa as posies reais de memria.

Figura 2. Esquema de paginao.

Prof. Dr. Jean M. Laine

Sistemas Operacionais Conforme podemos observar na Figura 2 o endereo lgico constitudo de 2 partes: a primeira (bits de mais alta ordem) corresponde ao nmero da pgina lgica e a segunda representando o deslocamento dentro desta pgina (bits de mais baixa ordem). O nmero da pgina lgica usado para encontrar a pgina fsica correspondente atravs da tabela de pginas. Os bits de mais baixa ordem so mantidos e ajudam a constituir o endereo fsico. Para isso s utilizar os bits encontrados na tabela de pginas com os bits de deslocamento. A Figura 2 mostra como isso feito considerando o endereo lgico do byte Y2. O endereo lgico 00101 dividido em nmero de pgina lgica 001 e deslocamento 01. A entrada 001 da tabela de pginas indica que essa pgina lgica foi carregada na pgina fsica 101. Ento, unimos as duas partes e formamos o endereo fsico 10101. Geralmente, os tamanhos de pgina variam entre 512 bytes e 64 Kbytes, sendo que um valor muito utilizado o de 4 Kbytes. Os espaos de endereamento lgico podem variar de 64 Kbytes (sistemas antigos) at muitos Gbytes (mquinas atuais). J os espaos de endereamento fsico podem ser na ordem de Gbytes. Durante a paginao, qualquer pgina fsica disponvel pode ser utilizada para carregar uma pgina lgica. Por isso, no existe fragmentao externa. No entanto, pelo fato da unidade de alocao ser uma pgina, qualquer processo sempre ocupar um nmero inteiro de pginas fsicas (podendo no ocupar todo o espao da pgina) gerando com isso uma fragmentao interna. Por exemplo, imagine que um sistema utilize pginas de 4 Kbytes, e um programa P1 precise de 201 Kbytes para ser carregado e poder executar. Nesse sistema, 51 pginas sero alocadas, totalizando 204 Kbytes. Portanto, 3 Kbytes sero desperdiados (fragmentao interna). Podemos dizer que o tamanho da pgina definido pode trazer algumas vantagens e desvantagens ao sistema computacional. Portanto, importante saber definir um tamanho de pgina coerente para que o sistema possa realizar a paginao. Utilizar pginas de tamanhos maiores significa que um processo ocupar menos pginas e, portanto, a tabela de pginas ser menor e a leitura do disco ser mais eficiente. Normalmente, as pginas maiores resultam em melhor desempenho do mecanismo de gerncia de memria. Contudo, devemos saber que pginas maiores geram uma fragmentao interna maior. O tamanho das pginas normalmente fixado pelo hardware que suporta a gerncia de memria, ou seja, pela MMU.

Prof. Dr. Jean M. Laine

Sistemas Operacionais

Implementao da Tabela de Pginas A forma como a tabela de pginas implementada um fator importante e que deve ser pensado, uma vez que ela deve ser consultada a cada acesso memria. Tabelas de pginas pequenas podem ser colocadas em registradores de acesso rpido, melhorando bastante o desempenho de pesquisas pelo endereo fsico. Suponha que um PC tenha uma memria lgica para os processos de apenas 64 Kbytes e que cada pgina ocupe 8 Kbytes, ento existir apenas 8 entradas nas tabelas de pginas.

Prof. Dr. Jean M. Laine

Sistemas Operacionais O que acontece quando um processo escalonado e outro assume o processador? A tabela de pginas do processo que ser executado dever ser copiada do descritor de processo (DP) para os registradores. Tabelas de pginas muito grandes no podem ser mantidas em registradores, portanto, outra soluo deve ser pensada. Uma outra estratgia manter a tabela de pginas na prpria memria do computador. Nesta abordagem, a MMU possui dois registradores para localizar a tabela de pginas na memria. O primeiro chamado de registrador de base da tabela de pginas (Page Table Base Register, PTBR) que indica o endereo fsico de memria onde a tabela est colocada. O segundo denominado registrador de limite da tabela de pginas (Page Table Limit Register, PTLR) indica o nmero de entradas da tabela. Qual o problema dessa soluo? Agora cada acesso que um processo faz memria lgica transforma-se em dois acessos memria fsica. No primeiro acesso, a tabela de pginas consultada, e o endereo lgico transformado em endereo fsico. No segundo acesso, a memria do processo lida ou escrita. Quando processos so escalonados, os valores do PTBR e do PTLR para a tabela de pginas do processo que recebe o processador devem ser copiados do DP para os registradores na MMU. Alm disso, a memria cache deve ser esvaziada (flushed), pois ela ainda contm entradas da tabela de pgina do processo que executou antes e agora perdeu o processador. Qual uma estratgia para melhorar o desempenho desta soluo? Adicionar uma memria cache especial pode ser uma forma de reduzir o tempo de acesso memria no esquema apresentado. Esta cache ir manter as entradas da tabela de pginas mais recentemente utilizadas. Essa memria cache interna MMU chamada de Translation Lookaside Buffer (TLB). Portanto, quando a entrada requerida da tabela de pginas est na TLB, o acesso memria lgica do processo feito com um nico acesso memria fsica, como quando registradores so utilizados. Nessa situao diz que houve um acerto (hit). Por outro lado, quando a entrada da tabela de pginas associada com a pgina lgica no est na TLB diz que ocorreu uma falta (miss). Neste caso, necessrio um duplo acesso memria fsica, como no esquema sem o cache. O procedimento adotado semelhante ao que acontece na cache convencional, ou seja, a entrada referente a pgina lgica acessada includa na TLB. Os prximos acessos j encontraro essa entrada da tabela de pginas na TLB e o acesso ser rpido.

Prof. Dr. Jean M. Laine

Sistemas Operacionais

Figura 3. Implementao da tabela de pginas com TLB.

As entradas na tabela de pginas so compostas por alguns campos que permitem localizar o endereo efetivo de cada pgina na memria principal (quando carregada) ou na memria secundria (rea de swap). As seguintes informaes so mantidas [CAS03]: 1. Nmero da pgina virtual (NPV): identifica uma nica pgina virtual correspondente entrada; de acordo com o tamanho de pgina utilizado, o endereo na memria secundria pode ser calculado. 2. Bit de presena: indica se a pgina est ou no carregada na memria principal (a pgina est carregada se o bit possui valor 1). 3. Endereo do bloco: se a pgina estiver carregada na memria principal, este campo informa o endereo fsico em que est alocada; um bloco, ou janela (frame), um conjunto de clulas da memria principal que comporta dados de uma pgina. 4. Bits de proteo: definem as permisses de acesso pgina, normalmente atravs de 2 ou 3 bits (leitura, gravao e eventualmente execuo). 5. Bit de modificao: indica se a pgina carregada na memria teve ou no seu contedo alterado; se teve, o contedo dever ser atualizado na memria secundria antes de a pgina deixar a memria principal. Prof. Dr. Jean M. Laine 7

Sistemas Operacionais Outro conceito associado a paginao o working set (conjunto de trabalho). O working set de um processo em execuo definido como o conjunto das pginas requeridas para o seu processamento durante um determinado intervalo de tempo. Por este motivo, o conjunto de trabalho representa a concretizao do princpio de localidade. Quando uma informao que ser processada no est disponvel em uma pgina da memria principal, dizemos que ocorreu uma falta de pgina. Neste momento, preciso que esta pgina seja alocada na memria para que a execuo do processo possa continuar. No entanto, se a memria j estiver cheia, uma das pginas carregadas dever ser sobreposta pela pgina que est sendo trazida da memria secundria. Portanto, dever acontecer uma substituio de pgina e, conseqentemente, ser necessrio escolher qual pgina deixar a memria. Para isso, o sistema operacional implementa um algoritmo de substituio de pgina e escolhe aquela menos importante execuo do processo e a retira da memria. Segmentao O esquema de paginao foi criado para facilitar o gerenciamento da memria. Contudo, os programadores e compiladores no so capazes de ver a memria lgica dividida em pginas, mas sim em segmentos. Dependendo do sistema a granularidade desses segmentos pode ser diferente. Por exemplo, comumente verificamos que um programa pode ser segmentado em: cdigo, dados alocados dinamicamente, dados alocados estaticamente e pilha de execuo. No entanto, alguns sistemas enxergam cada objeto ou mdulo como se fosse um segmento. Quando o sistema utiliza o esquema de segmentao, o endereo lgico tambm dividido em: nmero do segmento e deslocamento dentro do segmento (semelhante ao esquema de paginao). Os segmentos no necessariamente precisam ter o mesmo tamanho. No entanto, existe um tamanho mximo definido para os segmentos. Os endereos lgicos so traduzidos para um endereo fsico atravs de uma tabela de segmentos, que basicamente contm as mesmas informaes da tabela de pginas vista anteriormente. Essa tabela informa o local onde o segmento foi colocado em memria e qual o seu tamanho.

Prof. Dr. Jean M. Laine

Sistemas Operacionais

Figura 4. Esquema de traduo de endereos lgicos em fsico. Quando o deslocamento maior que o limite especificado na tabela de segmentos significa que o processo que est executando est tentando enderear alm do final do segmento, ou seja, fora da sua rea de memria lgica. Nesse instante ser gerada uma interrupo de proteo.

Figura 5. Exemplo de traduo de end. lgico para fsico. Prof. Dr. Jean M. Laine 9

Sistemas Operacionais Questionamento: como o end. lgico de D3 traduzido para o end. fsico? A tabela de segmentos tambm pode ser implementada como a tabela de pginas. Devemos ressaltar que a segmentao no apresenta fragmentao interna, uma vez que cada segmento recebe a quantidade exata de memria que ele precisa. Contudo, a fragmentao externa se faz presente, uma vez que pequenos segmentos podem ser liberados e dificilmente sero reutilizados. interessante observar que segmentos podem ser compartilhados, como por exemplo, um segmento que represente uma rotina especfica dentro de um programa. Um segmento compartilhado s removido da memria se ele no estiver mais sendo utilizado por nenhum processo. Este compartilhamento pode ajudar bastante em termos economia de espao de memria.

Exerccios
01. Explique o que uma pgina de memria. 02. Por que a falta de pginas deve ser evitada na execuo dos programas? 03. Por que os sistemas operacionais usam um esquema chamado paging on demand? 04. Descreva passo a passo o que acontece aps uma falta de pgina. 05. Qual a diferena entre paginao e segmentao? 06. Uma mquina tem um endereamento virtual de 28 bits e um endereamento fsico de 27 bits. As pginas so de 4 KB e as palavras so de 4 Bytes. Quantas entradas/linhas so necessrias para a tabela de pginas armazenar todas as tradues dos endereos virtuais? 07. Quais as fragmentaes apresentadas na gerncia de memria que utilizam parties fixas e as que usam parties variveis? 08. Considere um sistema operacional que trabalha com paginao simples. As pginas so de 1 Kbyte e as palavras so de 1 Byte. O end. lgico formado por 29 bits. O end. fsico formado por 27 bits. Calcule: a. O tamanho (em Bytes) do espao de endereamento virtual. b. O tamanho (em Bytes) do espao de endereamento fsico. c. O tamanho (em bits) das entradas/linhas da tabela de pginas, s traduzindo p em f. d. O tamanho (em bits e bytes) da tabela de pginas. Considere que para cada pgina virtual tenhamos uma entrada/linha na tabela. Prof. Dr. Jean M. Laine 10

Sistemas Operacionais 09. O sistema operacional XYZ utiliza paginao como mecanismo de gerncia de memria. So utilizadas pginas de 8 Kbytes e palavras de 2 bytes. Um endereo lgico ocupa 30 bits e o endereo fsico ocupa 28 bits. Cada entrada na tabela de pginas contm, alm do nmero da pgina fsica, um bit de vlido/invlido e um bit que indica apenas leitura (read-only). Calcule: a. O tamanho (em Bytes) do espao de endereamento virtual. b. O tamanho (em Bytes) do espao de endereamento fsico. c. O tamanho (em bits) das entradas/linhas da tabela de pginas, s traduzindo p em f. d. O tamanho (em bits e bytes) da tabela de pginas. Considere que para cada pgina virtual tenhamos uma entrada/linha na tabela.

Bibliografia
OLIVEIRA, R. S.; CARISSIMI, A. S. e TOSCANI, S. S. Sistemas Operacionais. Sagra Luzzatto, Porto Alegre, 2001. (Cap. 5) TANENBAUM, A. S. Sistemas Operacionais Modernos. 2 Edio. Prentice Hall, 2003.

Referncia Bibliogrfica
[CAS03] CASSETTARI, H. H. Anlise da Localidade de Programas e Desenvolvimento de Algoritmos Adaptativos para Substituio de Pginas. Qualificao de Mestrado. Escola Politcnica da Universidade de So Paulo. Departamento de Engenharia de Computao e Sistemas Digitais. 2003.

Prof. Dr. Jean M. Laine 11