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 ele não possui um sistema de arquivos, como o sistema operacional funciona com ele? Como os dados (da RAM) são gravados no disco e como são acessados ​​novamente?

Sinoosh
fonte
6
A troca não precisa de um sistema de arquivos. Não armazena arquivos.
Pilot6
3
Ele armazena páginas de RAM.
Pilot6
2
Poderia, por favor, explicar exatamente o que você está tentando fazer? Você está dizendo que tudo o que precisa é de um local para armazenar dados temporariamente?
Jake
6
"Quero saber como é possível gravar em um espaço de armazenamento sem sistema de arquivos?" - Você simplesmente escreve no espaço de armazenamento. Pense no seguinte: se um sistema de arquivos tivesse que gravar em um espaço de armazenamento, os sistemas de arquivos não poderiam existir, porque os sistemas de arquivos precisam poder gravar em um armazenamento, decidindo sem um sistema de arquivos. "de acordo com sua resposta, posso dizer que a RAM possui um sistema de arquivos pequeno e o arquivo de troca usa esse sistema de arquivos para trabalhar com páginas?" - Não. Um sistema de arquivos é para armazenar arquivos. O espaço de troca não armazena arquivos.
Jörg W Mittag
4
É bastante comum gravar um único arquivo (ala tar e dd) no armazenamento não formatado, e ainda mais comum ter sistemas de arquivos aninhados (discos virtuais, .iso, squashfs). Às vezes, jogos em disquete gravam altas pontuações em um local absoluto (fixo), e alguns aplicativos são baseados em Cilindros, Cabeças e Setor. Partições de swap ainda são partições, mas não, não há sistema de arquivos ou "mapeamento" que não seja offset e run?
Mckenzm 7/11

Respostas:

28

Swap tecnicamente não possui um sistema de arquivos específico. Todo o objetivo do sistema de arquivos é estruturar os dados de certa maneira. A partição de swap em particular não possui estrutura, mas possui um cabeçalho específico, criado pelo mkswapprograma. Em particular, isso (extraído do 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 possui um código específico associado a ela e de acordo com o TLDP :

o código para ext2 é 0x83 e a troca 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. No mesmo link do kernel.org:

Lembre-se de que os sistemas de arquivos podem ter seu próprio método de armazenamento de arquivos e disco e não é tão simples quanto a partição swap, na qual as informações podem ser gravadas diretamente no disco. Se o armazenamento de backup for uma partição, apenas um bloco do tamanho da página exigirá E / S e, como não há 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 é tão comparável com sistemas de arquivos como NTFS ou ext4

Você também perguntou

Quero saber como é possível gravar em um espaço de armazenamento sem sistema de arquivos

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

Sergiy Kolodyazhnyy
fonte
1
É bom ressaltar que, apesar de não ter um sistema de arquivos, ele possui uma estrutura básica que permite reconhecer o que é. Impede a substituição de outra partição por engano.
espectros
Eu acho que eles significam espaço em disco aqui "Eu quero saber como é possível escrever em um espaço de armazenamento sem sistema de arquivos" em vez de RAM, talvez?
Anwar #
@ Anwar, Sim, mas entendi #
Sinoosh
O tar pode ser usado para gravar vários arquivos como um fluxo RAW em um dispositivo não formatado, como uma unidade flash. Caso contrário, um único arquivo pode ser gravado (mas não nomeado) e você precisará reverter o processo para gravá-lo novamente. Isso geralmente é feito com ISOs para mídia ótica, mas o resultado é um sistema de arquivos no local.
Mckenzm 7/11
1
Acordado. Essencialmente, pode ser descrito como uma área mapeada. Não é uma extensão da memória real, mas um espaço de trabalho para armazenar blocos que podem ser sobrepostos novamente sob demanda.
Mckenzm #
14

O espaço de troca é usado pelo kernel para armazenar temporariamente as páginas da memória do sistema (RAM) à medida que elas ficam cheias. O kernel usa suas próprias tabelas internas para "lembrar" exatamente onde, no disco de troca, 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 é em 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á enviá-la (e outros conteúdos) para o espaço de troca. Veja aqui para obter instruções sobre como configurar um.

Jake
fonte
13

O espaço de troca é dividido em blocos do mesmo tamanho das páginas de memória (geralmente 4 kB), e um registro do mapeamento dessas páginas na 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 de memória física real. Um aplicativo recebe um grande espaço de endereço de memória que ele pode usar o máximo ou o mínimo possível. À medida que mais desse espaço de endereço de memória é realmente usado, a memória física é mapeada para esse aplicativo para servir como 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 tabela de mapeamento em si não é armazenada no disco e os dados restantes no disco são inúteis após uma reinicialização.

thomasrutter
fonte