O espaço de troca possui um sistema de arquivos?

26

Para trabalhar com dispositivos de armazenamento, precisamos de um sistema de arquivos, e o espaço de troca?

Se não tiver um sistema de arquivos, como o sistema operacional funciona? Como os dados (da RAM) são gravados no disco e como são acessados novamente?

    
por Sinoosh 06.11.2016 / 11:55

3 respostas

27

O swap tecnicamente não possui um sistema de arquivos específico. Todo o propósito do sistema de arquivos é estruturar os dados de certa maneira. A partição de troca em particular não tem estrutura, mas possui um cabeçalho específico, que é criado pelo programa mkswap . Em particular, isso (tirado de kernel.org ):

 25 union swap_header {
 26     struct 
 27     {
 28         char reserved[PAGE_SIZE - 10];
 29         char magic[10];
 30     } magic;
 31     struct 
 32     {
 33         char     bootbits[1024];
 34         unsigned int version;
 35         unsigned int last_page;
 36         unsigned int nr_badpages;
 37         unsigned int padding[125];
 38         unsigned int badpages[1];
 39     } info;
 40 };

Cada partição tem um código específico associado a ela e, de acordo com TLDP :

  

o código para o ext2 é 0x83 e o swap do linux é 0x82

Quando o arquivo de troca está envolvido, essa é uma história um pouco diferente. O kernel deve respeitar o fato de que o sistema de arquivos pode ter sua própria maneira de estruturar dados. Do mesmo link do kernel.org:

  

Lembre-se de que os sistemas de arquivos podem ter seu próprio método de armazenar arquivos   e disco e não é tão simples como a partição de swap onde   informações podem ser gravadas diretamente no disco. Se o armazenamento de apoio for   uma partição, em seguida, apenas um bloco de tamanho de página requer IO e como lá   não é um sistema de arquivos envolvido, o bmap () é desnecessário.

Em conclusão, tecnicamente você poderia chamar o espaço de troca de um sistema de arquivos de seu próprio tipo, mas não é muito comparável com sistemas de arquivos como NTFS ou ext4

Você também perguntou

  

Eu quero saber como é possível escrever em um espaço de armazenamento sem sistema de arquivos

Estritamente falando, não há necessidade de a RAM ser estruturada. No entanto, partes da RAM podem ser estruturadas como tmpfs sob sistemas operacionais semelhantes ao Unix. Há também ramfs , e initramfs, que é o que é carregado durante o processo de inicialização. Mas os dados da RAM tecnicamente são apenas 1s e 0s brutos, então não há necessidade de estruturá-los de qualquer maneira.

    
por Sergiy Kolodyazhnyy 06.11.2016 / 12:34
14

O espaço de troca é usado pelo kernel para armazenar temporariamente as páginas da memória do sistema (RAM) quando elas ficam cheias. O kernel usa suas próprias tabelas internas para "lembrar" exatamente onde dentro do disco de swap ele colocou a página. Como resultado, os discos de troca não contêm um sistema de arquivos adequado e geralmente são apenas partições em branco no disco.

O que você pode estar interessado, é um disco RAM, que é um pequeno sistema de arquivos armazenado na memória do sistema. Se mais memória for necessária, o kernel irá empurrá-lo (e outros conteúdos) para o espaço de swap. Veja aqui para instruções sobre como configurar um.

    
por Jake 06.11.2016 / 12:04
13

O espaço de troca é dividido em blocos do mesmo tamanho que as páginas de memória (geralmente 4kB) e um registro do mapeamento dessas páginas para a memória do aplicativo forma uma extensão do subsistema de memória virtual na CPU e no SO.

Ou seja, já existe um sistema de mapeamento entre os espaços de memória do aplicativo e o endereço da memória física real. Um aplicativo recebe um grande espaço de endereço de memória, que pode usar o máximo que puder. Quanto mais esse espaço de endereço de memória é realmente usado, a memória física é mapeada para esse aplicativo para servir como o meio de armazenamento.

Quando a memória é trocada para o disco, um sistema relacionado mantém esse mapeamento do espaço de memória de um aplicativo para o bloco no disco.

A própria tabela de mapeamento não é armazenada no disco e os dados restantes no disco são inúteis após a reinicialização.

    
por thomasrutter 07.11.2016 / 06:11