Por que o sistema de arquivos do Linux foi projetado como uma única árvore de diretórios?

Por que o sistema de arquivos do Linux foi projetado como uma única árvore de diretórios?

Alguém pode explicar por que o Linux foi projetado como uma única árvore de diretórios?

Enquanto no Windows podemos ter várias unidades como C:\e D:\, há uma única raiz no Unix. Algum motivo específico aí?

Responder1

Como o sistema de arquivos Unix é muitos anos anterior ao Windows, pode-se reformular a pergunta como "por que o Windows usa um designador separado para cada dispositivo?".

Um sistema de arquivos hierárquico tem a vantagem de que qualquer arquivo ou diretório pode ser encontrado como filho do diretório raiz. Se você precisar mover dados para um novo dispositivo ou dispositivo de rede, a localização no sistema de arquivos pode permanecer a mesma e o aplicativo não verá a diferença.

Suponha que você tenha um sistema em que o sistema operacional seja estático e haja um aplicativo com altos requisitos de E/S. Você pode montar /usr somente leitura e colocar /opt (se o aplicativo estiver lá) em unidades SSD. A hierarquia do sistema de arquivos não muda. No Windows isso é muito mais difícil, principalmente com aplicativos que insistem em ficar em C:\Arquivos de Programas\

Responder2

Isto se deve em parte por razões históricas e em parte porque faz mais sentido desta forma.

Multics

Multicsfoi o primeiro sistema operacional a introduzir osistema de arquivos hierárquicocomo conhecemos hoje, com diretórios que podem conter diretórios. Citando“Um sistema de arquivos de uso geral para armazenamento secundário”por RC Daley e PG Neumann:

A seção 2 do artigo apresenta a estrutura hierárquica dos arquivos, o que permite uma utilização flexível do sistema. Esta estrutura contém capacidades suficientes para garantir versatilidade. (…)

Para facilitar a compreensão, a estrutura do arquivo pode ser considerada como uma árvore de arquivos, alguns dos quais são diretórios. Isto é, com uma exceção, cada arquivo (por exemplo, cada diretório) é apontado diretamente por exatamente uma ramificação em exatamente um diretório. A exceção é o diretório raiz, ou root, na raiz da árvore. Embora não seja explicitamente apontada em nenhum diretório, a raiz é apontada implicitamente por uma ramificação fictícia que é conhecida pelo sistema de arquivos. (…)

A qualquer momento, considera-se que um usuário está operando em algum diretório, denominado diretório de trabalho. Ele pode acessar um arquivo efetivamente apontado por uma entrada em seu diretório de trabalho simplesmente especificando o nome da entrada. Mais de um usuário pode ter o mesmo diretório de trabalho ao mesmo tempo.

Como em muitos outros aspectos, a Multics buscou flexibilidade. Os usuários podem trabalhar em uma subárvore do sistema de arquivos e ignorar o resto, e ainda se beneficiar dos diretórios para organizar seus arquivos. Diretórios também foram usados ​​para controle de acesso - o atributo READ permitia aos usuários listar os arquivos em um diretório, e o atributo EXECUTE permitia aos usuários acessar arquivos naquele diretório (este, como muitos outros recursos, existia no Unix).

O Multics também seguiu o princípio de ter um único pool de armazenamento. O artigo não se debruça sobre este aspecto. Um único pool de armazenamento combinava bem com o hardware da época: não havia dispositivos de armazenamento removíveis, pelo menos nenhum que interessasse aos usuários. O Multics tinha um pool de armazenamento de backup separado, mas isso era transparente para os usuários.

Unix

O Unix se inspirou muito no Multics, mas buscou a simplicidade, enquanto o Multics buscou a flexibilidade.

Um único sistema de arquivos hierárquico se adequava bem ao Unix. Assim como no Multics, os pools de armazenamento geralmente não eram relevantes para os usuários. No entanto, havia dispositivos removíveis, e o Unix os expôs aos usuários, através domounteumountcomandos (reservados ao “superusuário”, ou seja, o administrador). Em“O sistema de compartilhamento de tempo UNIX”, Dennis Ritchie e Ken Thompson explicam:

Embora a raiz do sistema de arquivos seja sempre armazenada no mesmo dispositivo, não é necessário que toda a hierarquia do sistema de arquivos resida nesse dispositivo. Há uma solicitação de montagem do sistema com dois argumentos: o nome de um arquivo comum existente e o nome de um arquivo especial cujo volume de armazenamento associado (por exemplo, um pacote de discos) deve ter a estrutura de um sistema de arquivos independente contendo sua própria hierarquia de diretórios. . O efeito da montagem é fazer com que as referências ao arquivo até então comum se refiram ao diretório raiz do sistema de arquivos no volume removível. Na verdade, mount substitui uma folha da árvore hierárquica (o arquivo comum) por uma subárvore totalmente nova (a hierarquia armazenada no volume removível). Após a montagem, praticamente não há distinção entre os arquivos do volume removível e os do sistema de arquivos permanente. Em nossa instalação, por exemplo, o diretório raiz reside em uma pequena partição de uma de nossas unidades de disco, enquanto a outra unidade, que contém os arquivos do usuário, é montada pela sequência de inicialização do sistema. Um sistema de arquivos montável é gerado escrevendo em seu arquivo especial correspondente. Um programa utilitário está disponível para criar um sistema de arquivos vazio ou pode simplesmente copiar um sistema de arquivos existente.

O sistema de arquivos hierárquico também tem a vantagem de concentrar a complexidade do gerenciamento de múltiplos dispositivos de armazenamento no kernel. Isso significava que o kernel era mais complexo, mas como resultado todos os aplicativos eram mais simples. Como o kernel precisa se preocupar com os dispositivos de hardware, mas a maioria dos aplicativos não, esse é um design mais natural.

janelas

O Windows traça sua ancestralidade até duas linhagens:VMS, um sistema operacional originalmente projetado para oVAXminicomputador eCP/M, um sistema operacional projetado para os primeiros microcomputadores Intel.

O VMS tinha um sistema de arquivos hierárquico distribuído,Arquivos-11. Em Arquivos-11, ocaminho completo para um arquivocontém um nome de nó, uma designação de conta nesse nó, um nome de dispositivo, um caminho de árvore de diretórios, um nome de arquivo, um tipo de arquivo e um número de versão. VMS teve um poderosonome lógicorecurso que permite definir atalhos para diretórios específicos, de forma que os usuários raramente tenham que se preocupar com a localização “real” de um diretório.

O CP/M foi projetado para computadores com 64kB de RAM e unidade de disquete, então optou pela simplicidade. Não havia diretórios, mas uma referência de arquivo poderia incluir uma indicação de unidade ( A:ou B:).

QuandoMS DOS2.0 introduziu diretórios, o fez com uma sintaxe compatível com o MS-DOS 1 que seguia o CP/M. Portanto, os caminhos foram enraizados em uma unidade com um nome de uma única letra. (Além disso, o caractere de barra /foi usado no VMS e no CP/M para iniciar as opções de linha de comando, portanto, um caractere diferente teve que ser usado como separador de diretório. É por isso que o DOS e o Windows posterior usam barra invertida, embora alguns componentes internos também suportem barra ).

O Windows manteve a compatibilidade com o DOS e a abordagem VMS, mantendo a noção de letras de unidade mesmo quando elas se tornaram menos relevantes. Hoje, nos bastidores, o Windows usaUNCcaminhos (originalmente desenvolvidopela Microsoft e IBM paraSO/2, de ascendência relacionada). Embora isso seja reservado para usuários avançados (provavelmente devido ao peso do histórico), o Windows permite a montagem atravéspontos de nova análise.

Responder3

Não há preocupações de segurança em ter uma única árvore de diretórios.

Os caras que projetaram o Unix tinham muita experiência com sistemas operacionais que exigiam que os usuários soubessem qual dispositivo físico continha um determinado recurso. Como parte do propósito de um sistema operacional é criar uma máquina abstrata sobre hardware real, eles acharam muito mais simples dispensar o endereçamento de recursos por sua localização física e decidiram colocar tudo em uma única árvore de nomes.

Esta é apenas uma parte da genialidade por trás doprojeto do Unix.

Responder4

Tanto o *nix quanto o Windows montam suas unidades. No Windows eles são montados automaticamente em pontos de montagem que, por padrão, estão em ordem alfabética crescente. Esses padrões são:

  • A:e B:=> disquetes
  • C:=> primeira partição do primeiro disco rígido
  • D:=> próxima partição ou próximo disco rígido ou unidade de CD/DVD se nenhuma outra partição estiver presente.

Cada um desses pontos de montagem é um diretório.

No *nix, os pontos de montagem são decididos pelo usuário. Por exemplo, tenho uma partição montada como /e outra como /home. Então, /homeé uma unidade separada, seria o equivalente, digamos, E:no Windows.

Em ambos os casos, Windows e *nix, os pontos de montagem são diretórios separados. A única diferença é que no *nix, esses diretórios separados são subdiretórios de /, C:enquanto no Windows, cada ponto de montagem é montado diretamente sob /, My Computerdigamos.

Do ponto de vista do usuário, a principal vantagem é que as montagens são totalmente transparentes. Não preciso saber se o diretório /homeestá em uma partição separada. Posso apenas usá-lo como um diretório normal. Em vez disso, no DOS, eu teria que chamá-lo explicitamente pelo nome do ponto de montagem, digamosE:\home

As unidades externas são montadas praticamente da mesma maneira em ambos os sistemas. Digamos D:para Windows e /mnt/cdrompara Linux. Cada um deles é um diretório, realmente não vejo a diferença. Quando você coloca um CDROM em sua unidade no Windows, o disco é montado exatamente D:como no Linux.

informação relacionada