Linux-swap na reinicialização

3

Eu estou querendo saber o que realmente acontece com uma reinicialização da partição Linux-swap. Eu tenho feito um curso de organização de computadores e, ao instalar / particionar um novo disco, fiquei bastante curioso sobre isso.

  1. Pelo que entendi, as partições Linux-swap são espaços mais ou menos não alocados dentro de um esquema de particionamento em um disco rígido que atua como uma pilha de memória em um fasion semelhante ao ram mas tinha um maior databus esperando tempo (uma vez que é um HDD / SSD gerenciado em parte pela própria unidade em vez de verdadeiro RAM gerenciado diretamente pela CPU). Este modelo está correto?

  2. As informações são persistentes até que uma ferramenta de troca do Linux a limpe, diferentemente da RAM, que é apagada por um lapso de energia?

  3. Você pode resolver isso diretamente? Ou em C / C ++ pela assistência do kernel (para não estragar tudo)?

por user2068060 07.12.2013 / 20:34

2 respostas

1
  1. Seu curso provavelmente cobriu as diferenças entre o cache L1 / L2 e os registros; com uma hierarquia de registradores, L1, L2, L3, RAM. Da mesma forma, conforme você observa, é possível considerar a troca como espaço não alocado para o qual a RAM é trocada.
  2. O swap pode ser persistente, dependendo da configuração do sistema. Algumas distribuições do Linux deliberadamente apagam / trocam zero na inicialização ou desligamento por razões de segurança ou desempenho. Se você executar o swap no SSD, pode ser útil emitir TRIM / DISCARD em um bloco de espaço de troca quando o conteúdo for copiado de volta para a RAM. Não há nenhuma ferramenta específica para limpar a troca, além de permitir que o kernel reutilize o espaço (se ele não for alocado e só gravar nele, ele não se importará com o que havia antes). Outro paradigma comum é criptografar a troca com uma nova chave em cada inicialização e depois descartar a chave no encerramento.
  3. Você não pode acessar o conteúdo da troca diretamente do kernel. Você pode ignorar o processo de memória normal e tentar lê-lo como disco, mas normalmente não tem conhecimento de onde ou mesmo se alguma parte do processo está em troca.
por 08.12.2013 / 00:25
0

O espaço de troca é uma parte do disco usado para armazenar conteúdo adicional da memória. Desde que é armazenado no disco, não é apagado quando a energia se apaga (ao contrário do conteúdo de RAM). No entanto, quando o sistema inicializa, ele não lê nada que tenha sido armazenado na troca - os dados não são diretamente utilizáveis, pois pertencem a programas que não estão mais em execução.

O kernel usa o espaço de troca para armazenar alguns dos dados que normalmente seriam armazenados na RAM. Os dados não podem ser usados diretamente enquanto estão no disco, então precisam ser carregados de volta na RAM quando forem usados. O ponto de troca é permitir que o sistema use mais memória do que a disponível somente na RAM. O kernel começa a escrever partes do conteúdo da RAM para trocar quando o uso de RAM fica alto.

Os dados que estão no espaço de troca permanecem até serem sobrescritos por novos dados. Principalmente essa informação é inutilizável porque é muito fragmentada e parcial. No entanto, se informações confidenciais forem escritas para troca, isso pode ser um risco de segurança - basta uma chave para ser escrita lá. Portanto, se houver risco de roubo do seu disco rígido, você deverá criptografar seu espaço de troca.

O Linux pode usar o espaço de troca para hibernar o sistema. Nesse caso, ele substitui todos os processos (e não apenas algumas páginas conforme necessário, como normalmente é o caso) e grava dados adicionais no espaço de troca que permitem ao kernel reconstruir o layout de memória completa na próxima inicialização. Além disso, as informações são armazenadas em um formato diferente (na maioria das configurações, a imagem de hibernação é compactada).

O swap é completamente transparente para os processos. Um processo não sabe se um determinado local na memória foi trocado. No momento em que um processo está acessando um local de memória, esse local está sempre na RAM. Você pode ler diretamente da partição swap, mas não pode fazer nada útil dessa maneira.

    
por 09.12.2013 / 01:35