Todos nós usamos arquivos ou arquivos todos os dias, e todos nós o usamos também pastas ou diretórios, seja nos sistemas de arquivos do PC de mesa, em laptops, dispositivos móveis, etc. Portanto, neste artigo explicarei tudo o que você precisa saber sobre isso, para que você possa entender o que são informações e como elas são armazenadas em memória de.
O que é um sistema de arquivos?
Un Sistema de arquivo Sistema de Arquivos (SF) é um método e estrutura de dados que o sistema operacional usa para controlar como as informações são armazenadas e recuperadas. Sem um sistema de arquivos, os dados armazenados em um meio de armazenamento seriam uma única entidade de dados, sem como distinguir onde um conjunto de dados termina e o próximo começa, ou onde qualquer conjunto de dados está localizado quando precisa ser recuperado. Isso seria o que chamamos de dados brutos.
Ao formatar uma unidade de armazenamento usando NTFS, FAT, ext4, btrfs, HFS+, etc., você está, na verdade, criando um sistema de arquivos para gerenciar os dados nessa unidade. Em outras palavras, o que chamamos de formatos são, na verdade, FS.
Ao separar os dados em blocos e nomear cada bloco, lOs dados podem ser facilmente isolados e identificadosPara tornar tudo isso possível, um sistema de arquivos consiste em duas ou três camadas. Às vezes, essas camadas são explicitamente separadas e, outras vezes, as funções são combinadas. As camadas das quais estamos falando são:
- Sistema de arquivos lógico: é responsável pela interação com o aplicativo do usuário. Ele fornece uma API para operações de arquivo, como Abrir, Fechar, Ler, etc.e encaminha a operação solicitada para a camada abaixo para processamento. O sistema de arquivos lógico gerencia entradas da tabela de arquivos abertos e descritores de arquivo por processo. Essa camada fornece acesso a arquivos, operações de diretório, segurança e proteção.
- Sistema de arquivos virtual: Esta interface permite suporte a múltiplas instâncias simultâneas de sistemas de arquivos físicos. Esta camada é opcional e nem sempre está presente.
- Sistema de arquivos físicos: Lida com a operação física do dispositivo de armazenamento. Processa os blocos físicos que estão sendo lidos ou gravados. Cuida do buffer, do gerenciamento de memória e é responsável pelo posicionamento físico dos blocos em locais específicos no meio de armazenamento. O sistema de arquivos físico interage com os drivers de dispositivos de hardware de armazenamento ou com o canal para direcionar o dispositivo de armazenamento.
Recursos do FS
Cada sistema de arquivos existente tem suas limitações e Características que você deve saber, como:
- Gestão ou alocação de espaço: Os sistemas de arquivos alocam espaço granularmente, geralmente entre várias unidades físicas do dispositivo. Eles são responsáveis por organizar arquivos e diretórios e monitorar quais áreas da mídia pertencem a quais arquivos e quais não são utilizadas.
- Fragmentação: Isso ocorre quando o mesmo arquivo é armazenado em diferentes partes da unidade de armazenamento, o que significa que as partes individuais do arquivo não são contíguas. À medida que os arquivos são criados, modificados e excluídos, isso pode resultar em áreas de espaço usado e não utilizado de tamanhos variados. Além disso, isso afeta alguns sistemas operacionais (por exemplo, FAT e NTFS da Microsoft), tornando a leitura dos arquivos mais lenta.
- Nomes de arquivos: Os sistemas de arquivos gerenciam restrições de comprimento, diferenciação de maiúsculas e minúsculas e o uso de caracteres especiais em nomes de arquivos.
- Diretórios: Eles geralmente têm diretórios para organizar arquivos em coleções separadas. Podem ser planos ou hierárquicos. Discutirei isso com mais detalhes mais tarde, pois é disso que se trata...
- Metadados: Ele possui informações de metadados associadas, que incluem detalhes como comprimento de dados, registros de data e hora, permissões de acesso e atributos de arquivo.
- Utilidades e acesso: Eles são usados para inicializar, modificar e excluir instâncias do sistema de arquivos, bem como para criar, renomear e excluir diretórios e arquivos, criptografia, cotas, migração, conversão, backup, etc.
- Integridade e gerenciamento de falhas: O FS deve manter a integridade das estruturas do sistema de arquivos no armazenamento secundário ou em unidades externas, mesmo em caso de falhas do sistema operacional ou falta de energia.
- Dados do usuário: deve permitir o gerenciamento de dados do usuário, incluindo armazenamento, recuperação e atualização de dados.
- Vários sistemas de arquivos: É possível ter vários sistemas de arquivos em um único sistema.
- Limitações de projeto: Os sistemas de arquivos têm limitações funcionais que definem a capacidade máxima de armazenamento dentro desse sistema, o tamanho máximo dos arquivos, o número de arquivos, etc.
O que é uma partição?
Uma partição Uma partição é uma seção lógica ou subdivisão de um dispositivo de armazenamento de dados, como um HDD, SSD, pen drive, etc. Essa partição atende a diversos propósitos, permitindo melhor organização e gerenciamento dos dados armazenados. Por exemplo, cada partição pode ser usada para uma finalidade específica, vários sistemas operacionais podem ser instalados nela, etc.
É importante notar que o criação, exclusão e redimensionamento Alterações na partição podem levar à perda de dados, por isso é importante executar essas operações com cautela e fazer backup dos dados críticos antes de fazer grandes alterações na estrutura da partição.
Por outro lado, em resumo, você também deve entender que existem vários tipos de partições fundamental no sistema MBR (as possibilidades são expandidas no GPT, com até 128 partições possíveis na mesma unidade, embora este seja outro tópico…):
- Partição primária: Cada unidade de armazenamento pode ter até quatro partições primárias. Essas são as partições principais nas quais os sistemas operacionais são instalados e onde os dados residem. Uma das partições primárias pode ser designada como partição ativa ou de inicialização, a partir da qual o sistema operacional é inicializado.
- Partição Estendida: Uma partição estendida é uma partição primária especial usada para criar partições lógicas adicionais dentro dela. Ela não contém dados diretamente, mas atua como um contêiner para partições lógicas. Você pode ter várias partições lógicas dentro de uma partição estendida. Isso permite superar a limitação de quatro partições primárias em um disco rígido.
- Partição Lógica: Elas são criadas dentro de uma partição estendida. Não são usadas para inicializar o sistema operacional e geralmente são usadas para organizar dados ou arquivos. Você pode ter várias partições lógicas dentro de uma partição estendida, o que facilita a organização dos dados.
O que é tabela de partição?
La tabela de partição É uma estrutura de dados localizada no início de um disco rígido e contém informações sobre como o disco é dividido em partições. Normalmente, é armazenada no setor mestre de inicialização (MBR) em sistemas baseados em BIOS ou na GPT (Tabela de Partição GUID) em sistemas mais modernos baseados em UEFI. A tabela de partição inclui detalhes como o tamanho de cada partição, seu tipo (por exemplo, NTFS, FAT32, ext4, etc.) e sua localização no meio de armazenamento.
Portanto, a relação entre a tabela de partição e o sistema de arquivos reside no fato de que a tabela de partição indica onde cada partição começa e termina no disco físico. Cada partição é formatada com um sistema de arquivos específico. Quando uma partição é acessada para ler ou gravar arquivos, o sistema operacional usa as informações da tabela de partições para localizar e entender como o sistema de arquivos está estruturado naquela partição específica.
Tipos de sistemas de arquivos
Dentre os diferentes sistemas de arquivos, destacam-se os seguintes tipos:
- Sistemas de arquivos de disco: Esses sistemas aproveitam a capacidade da mídia de armazenamento em disco de acessar dados de forma aleatória e rápida. Eles permitem que vários usuários ou processos acessem os dados no disco, independentemente de sua localização sequencial. Exemplos incluem FAT, exFAT, NTFS, Reiser FS, HFS, HFS+, HPFS, APFS, UFS, ext2, ext3, ext4, XFS, btrfs, VMFS, ZFS, ReiserFS, NSS e ScoutFS. Além destes, os seguintes também podem ser considerados:
- Discos ópticos: formatos comuns como ISO 9660 e Universal Disk Format (UDF) usados em CD, DVD e Blu-ray.
- Sistemas de arquivos Flash: Esses sistemas são projetados especificamente para dispositivos de memória flash e levam em consideração suas características e restrições. Recomenda-se o uso de sistemas de arquivos projetados para dispositivos flash em vez de sistemas de disco adaptados. Alguns exemplos são JFFS, JFFS2, YAFFS, UBIFS, LogFS e F2FS.
- Sistemas de arquivo de fita magnética: Esses sistemas gerenciam o armazenamento em fitas, que têm tempos de acesso aleatório mais longos do que os discos. Eles diferem no gerenciamento de diretórios e enfatizam a necessidade de evitar movimentações lineares frequentes em fitas. Um exemplo seria o LTFS da IBM.
- Sistemas de arquivos de banco de dados: Sistemas de arquivos baseados em banco de dados, onde os arquivos são identificados por características como tipo, autor ou metadados. Exemplos incluem IBM DB2, entre outros.
- Sistemas de arquivos transacionais: Esses sistemas garantem a atomicidade e o isolamento das operações em um arquivo. Exemplos incluem o NTFS no Microsoft Windows e outros sistemas de arquivos transacionais protótipos para UNIX/Linux, como LFS, ext3, etc.
- Sistemas de arquivos de rede: Sistemas de arquivos de rede que permitem acesso a arquivos em servidores remotos por meio de protocolos como NFS, AFS, SMB, FTP e WebDAV. Ou seja, são projetados para computação distribuída.
- Sistemas de arquivos compartilhados: Esses sistemas permitem que vários servidores acessem com segurança o mesmo subsistema de disco. Exemplos incluem GFS2, GPFS, SFS, CXFS, StorNext e ScoutFS.
- Sistemas de arquivos especiais: Eles são um tanto específicos e não possuem elementos de arquivo propriamente ditos, mas podem ser acessados via APIs. Por exemplo, definimos o Sistema de Arquivos do Dispositivo como devfs, usado no Linux, etc. Por outro lado, temos outros especiais, como configfs, sysfs e procfs, também conhecidos no mundo Linux.
- Sistema de arquivo mínimo / Armazenamento de fita cassete de áudio: Fitas cassete eram usadas como sistemas de armazenamento de dados para alimentar alguns modelos de microcomputadores da época, como o Commodore PET.
- Sistemas de arquivos planos (Sistema de arquivos planos): Esses sistemas não possuem subdiretórios e armazenam todas as entradas de diretório em um único diretório principal. Exemplos desses sistemas de arquivos são o usado no sistema CP/M e o Sistema de Arquivos Macintosh para os Macs clássicos da Apple.
Tecnologias FS

Cada sistema de arquivos tem suas particularidades e eles suportam tecnologias diferentes. Alguns dos mais importantes são:
- Autocura: Refere-se à capacidade de um sistema de arquivos de detectar e corrigir automaticamente erros e problemas que possam surgir no sistema de armazenamento. Esses erros podem incluir setores defeituosos em um disco rígido ou outros tipos de corrupção de dados. Quando um erro é detectado, o sistema de arquivos pode tentar recuperar os dados afetados restaurando a partir de backups ou reparando os dados corrompidos. Isso ajuda a manter a integridade dos dados armazenados no sistema de arquivos.
- Compressão: É um recurso que permite reduzir o tamanho de arquivos e dados armazenados no sistema de arquivos. A compactação de dados pode economizar espaço em disco e acelerar as transferências de arquivos. Quando a compactação está ativada, o sistema de arquivos compacta automaticamente os arquivos gravados e os descompacta quando são lidos. Isso pode ser útil em sistemas de armazenamento com recursos limitados, embora possa tornar o acesso mais lento.
- Criptografia: É uma técnica usada para proteger a confidencialidade dos dados armazenados no sistema de arquivos. Os dados são criptografados antes de serem gravados no disco e descriptografados quando lidos. A criptografia garante que os dados sejam ilegíveis para qualquer pessoa sem a chave de descriptografia apropriada. Isso é essencial para proteger a privacidade e a segurança de dados confidenciais. Assim como a compactação, também pode tornar o acesso mais lento.
- Registro no diário (registro de transações): É um recurso que mantém um registro de todas as operações realizadas no sistema de arquivos, como a criação, modificação ou exclusão de arquivos. Esse registro é chamado de "diário" ou "registro de transações". Em caso de falha do sistema, como uma queda de energia inesperada, o sistema de arquivos pode usar o registro de transações para se recuperar e atingir um estado consistente. Isso evita a corrupção de dados e garante a integridade do sistema de arquivos.
- Capacidade de instantâneo: Snapshots são cópias pontuais do sistema de arquivos em um momento específico. Essas cópias são snapshots e são armazenadas juntamente com os dados atuais no sistema de arquivos. Snapshots permitem que o sistema de arquivos seja restaurado a um estado anterior caso ocorram erros ou alterações indesejadas. Isso é útil para backup, recuperação de dados e testes de alterações antes de implementá-las permanentemente no sistema.
O que é um diretório ou pasta?

Agora que sabemos como os dados são armazenados em unidades de armazenamento e as estruturas de dados necessárias, é hora de passar a explicar o que é um pasta ou diretório.
Um diretório ou pasta é um estrutura para catalogar outros arquivos dentro do sistema de arquivos, conferindo-lhe uma hierarquia ou organização mais intuitiva para o usuário ou para o sistema operacional. Para isso, ele contém referências a outros arquivos e possivelmente a outros diretórios ou pastas, neste caso chamados de subdiretórios ou subpastas.
Alguns sistemas operacionais com sistemas de arquivos hierárquicos, como o Unix, normalmente possuem um cache de diretório com os caminhos recentes armazenados em uma parte da RAM. No Unix, essa parte é conhecida como DNLC (Directory Name Lookup Cache), enquanto no Linux, é chamada de dcache. Essa parte da memória é atualizada com os caminhos acessados mais recentemente, enquanto em sistemas de arquivos de rede, é necessário um mecanismo para garantir a consistência, gerenciando entradas que foram invalidadas ou criadas por usuários.
Num sistema de arquivos hierárquico O armazenamento é semelhante a uma árvore. Os termos "pai" e "filho" são frequentemente usados para descrever a relação entre um subdiretório e o diretório no qual ele está catalogado, sendo este último o pai. O diretório de classificação mais alta em tal sistema de arquivos, que não possui seu próprio pai, é chamado de diretório raiz. Isso pode ser melhor observado em Unix ou Linux, onde você tem uma hierarquia específica e o diretório raiz é root ou /, do qual todos os outros diretórios dependem, mesmo que não estejam na mesma partição.
Um diretório virtual é um tipo de organização de arquivos que não depende da localização em uma árvore hierárquica de diretórios. Em vez disso, ele coleta resultados de uma fonte de dados, como um banco de dados ou um índice personalizado, e os apresenta visualmente no mesmo formato das visualizações de pastas.
Essas pastas ou diretórios pode ser gerenciado usando ferramentas, tanto GUI quanto CLI. Por exemplo, podemos usar comandos ou o próprio gerenciador de arquivos para criar, excluir, renomear, mover, copiar, etc. Embora alguns sistemas operacionais possam ter certas restrições quanto às permissões e ações que você pode executar em determinadas pastas...
Detalhes sobre uma pasta ou diretório em diferentes sistemas operacionais
Em cada sistema de arquivos e sistema operacional, arquivos e pastas são tratados de forma diferente:
- Raiz: Este é o ponto de onde o restante da hierarquia de pastas do sistema depende ou onde ela reside. No Windows, geralmente é C:\, enquanto no Unix/Linux, é a partição raiz ou /.
- Caminho ou rota: Este é o caminho onde uma pasta ou arquivo está localizado dentro de um arquivo de sistema. Por exemplo, no Windows, poderíamos ter C:\Arquivos de Programas\Office\Word.exe. No Unix/Linux, seria algo como /home/usuário/exemplo.c. Como podemos ver, no Windows, a barra invertida é usada, enquanto no mundo *nix, a barra tradicional é usada.
- Nome do arquivo ou nome do arquivo: Este é o nome dado a cada arquivo dentro de um sistema de arquivos específico. Cada sistema de arquivos terá suas próprias limitações quanto ao limite máximo de caracteres para um nome de arquivo. Além disso, é preciso distinguir entre o nome base e a extensão. Alguns sistemas antigos também tinham limitações quanto ao comprimento das extensões, geralmente três. É por isso que às vezes você verá .htm em vez de .html, para garantir a compatibilidade com sistemas DOS. Um exemplo de nome de arquivo pode ser example.txt, onde "example" é o nome e "txt" é a extensão, indicando, neste caso, que se trata de texto.
O caso particular do Unix/Linux
O que é o superbloco?
Un superbloco É uma estrutura de dados fundamental encontrada no início de um sistema de arquivos. O superbloco contém informações críticas sobre o próprio sistema de arquivos e é usado para gerenciar e acessar os dados armazenados nele. Cada sistema de arquivos Unix tem seu próprio superbloco, e seu formato específico pode variar dependendo do sistema de arquivos utilizado (por exemplo, ext4, XFS, UFS, etc.).
La informações armazenadas no superbloco pode incluir:
- Tamanho do sistema de arquivos: indica o tamanho total do sistema de arquivos.
- Número de inodes: Especifica o número de inodes disponíveis no sistema de arquivos. Inodes são estruturas de dados que representam arquivos e diretórios.
- Blocos livres: Registra o número de blocos de dados livres restantes no sistema de arquivos para armazenar informações.
- Ponto de montagem: indica o diretório no qual o sistema de arquivos está montado no sistema operacional.
- Identificação do sistema de arquivos: um identificador exclusivo para o sistema de arquivos que o distingue de outros sistemas de arquivos no mesmo sistema.
- Data e hora da montagem: registra quando o sistema de arquivos foi montado pela última vez.
- Contadores de inode e bloco usados: mantém registro de quantos inodes e blocos de dados estão sendo usados no sistema de arquivos.
- Soma de verificação e outros metadados de integridade: Alguns superblocos modernos podem incluir informações adicionais para verificar a integridade dos dados armazenados no sistema de arquivos.
Quando um sistema de arquivos, ou seja, uma partição formatada, é montado, o sistema operacional acessa o superbloco para obter informações vitais sobre a estrutura e o estado do sistema de arquivos. Essas informações são essenciais para ler e gravar dados no sistema de arquivos, bem como para garantir a integridade e a consistência dos dados armazenados.
Inodes e diretórios
En Unix/Linux, Tudo é um arquivo, como partições, unidades de dispositivo, etc. Isso não acontece em outros sistemas, como o Windows. No entanto, quando tudo é um arquivo, até pastas ou diretórios são considerados tipos especiais de arquivo.
Portanto, um diretório é um arquivo especial que contém nomes de arquivos (e subdiretórios) e números de inode para arquivos no mesmo sistema de arquivos ou nomes de links simbólicos para arquivos ou diretórios no mesmo sistema de arquivos ou em sistemas de arquivos diferentes. No caso de links físicos, o inode registra quantas entradas de diretório estão listadas nele e exclui blocos de arquivo quando a contagem de links chega a zero. Isso é diferente no caso de um link simbólico ou link simbólico. A exclusão de um link simbólico não afeta o arquivo de destino. No entanto, se um arquivo com links simbólicos para ele for excluído, os links se tornarão inutilizáveis.
Em sistemas de arquivos Unix/Linux, um arquivo pode ter vários nomes, com uma entrada de diretório para cada nome no mesmo diretório ou em diretórios diferentes, todos apontando para a mesma estrutura de inode que mantém a lista de blocos de disco onde os dados são armazenados.
Para entender melhor tudo isso, é importante lembrar o que é um inode (nó de índice). É uma estrutura de dados fundamental em sistemas de arquivos *nix. Representa e armazena informações essenciais em um arquivo ou diretório dentro do sistema de arquivos. Portanto, tanto uma pasta quanto um arquivo serão vistos como um inode pelo sistema.
Para que isso seja possível, cada inode aponta para o próximo informação:
- Número do inode: um identificador exclusivo para cada arquivo ou diretório.
- Tipo de arquivo: Indica se o inode se refere a um arquivo regular (f), um diretório (d), um link simbólico (l) ou outro tipo de arquivo.
- Tamanho: o tamanho atual do arquivo em bytes.
- Permissões e proprietário: Informações sobre quem tem permissão para acessar (ler, escrever, executar) e modificar o arquivo, bem como o proprietário do arquivo (usuário ou root). O proprietário pode até ser um usuário inexistente, mas pode ser um dispositivo, etc.
- Data e hora de criação/modificação: Registra quando o inode foi criado pela primeira vez e quando foi modificado pela última vez. Outros metadados ou permissões estendidas também podem ser incluídos.
- Número de links: Indica quantos nomes de arquivo ou diretório estão associados a este inode. Os diretórios têm pelo menos dois links: um para si mesmos e um para o diretório pai.
- Ponteiros para blocos de dados: Contém referências a blocos de dados na unidade de armazenamento que armazenam o conteúdo real do arquivo. Esses blocos podem ser endereços diretos, indiretos ou duplamente indiretos, dependendo da implementação específica do sistema de arquivos e do tamanho do arquivo.
Os inodes são cruciais para o funcionamento do sistema de arquivos, pois permitem que o sistema operacional acompanhe a localização física e as informações associadas a cada arquivo e diretório. Quando um arquivo ou diretório é acessado, o sistema operacional consulta o número do inode correspondente para encontrar a localização dos dados e outras informações relacionadas a esse arquivo.