A troca permite que as páginas físicas sejam movidas, no sentido de que uma página usada para uma finalidade poderia ter seu conteúdo trocado e usado para outra finalidade.
Em um sistema de gerenciamento de memória virtual com variedade de jardins, não há fragmentação de memória física no que diz respeito a aplicativos. Cada página alocada por um aplicativo pode ser levada para qualquer lugar na memória física, não há razão para que duas páginas consecutivas na memória virtual precisem ter alguma proximidade particular na memória física.
Existem muitos casos em que a fragmentação da memória é uma preocupação: quaisquer circunstâncias nas quais a localização da memória física é importante. Isso inclui:
- Paravirtualização , em que as máquinas virtuais decidem quem é o proprietário da página física com granularidade mais grosseira do que uma página.
- Da mesma forma, clusters , onde vários nós compartilham o mesmo pool de RAM.
- Memória usada pelos periféricos, o que geralmente requer grandes buffers contíguos.
- Otimizações como páginas enormes .
Na ausência de cenários “complexos”, a fragmentação da memória física pode causar problemas ao conectar um novo dispositivo que requer um pool de memória contígua (o kernel mantém esses pools para isso, mas eles precisam ser ampliados se um driver repentinamente faz um grande pedido). Se o uso do dispositivo for constante, a fragmentação física não importaria e, em particular, não faria com que um aplicativo seja executado mais lentamente ou fique sem espaço.
É possível que a fragmentação do espaço de endereço físico possa levar a mais memória sendo usada no kernel para representar a lista livre. Eu não acredito que este seja o caso no Linux, mas estou longe de ser um especialista em seu gerenciamento de memória.
Para resumir, permitir que parte de um aplicativo seja permutado não permite que esse aplicativo aloque mais memória, mas pode permitir que alguns drivers de hardware aloquem a memória de que precisam.
Adicionar swap não tem efeito no espaço da memória virtual do aplicativo. Esse é o ponto de troca, afinal de contas - é transparente para aplicativos.
No entanto, é possível que a adição de swap a uma máquina teria uma influência indireta na fragmentação dentro do espaço de memória virtual de um aplicativo. Se o sistema ficar sem memória virtual, o aplicativo terá que se contentar com o que possui. Se o aplicativo estiver usando a maior parte da memória que alocou do sistema operacional, isso causará fragmentação dentro do espaço, à medida que pequenos blocos forem liberados aqui e ali. Se o aplicativo tiver mais memória virtual (algumas das quais são trocadas), isso dará ao gerenciador de memória mais espaço para manobrar e reduzirá o risco de que o aplicativo fique sem memória, com três blocos separados de 2kB disponíveis quando quiser um único. Objeto de 4kB.