Link físico

entrada de diretório que associa um nome a um arquivo

Em computação , um link físico é uma entrada de diretório que associa um nome a um arquivo em um sistema de arquivos . Todos os sistemas de arquivos baseados em diretório devem ter pelo menos um link físico fornecendo o nome original para cada arquivo. O termo "link físico" geralmente é usado apenas em sistemas de arquivos que permitem mais de um link físico para o mesmo arquivo.

A criação de um link físico tem o efeito de dar a um arquivo vários nomes (por exemplo, nomes diferentes em diretórios diferentes), os quais se conectam independentemente aos mesmos dados no disco, nenhum dos quais depende de nenhum dos outros.[1] Isso causa um efeito de alias : por exemplo, se o arquivo é aberto por qualquer um de seus nomes e alterações são feitas em seu conteúdo, essas alterações também estarão visíveis quando o arquivo for aberto por um nome alternativo. Por outro lado, uma ligação simbólica para um arquivo não é um link direto para os dados em si, mas é um arquivo curto que contém o texto de um nome de arquivo ou um local que dá acesso direto a outro nome de arquivo dentro de algum diretório. O nome contido ou referido pelo link flexível pode ser um link físico ou outro link flexível.

Cada diretório é também um arquivo, apenas especial porque contém uma lista de nomes de arquivos mantidos pelo sistema de arquivos. Como os próprios diretórios são arquivos, vários links físicos para diretórios são possíveis, o que poderia criar loops dentro da estrutura dos diretórios, em vez de uma estrutura de ramificação como uma árvore . Por esse motivo, a criação de links para diretórios é às vezes proibida.

Uso editar

Em sistemas operacionais compatíveis total e parcialmente com POSIX, como todos os sistemas semelhantes a Unix, links físicos adicionais para arquivos existentes são criados com a chamada de sistema link(), ou os utilitários de linha de comando ln e link . O comando stat pode revelar quantos links físicos apontam para um determinado arquivo. A contagem de links também está incluída na saída de ls -l .

O processo de desvinculação dissocia um nome dos dados no volume sem destruir os dados associados. Os dados ainda estão acessíveis, desde que pelo menos um link que aponte para ele ainda exista. Quando o último link é removido, o espaço é considerado livre.[2]

Um processo chamado undeleting permite a recriação de links para dados que não estão mais associados a um nome. No entanto, esse processo não está disponível em todos os sistemas e nem sempre é confiável. Quando um arquivo é excluído, ele é adicionado a um mapa de espaço livre para reutilização. Se uma parte do espaço de arquivo excluído for reivindicada por novos dados, a exclusão não será bem-sucedida, porque alguns ou todos os dados anteriores terão sido substituídos e poderão resultar em ligações cruzadas com os novos dados e levar à corrupção do sistema de arquivos . Além disso, os arquivos excluídos em unidades de estado sólido podem ser apagados a qualquer momento pelo dispositivo de armazenamento para recuperação como espaço livre.

Contador de links editar

A maioria dos sistemas de arquivos que suportam links físicos usam a contagem de referência . Um valor inteiro é armazenado com cada seção de dados físicos. Esse inteiro representa o número total de links físicos que foram criados para apontar para os dados. Quando um novo link é criado, esse valor é aumentado em um. Quando um link é removido, o valor é diminuído em um. Se a contagem de links se tornar zero, o sistema operacional geralmente desaloca automaticamente o espaço de dados do arquivo se nenhum processo tiver o arquivo aberto para acesso, mas pode optar por não fazê-lo imediatamente, seja para desempenho ou para habilitar o comando undelete .

A manutenção deste valor garante que não haverá links rígidos pendentes apontando para lugar nenhum (o que pode e acontece com links simbólicos) e que o arquivo do sistema de arquivos e o inode associado serão preservados desde que um único link físico (referência de diretório) aponte para ele ou qualquer processo mantém o arquivo associado aberto, aliviando a carga dessa contabilidade do programador ou usuário. Esse é um método simples para o sistema de arquivos rastrear o uso de uma determinada área de armazenamento, pois valores iguais a zero indicam espaço livre e valores diferentes de zero indicam o espaço usado.

Exemplo editar

 
Uma ilustração do conceito de ligação física

Na figura à direita, dois links físicos, chamados "LINK A.TXT" e "LINK B.TXT", apontam para os mesmos dados físicos.

 
Ilustração simplificada de ligação física no típico sistema de arquivos UN*X. Note que os arquivos "A" e "D" apontam para a mesma entrada de índice na tabela de inodes do sistema de arquivos, fazendo com que sua contagem de referência seja 2.

Limitações de links físico editar

Para evitar loops no sistema de arquivos, e para manter a interpretação de .. (diretório pai) consistente, muitos sistemas operacionais modernos não permitem links para diretórios.

Links físicos podem ser criados para arquivos apenas no mesmo volume. Se um link para um arquivo em um volume diferente for necessário, ele poderá ser criado com um link simbólico .

O número máximo de links físicos para um único arquivo é limitado pelo tamanho do contador de referência. Em sistemas do tipo Unix, o contador é geralmente de tamanho de palavra de máquina (32 ou 64 bits: 4.294.967.295 ou 18.446.744.073.709.551.615 links, respectivamente), embora em alguns sistemas de arquivos o número de links físicos seja limitado mais estritamente pelo formato em disco.

Referências