Eu estava checando minhas anotações para 'Memória virtual' e a definição no meu livro é:
Processo de alocação de uma seção do armazenamento secundário para atuar como parte da memória principal
Onde, como a Wikipedia diz:
A memória virtual é uma técnica de sistema de computador que dá a um programa aplicativo a impressão de que ele possui memória de trabalho contígua (um espaço de endereço)
e (Wikipedia também diz)
Observe que "memória virtual" é mais do que "usar espaço em disco para aumentar o tamanho da memória física"
Alguém pode oferecer algum esclarecimento sobre qual é o correto?
virtual-memory
Yacoby
fonte
fonte
Respostas:
A memória virtual é uma camada de abstração fornecida para cada processo. O computador possui, digamos, 2 GB de RAM física, endereçado de 0 a 2G. Um processo pode ver um espaço de endereço de 4 GB, que ele possui inteiramente para si. O mapeamento de endereços virtuais para endereços físicos é tratado por uma unidade de gerenciamento de memória, gerenciada pelo sistema operacional. Normalmente, isso é feito em "páginas" de 4KB.
Isso fornece vários recursos:
Seu livro define a memória virtual (incorretamente) como apenas o nº 3.
Mesmo sem qualquer troca, você precisa estar ciente da memória virtual se escrever um driver de dispositivo para um dispositivo que faça DMA (acesso direto à memória). Seu código de driver é executado na CPU, o que significa que seus acessos à memória são por meio da MMU (virtual). O dispositivo provavelmente não passa pela MMU e, portanto, vê endereços físicos brutos. Portanto, como escritor de driver, você precisa garantir:
fonte
Vou tentar começar devagar e depois juntar tudo isso para você. É tipo isso:
A memória virtual, como comumente usada, refere-se à "paginação". Como o nome sugere, a paginação é como um bloco de notas humano.
Quando você está elaborando somas simples ou aprendendo informações simples, você faz tudo isso em sua mente: basta carregar todas as informações, processá-las e obter a resposta. É como um computador carregando arquivos do disco rígido - ele carrega os programas ou imagens ou outras informações necessárias para trabalhar em sua "memória real" (ou "memória física") e trabalha neles com seu "cérebro" ( seu processador).
No entanto, quando você estiver aprendendo informações complexas ou trabalhando com somas complexas, talvez não consiga encaixar tudo isso na sua cabeça de uma só vez. Você fica confuso, começa a desacelerar, falha em manter tudo lá de uma vez e precisa esquecer algo para se lembrar de outra coisa.
A solução humana é usar um bloco de notas. Anotamos nas páginas todas as coisas que não conseguimos lembrar ao mesmo tempo, mas nos referimos a elas enquanto fazemos as somas. Talvez não consigamos lembrar uma lista enorme de números de vendas para o mês, mas podemos olhar as páginas, obter as informações um pouco de cada vez e processar cada bit. É como o computador "paginando" sua memória - escrevendo páginas cheias de informações e colocando-as na "memória virtual" para referência posterior, e percebendo que precisa de uma página e carregando-a da memória virtual na memória real. No linux e no unix, o local em que essas páginas são armazenadas é literalmente chamado de "arquivo de paginação", e as páginas de dados na memória são literalmente chamadas de "páginas". Sistemas diferentes têm nomes diferentes para essas coisas, mas o conceito geral é o mesmo.
Então, realmente, a paginação é muito simples. Todas as páginas de informações não cabem na memória; portanto, algumas páginas são colocadas em disco e carregadas novamente mais tarde.
Agora, onde fica mais complicado, os sistemas modernos apresentam mapeamento de memória e proteção de memória, que geralmente são gerenciados pelo mesmo sistema de hardware no computador: a unidade de gerenciamento de memória ou MMU.
Em um computador multitarefa (moderno), que pode executar muitos programas ao mesmo tempo e possui proteção de memória, cada programa geralmente é separado de outros programas em execução no mesmo sistema. Dessa forma, um programa não pode alterar outro programa simplesmente acessando sua memória - a MMU separa fisicamente o espaço de endereço de um programa do de outros. Em outras palavras, os programas do usuário não veem os programas de outros usuários nem mesmo outros programas. Eles não veem "memória real" - eles veem sua própria "memória virtual".
Agora, esse conceito de isolamento de memória e o arquivo de paginação são duas coisas conceitualmente diferentes, e é provavelmente por isso que você está confuso. No entanto, a chave é que ambos trabalham usando a MMU - a unidade de gerenciamento de memória, que divide a memória em páginas e mapeia as páginas para um espaço de endereço virtual.
Portanto, quando um programa solicita a memória em um determinado "endereço de memória", o que realmente acontece é que as páginas de memória desse programa e seus endereços correspondentes (o "espaço de endereço" do programa) são consultados e a página que corresponde a esse bloco de memória foi encontrado. Essa página pode ser carregada em algum lugar da memória real, caso em que o programa recebe acesso ou pode ser paginada em um disco. Se for paginado, ele dispara uma "falha de página" - o disco é acessado e a página é carregada na memória. Portanto, o programa funciona mesmo quando não há memória suficiente, mas é executado LENTAMENTE, se for necessário usar o disco para o que normalmente seria um acesso muito rápido à memória.
Agora, se não houver espaço suficiente para carregar essa página na memória, você terá um problema. Nesse caso, alguma página OTHER que já esteja na memória deve ser "trocada" para o disco, para que a primeira página do programa possa ser carregada. Ou, podem igualmente ser páginas do mesmo programa. Você vê isso algumas vezes em programas gráficos, por exemplo, em sistemas muito carregados, quando parte da imagem é carregada lentamente e desenhada rapidamente, a próxima parte é carregada igualmente lentamente e desenhada rapidamente e quando você volta ao trabalho com a primeira parte, é lento novamente. Isso ocorre porque eles estão sendo carregados para serem trabalhados e depois trocados novamente, para que outra coisa possa ser trabalhada. Obviamente, essa é uma maneira muito lenta de trabalhar, e o que você realmente precisa é de mais memória REAL.
fonte
Eu sei que é tarde demais .... mas achei que ainda era útil.
fonte
Bem, se entendermos a palavra virtual, acho que podemos entender como ela se relaciona com a memória.
"Virtual", conforme definido no Dictionary.com: "temporariamente simulado ou estendido por software de computador: um disco virtual na RAM; memória virtual no disco rígido".
No caso da memória virtual, o sistema está simulando a memória do sistema usando recursos de memória mais lentos (por exemplo, disco rígido, pen drive etc.). Quando é necessária memória adicional, o sistema troca dados na memória do sistema, o que não é necessário para o disco rígido. unidade ou recurso que você configurou. Isso libera memória do sistema para que seu aplicativo possa continuar a tarefa que estava executando.
A troca é um processo contínuo e, portanto, se você atualizar sua memória, deverá ver uma melhoria no desempenho, pois o sistema não deve exigir a troca para a memória mais lenta com frequência.
fonte
A memória virtual é um recurso de um sistema operacional (SO) que permite a um computador compensar a escassez de memória física transferindo temporariamente páginas de dados da RAM (memória de acesso aleatório) para o armazenamento em disco.
Isso significa que é como um espelho ou uma amostra de memória usada na máquina virtual ou na caixa virtual para tentar sistemas operacionais sem formatar o computador.
fonte
Memória virtual é um bloco do seu disco rígido que o sistema usa como arquivo de paginação, além da RAM física.
Fica complicado e, às vezes, lento, porque o Windows NÃO desfragmenta essa parte do seu disco rígido.
As 2 melhores dicas que posso oferecer: 1) O Virt Mem deve ser definido em mínimo e máximo em aproximadamente 1,5X sua memória física. ex. 2 GB de RAM = 3070 MB Virt. 2) Ao desfragmentar, desligue o arquivo de paginação. Desfragmente 2x e redefina o número original. Isso fornece uma fatia limpa da unidade e aumenta a velocidade do arquivo de paginação.
fonte