Os aplicativos são removidos da RAM quando estão fechados?

2

Eu notei que quando você abre um programa, fechá-lo e depois abri-lo novamente, ele parece abrir muito mais rápido na segunda vez.

Isso é porque a segunda vez já está na RAM?

Posto de outra forma, eu assumo que uma vez que um programa fecha, seu espaço de memória é marcado como não utilizado. Se esse programa for aberto novamente antes que o espaço de memória antigo seja usado, ele terá que recarregar o programa inteiro do disco?

Dean
fonte
1
Essa é a diferença entre memória livre e inativa. Ambos podem navegar conforme necessário, mas o último já contém dados que podem ser reutilizados.
Daniel Beck
1
Você vai receber respostas vagas e confusas porque fez uma pergunta vaga e confusa. A resposta a essa pergunta é dependente do sistema operacional, mas você não especificou um sistema operacional. O comportamento em um Unix antigo com programas de "texto" é diferente do comportamento no Windows NT, que é diferente do comportamento no Linux, que é diferente dos comportamentos em BSDs e MacOS, que é diferente do comportamento no Solaris - porque suas arquiteturas de gerenciamento de cache e memória são sutilmente, ou até grosseiramente, diferentes umas das outras.
JdeBP
@JdeBP Ponto justo. Eu acho que eu estava procurando a resposta do OS 101, ou pelo menos algumas idéias que eu não tinha considerado, como o cache de disco mencionado abaixo.
Dean

Respostas:

1

Em geral, quando um aplicativo fecha / termina, o armazenamento ocupado é liberado instantaneamente e, se você reiniciar o aplicativo, ele será carregado do disco novamente, para o "novo" armazenamento.

A maior exceção a isso seria em alguns "telefones inteligentes", onde, às vezes, quando você "finaliza" um aplicativo, ele não é encerrado imediatamente, mas é simplesmente "contextualizado" por um período de tempo no qual você pode reiniciá-lo no próximo. futuro. Mas se você não usar o aplicativo por um período de tempo, ele será eventualmente finalizado pelo sistema operacional e pelo armazenamento recuperado. (Até onde sei, este esquema não é usado em computadores comuns da Microsoft ou da Apple, apenas telefones.)

Outra exceção, um pouco mais técnica, é que mesmo que o programa seja finalizado e seu armazenamento liberado, a imagem de disco do programa (ou pelo menos partes dele) ainda pode existir no disco "cache", e pode ser acessada mais facilmente uma segunda vez do que a primeira vez. Isso pode ser a causa do que você percebe como uma inicialização mais rápida na segunda vez.

Há outra razão mais simples para essa inicialização mais rápida. Quando você finaliza um aplicativo e, em seguida, o reinicia imediatamente, há esse "furo" conveniente no armazenamento que se ajusta exatamente ao seu programa. Se você começar mais tarde, depois de executar outras coisas, o sistema operacional tem que descobrir o armazenamento disponível, e isso geralmente significa que ele deve "sair" de outros dados na memória RAM, um processo demorado.

Daniel R Hicks
fonte
3
"Em geral, quando um aplicativo fecha / termina, o armazenamento ocupado é imediatamente liberado, e se você reiniciar o aplicativo, ele será carregado do disco novamente, para o" novo "armazenamento." Isso não é verdade para qualquer sistema moderno que use mapeamento de memória para carregar binários com lentidão.
billc.cn
Isso seria basicamente o "cache" dos dados do disco. Mas observe que o carregamento real do texto do programa é uma pequena parte da preparação de um programa para execução. Vinculá-lo ao RTE e preparar as áreas de dados é a parte maior.
Daniel R Hicks
(Mas você está certo - eu tinha esquecido esse recurso específico.)
Daniel R Hicks
@DanH O que você está dizendo é completamente falso para qualquer sistema operacional moderno. E é obviamente uma maneira estúpida de fazer as coisas. Quando um programa é carregado, você teria duas cópias do programa, uma em execução e outra no cache de disco - um desperdício de memória completamente inútil. Em sistemas operacionais modernos, não há cache de disco separado, a maioria da memória física é um cache de páginas.
David Schwartz
Apenas por sorrisos, eu abri o Firefox, sem fazer nada além de deixá-lo ir para a sua home page (Google). O firefox.exe é 925K, mas seu tamanho virtual é de 269.000K, e seu conjunto de trabalho é de 84.000K. Portanto, o texto real do programa é uma parte muito pequena do requisito geral de armazenamento. Da mesma forma para Solataire: exe - 859K, tamanho virtual 183.000K, conjunto de trabalho 47.000K.
Daniel R Hicks
4

Não é mais usado ou não usado quando o programa está aberto do que quando o programa é fechado. Memória é usava se contiver informações úteis. Ele contém informações úteis enquanto o programa está em execução e quando o programa não está mais em execução.

Na verdade, a maioria dos sistemas operacionais nem sequer considera se o programa está sendo executado. Por que guardar algo na memória se não estiver sendo acessado apenas porque um programa está sendo executado? E por que descartar algo da memória só porque nenhum programa em execução naquele instante está usando?

Sistemas operacionais passam pelo acesso aos dados. Obviamente, a memória que contém dados que nunca podem ser acessados ​​é considerada gratuita.

David Schwartz
fonte