Memória Virtual – Wikipédia, A Enciclopédia Livre

Embed Size (px)

Citation preview

  • 6/5/2014 Memria virtual Wikipdia, a enciclopdia livre

    http://pt.wikipedia.org/wiki/Mem%C3%B3ria_virtual 1/5

    O programa acha que tem uma grande

    gama de endereos contguos, mas, na

    realidade, as partes que est a utilizar esto

    dispersas em torno da RAM e as partes

    inactivas so guardadas em um arquivo em

    disco.

    Memria virtual

    Origem: Wikipdia, a enciclopdia livre.

    Memria virtual, uma tcnica que usa a memria secundriacomo uma cache para armazenamento secundrio. Houve duasmotivaes principais: permitir o compartilhamento seguro eeficiente da memria entre vrios programas e remover ostranstornos de programao de uma quantidade pequena elimitada na memria principal.

    A memria virtual consiste em recursos de hardware esoftware com trs funes bsicas:

    (i) realocao (ou recolocao), para assegurar que

    cada processo (aplicao) tenha o seu prprio espao deendereamento, comeando em zero;

    (ii) proteo, para impedir que um processo utilize umendereo de memria que no lhe pertena;

    (iii) paginao (paging) ou troca (swapping), quepossibilita a uma aplicao utilizar mais memria do que a

    fisicamente existente (essa a funo mais conhecida).

    Simplificadamente, um usurio ou programador v um espao deendereamento virtual, que pode ser igual, maior ou menor que amemria fsica (normalmente chamada memria DRAM -Dynamic Random Access Memory).

    ndice

    1 Paginao para principiantes

    2 Histria

    3 Funcionamento

    3.1 Linux em 32 bits

    3.2 Windows em 32 bits

    4 Resumo

    5 Referncias6 Ver tambm

    7 Ligaes externas

    Paginao para principiantes

    Para o usurio que est com pouca memria RAM, paginao muito til pois possibilita que os seusprogramas utilizem um tamanho sua escolha para usar como uma memria "RAM" virtual. Mas caso amemria do programa exceda a memria real do seu sistema, apenas as partes mais utilizadas pelo processo

    1 2

  • 6/5/2014 Memria virtual Wikipdia, a enciclopdia livre

    http://pt.wikipedia.org/wiki/Mem%C3%B3ria_virtual 2/5

    atual estaro na memria, enquanto o resto ficar armazenado no disco rgido.

    Como o disco rgido um hardware mais lento do que a memria RAM, essa memria virtual que foidimensionada no ser igual como se estivesse a utilizar uma memria RAM normal no computador. Amelhoria significativa quando voc usa memria virtual em um computador que no tem a mesma.

    Histria

    Todos os computadores modernos de uso genrico utilizam memria virtual para executar a mais simples dasaplicaes, tais como processadores de texto, folhas de clculo, jogos, leitores multimdia, etc. Os sistemasoperacionais mais antigos, como o DOS e o Microsoft Windows de 1980, ou os mainframes da dcada de1960, geralmente no tinham a funcionalidade da memria virtual, com as excepes notveis do Atlas B5000e o Apple Lisa.

    A memria virtual foi inicialmente criada para possibilitar a um programa ser executado em um computador comuma quantidade de memria principal (fsica) menor que o tamanho de todo o espao do utilizado pelo prprioprograma. Ou seja, o espao ocupado pelas instrues, dados e pilha de execuo de um programa pode sermaior que o espao em memria principal disponvel. Por exemplo, um programa que ocupa um total de 64MiB pode ser executado em um computador com apenas 32 MiB disponveis para o programa, bastando queo sistema operacional se encarregue de manter sempre na memria principal as partes adequadas execuonaquele momento.

    A memria virtual foi desenvolvido por volta de 1959-1962, na Universidade de Manchester para oComputador Atlas, terminado em 1962. A ideia atribuda a John Fotheringham, no entanto, Fritz-RudolfGntsch, um cientista alemo, pioneiro da cincia computacional e, mais tarde, o criador do mainframeTelefunken TR 440, alega ter inventado o conceito em 1957, na sua tese de doutorado Logischer Entwurfeines digitalen Rechengertes mit mehreren asynchron laufenden Trommeln und automatischemSchnellspeicherbetrieb (Conceito lgico para um sistema digital computacional com mltiplos sistemasassncronos de armazenamento e modo de memria rpida automtica).

    Funcionamento

    Existem dois mecanismos principais para implementao da memria virtual: paginao e segmentao

    Na paginao a memria fsica dividida em blocos de bytes contguos denominados molduras de pginas(page frames), geralmente com tamanho de 4 KiB (arquiteturas x86 e x86-64) ou 8 KiB (arquiteturas RISC)de tamanho. Por sua vez, o espao de memria de um processo (contendo as instrues e dados do programa) dividido em pginas que so fisicamente armazenadas nas molduras e possuem o mesmo tamanho destas.

    Na segmentao existem vrios espaos de endereamento para cada aplicao (os segmentos). Neste caso, oendereamento consiste em um par ordenado deslocamento, onde o deslocamento a posio do byte dentrodo segmento.

    Na arquitetura x86 (32 e 64 bits), so usadas a segmentao e a paginao. O espao de endereamento deuma aplicao dividido em segmentos, onde determinado um endereo lgico, que consiste no par[segmento:deslocamento]; o dispositivo de segmentao converte esse endereo para um endereo linear(virtual); finalmente, o dispositivo de paginao converte o endereo virtual para fsico, localizando a moldurade pgina que contm os dados solicitados.

    3

    2

    4

    5

    6

    7 8

    9

    10

  • 6/5/2014 Memria virtual Wikipdia, a enciclopdia livre

    http://pt.wikipedia.org/wiki/Mem%C3%B3ria_virtual 3/5

    O endereo virtual encaminhado para a unidade de gerenciamento de memria (MMU - MemoryManagement Unit), um dispositivo do processador, cuja funo transformar o endereo virtual em fsico esolicitar este ltimo endereo ao controlador de memria. A converso de endereos virtuais em fsicos baseia-se em tabelas de pginas, que so estruturas de dados mantidas pelo sistema operativo.

    As tabelas de pginas descrevem cada pgina da aplicao (num sistema em execuo, existe pelo menos umatabela de pginas por processo). Cada tabela indexada pelo endereo virtual e contm o endereo fsico damoldura correspondente ou a indicao de que a pgina est em um dispositivo de armazenamento secundrio(normalmente um disco rgido).

    Como o acesso tabela de pginas muito lento, pois est em memria, a MMU possui uma cache associativachamada buffer de traduo de endereos (TLB - Translation Lookaside Buffer) que consiste em umapequena tabela contendo os ltimos endereos virtuais solicitados e seus correspondentes endereos fsicos.

    Linux em 32 bits

    Na arquitetura x86 de 32 bits, o Linux pode enderear at 4 GiB de memria virtual (tambm chamado deespao de endereamento linear). Este espao dividido em dois: o espao do ncleo (kernel space) e oespao do usurio (user space). O primeiro nico e protegido das aplicaes comuns, e armazena, alm doprprio cdigo do ncleo, uma estrutura que descreve toda a memria fsica; este espao limitado a umgibibyte (1024 MiB). Cada aplicao recebe um espao de endereamento de at 3 GiB para armazenar ocdigo e os dados do programa.

    Caso a memria fsica seja menor do que a necessria para conter todas as aplicaes, o Linux pode alocarespao em meios de armazenamento diversos (disco rgido, dispositivo de rede e outros). Este espao tradicionalmente conhecido como espao de troca (swap space), embora o mecanismo adotado seja apaginao.

    Windows em 32 bits

    Analogamente ao Linux, as verses atuais do Windows de 32 bits usam um espao de endereamento de 4GiB divididos em duas partes. Por padro, o Windows reserva 2 GiB para o ncleo e permite que cadaaplicao use at 2 GiB. Entretanto, possvel alterar essa configurao, e permitir que uma aplicao use at 3GiB. Neste caso, obviamente, o espao do ncleo ser reduzido para um gibibyte.

    Diferentemente do Linux, o Windows usa apenas arquivos para paginao (paging files). Pode usar at 16desses arquivos, e cada um pode ocupar at 4095 MiB de espao em disco.

    Resumo

    A memria virtual ou arquivo de paginao do Windows, um aplicativo que permite ao sistema operacionalobter mais memria RAM do que o computador possui, ou seja, se o computador possui pouca memria, osistema utiliza um arquivo chamado Arquivo de Paginao que um pequeno arquivo, alocado no HD, utilizadocomo memria RAM. Este processo, evita que em horrios de pico, o sistema trave ou fique extremamentelento. Porm, como o arquivo fica alocado no HD, o sistema no vai ficar to rpido quanto utilizando amemria real do computador, j que a leitura do HD muito mais lenta do que a leitura da memria RAM.Assim se o computador fica por muito tempo neste estado (utilizando o arquivo de paginao) recomendvelaumentar a memria RAM.

    2

    11

    12

  • 6/5/2014 Memria virtual Wikipdia, a enciclopdia livre

    http://pt.wikipedia.org/wiki/Mem%C3%B3ria_virtual 4/5

    No Linux, a memria virtual tambm existe, mas ela dimensionada quanto ao seu tamanho na instalao esomente poder ser mudada se o disco rgido for reparticionado para utilizar uma partio maior de swap (que assim chamado a memria virtual do Linux), e assim, deixando a swap maior.

    recomendado utilizar como memria virtual de 2x a 3x a quantidade que o computador tiver de memriaRAM. [Erro de citao: Cdigo invlido; refs sem contedo devem ter um parmetro de nome]

    A memria virtual deixou os programadores despreocupados com quanto de memria seu programa irprecisar para rodar no computador e se o respectivo programa poderia rodar com outros sem travar, podendoo programador se preocupar mais com a tarefa de programao do que com quanto o programa ir gastar dememria.

    Referncias

    1. HENESSY, John L.; PATTERSON, David A. Arquitetura de computadores: uma abordagem

    quantitativa. Cap. 5. Rio de Janeiro: Campus, 2003.

    2. TANENBAUM, Andrew S. Sistemas operacionais modernos. Cap. 3. Rio de Janeiro: LTC. 1999.3. HowStuffWorks - Como funciona a memria virtual (http://informatica.hsw.uol.com.br/memoria-

    virtual.htm). informatica.hsw.uol.com.br. Pgina visitada em 13 de Maro de 2011.4. Windows Version History (http://support.microsoft.com/kb/32905). Microsoft (Last Review: July 19, 2005).

    Pgina visitada em 2008-12-03.5. DENNING, Peter (1997). "Before Memory Was Virtual (http://cs.gmu.edu/cne/pjd/PUBS/bvm.pdf)" (PDF). In

    the Beginning: Recollections of Software Pioneers.

    6. TANENBAUM, Andrew S.; WOODHULL, Albert S. Sistemas operacionais: projeto e implementao.Porto Alegre: Bookman. 1999.

    7. The Atlas (http://www.computer50.org/kgill/atlas/atlas.html). www.computer50.org. Pgina visitada em 13de Maro de 2011.

    8. "Dynamic storage allocation in the Atlas computer, including an automatic use of a backing store",Communications of the ACM, vol. 4, issue 10, pp. 435-436 - outubro de 1961

    9. STALLINGS, William. Operating systems - internals and design principles. 5. ed. Cap. 8. Upper SaddleRiver: Pearson - Prentice Hall. 2005.

    10. INTEL.Intel 64 and IA-32 architectures software developers manual - volume 3A: system

    programming guide, part 1. Cap. 3. Disponvel em Intel - Manaul de processadores(http://www.intel.com/products/processor/manuals/index.htm). Acesso em 14 maio 2010

    11. GORMAN, Mel. Understanding the Linux virtual memory manager. Cap. 4. Upper Saddle River:Prentice Hall, 2004.

    12. RUSSINOVICH, Mark E.; SOLOMON, David A. Microsoft Windows internals - Microsoft Windows

    Server 2003, Windows XP, and Windows 2000. 4. ed. Cap. 7. Redmond: Microsoft Press. 2005.

    Bibliografia

    SILBERSCHATZ, Galvin Gagne. Fundamentos de Sistemas Operacionais. [S.l.: s.n.], 2002.

    HENNESSY, John L.. Computer Architecture: A Quantitative Approach. [S.l.: s.n.]. ISBN 1-55860-724-2

    TANENBAUM, Andrew S.. Sistemas operacionais modernos. 2. ed. So Paulo: Prentice-Hall,.

    [S.l.: s.n.], 2003.. 695 p. ISBN 85-87918-57-5 p.

    MURALI. Virtual Memory Secrets. [S.l.: s.n.].

    Ver tambm

    Computador

    Gerenciamento de memria

    2

    a b c d

  • 6/5/2014 Memria virtual Wikipdia, a enciclopdia livre

    http://pt.wikipedia.org/wiki/Mem%C3%B3ria_virtual 5/5

    Swapping

    Ligaes externas

    Como funcionam as memrias virtuais? (http://computer.howstuffworks.com/virtual-memory.htm) (em

    ingls)Partio SWAP do Linux (http://am.xs4all.nl/phpwiki/index.php/swap) (em ingls)

    Obtida de "http://pt.wikipedia.org/w/index.php?title=Memria_virtual&oldid=37675337"

    Categoria: Gerenciamento de memria

    Esta pgina foi modificada pela ltima vez (s) 13h28min de 19 de dezembro de 2013.

    Este texto disponibilizado nos termos da licena Creative Commons - Atribuio - CompartilhaIgual3.0 No Adaptada (CC BY-SA 3.0); pode estar sujeito a condies adicionais. Para mais detalhes,

    consulte as Condies de Uso.