Aula 14 - Sistemas de Arquivos
Um Hardware (SSD vazio) nada mais é que um deserto de bilhões de celulas silício aptas a guardar carga estática. Sem um Software Organizador, é indomávél. O File System (Sistema de Arquivos) é esse gerenciador fornecido pelo Sistema Operacional.
🗂️ 1. O V-Node / Inode
Se no seu PC existe a pasta Docs/foto.jpg, no fundo, o Linux não rastreia o texto “foto.jpg” para pular de cluster em cluster.
O FS usa de índices numéricos ultra-rápidos: os Inodes.
graph LR A["Diretório /Docs"] -->|12345| B("Inode 12345") B --> C["Tamanho: 2MB"] B --> D["Permissões: rwxr-xr-x"] B --> E["Blocos Físicos de Dados"] E --> F["Cluster 80 no SSD"] E --> G["Cluster 89 no SSD"]
INFO
Por que o comando de Deletar (rm) um arquivo grande é quase instantâneo, mas copiar é lento? O
rmapaga apenas a entrada no Índice (Inode), fingindo pro SO que o espaço tá livre. O dado mesmo ainda tá lá magnetizado até algo escrever por cima (Por isso existem softwares de recuperação de dados!)
🛡️ 2. Journaling (A Prova contra Quedas)
Mudar um arquivo é uma transação: Apagar o velho, escrever o novo, mudar o Inode. E se faltar luz na etapa 2? A partição corromperia inteiramente para sempre (Problema antigo do FAT32).
FSs modernos (NTFS, EXT4) usam Journaling. Antes de aplicar qualquer mudança no Inode oficial, eles “anotam a intenção do que vão fazer” num Diário Oculto (Journal). Se a luz cai, ao ligar o PC, ele lê o diário oculto incompleto, reverte o estrago e devolve sua máquina salva! É a essência do conceito Atomicidade.
🚄 3. Buffers e Page Cache (Por que Linux é Rápido)
“Escrever no disco” via SysCall C++ write() ou fwrite() raramente vai pro HD!
O Linux usa de forma abusiva toda a RAM ociosa do seu computador como um gigantesco Cache File. Ele capta suas writes e diz “Gravei amigão!” mas jogou na RAM (Page Cache). Posteriormente ele realiza os envios reais para o Hardware agrupados (Flush / Sync).
Essa mágica salva a Morte do seu SSD (menos gravações simultâneas em desgaste das celulas NAND) e simula uma ilusão de lentidão zero ao usuário.
🚀 Resumo Prático
- Ao usar C/C++, chame o instrínseco
fsync()se seu App for um Banco de Dados ou Software Crítico Bancário forçando a Cache RAM descarregar a força e salvar permanentemente no silício do disco. - Nunca dependa da nomenclatura C:
/usr/foto.jpg. Leia descritores de arquivo, file-pointers e fluxos binários se for transitar redes em baixo nível.
🎯 Próximos Passos
- Acessar Slides
---
Reveja a apresentação visual desta aula.
[➔ Ver Slides da Aula](../slides/slide-14.html)
- Quiz
---
Teste seu entendimento básico com perguntas rápidas.
[➔ Responder Quiz](../quizzes/quiz-14.md)
- Exercícios
---
Prática avançada e dissertativa com consulta.
[➔ Lista de Exercícios](../exercicios/exercicio-14.md)
- Projeto
---
Laboratório prático de codificação em C/C++.
[➔ Mini Projeto](../projetos/projeto-14.md)