O que determina quanto RAM um programa usa?

0

Usando jogos como exemplo - eu poderia estar jogando um jogo que ocupa 30 GB de armazenamento no meu disco rígido, mas o jogo poderia estar usando apenas 2 GB de memória. Obviamente, o jogo não é carregado de uma só vez, mas o uso de RAM é igual a quantos dados estão sendo lidos + usados no HDD?

tl; dr Por que um jogo usando 2GB de memória realmente usa 2GB de memória, qual é o fator decisivo?

    
por guest301834 02.04.2015 / 09:33

2 respostas

1

"o uso da RAM é igual a quantos dados estão sendo lidos + usados no HDD?" Não, não é tão simples assim. Todos os sistemas operacionais de hoje usam memória virtual. A RAM que o programa usa quase sempre será um subconjunto do espaço de endereço virtual total que o programa define, por dois motivos.

Primeiro, porque o programa quase nunca acessará todos os v.a.s. define. Por exemplo, suponha que você nunca explore um corredor específico em um nível de jogo - não há motivos para trazer esses dados do disco. Ou se você não usar o recurso de lista numerada no Word, não há motivo para inserir esse código. O código e os dados geralmente são "paginados por demanda", o que significa que são apenas paginados se forem realmente referenciados ("demandados") pelo programa.

Em segundo lugar, mesmo depois que as coisas foram paginadas, o sistema operacional pode decidir que algo mais pode fazer melhor uso de algumas das RAM e paginar algumas delas - particularmente se elas não foram referenciadas por um tempo, e especialmente em sistemas com pequenas quantidades de RAM para sua carga de trabalho (chamada "pressão de RAM"). Isso também pode se aplicar ao código e aos dados separadamente. Um exemplo ingênuo seria os dados para um nível que você não conhece há algum tempo.

O resultado do acima é que a quantidade de RAM que um programa "usa" é realmente melhor pensada como a quantidade de espaço de endereço virtual que o programa referenciou recentemente, limitado ainda mais pelo que o sistema operacional permite que o programa use. Ele pode variar muito dependendo de quanta RAM você tem, o que mais está rodando no sistema e o que o programa está fazendo.

tl: dr: é complicado. O capítulo "gerenciamento de memória" do Windows Internals , 6º. ed., tem cerca de 200 páginas, o que é um livro de tamanho razoável por si só.

    
por 02.04.2015 / 09:52
1

Vários fatores, na verdade.

  1. Máximo permitido - o sistema operacional tem mecanismos muito complicados e delicados que controlam o uso da RAM. Esses incluem limites em quanto RAM qualquer aplicativo usa. por exemplo, o limite do Windows depende da versão ( link , link )
  2. Qual programa está realmente fazendo. Por exemplo, o Microsof Office usará menos memória que o mais novo FPP, simplesmente porque ele precisa conter muito menos dados para renderização e cálculos.
  3. De que tipo o programa é - como anteriormente: o jogo usa muita RAM porque deve armazenar dados gráficos de todos os tipos (renderização, efeitos, cálculos, etc.). Além disso, a qualidade de exibição é um fator enorme.
  4. Hardware real - se o sistema tiver uma RAM grande para gráficos (no adaptador gráfico), ele será usado primeiro e depois recorrerá apenas à memória RAM para conter os arquivos reais do aplicativo e os dados atualmente processados. Se não for suficiente, recorrerá ao uso de muita memória RAM até o limite.
  5. O tamanho real da pasta do jogo é principalmente renderização e outros dados do jogo - paredes, paisagem, terreno, características de armas, efeitos sonoros etc. são todos descritos anteriormente. Pense nisso como seria uma espécie de wireframe. Quando você joga computador "só" preenche esses dados com texturas e assim por diante - paredes reais. Quanto maior a qualidade que você escolher, mais poder de processamento e sistema de memória usará e, se não for suficiente, será slooooow. E esta é também a razão pela qual cada estágio / missão / capítulo é carregado separadamente - porque não há espaço disponível para todos de uma vez.

EDIT: adicionado outro link.

    
por 02.04.2015 / 10:26

Tags