O título da pergunta pergunta: Por que precisamos montar no Linux?
Uma forma de interpretar esta questão: Por que precisamos emitir comandos mount
explícitos para disponibilizar sistemas de arquivos no Linux?
A resposta: nós não.
Você não precisa montar sistemas de arquivos explicitamente, pode fazer com que isso seja feito automaticamente, e as distribuições Linux já fazem isso para a maioria dos dispositivos, assim como o Windows e o Macs fazem.
Então, isso provavelmente não é o que você queria perguntar.
Uma segunda interpretação: Por que às vezes precisamos emitir comandos mount
explícitos para disponibilizar sistemas de arquivos no Linux? Por que não fazer o sistema operacional sempre faz isso por nós, e esconde isso do usuário?
Esta é a pergunta que estou lendo no texto da pergunta, quando você pergunta:
Por que não pular a montagem completamente e fazer o seguinte
ls /dev/cdrom
e ter o conteúdo do CD-ROM listado?
Presumivelmente, você quer dizer: por que não apenas ter esse comando fazer o que
ls /media/cdrom
faz agora?
Bem, nesse caso, /dev/cdrom
seria uma árvore de diretórios, não um arquivo de dispositivo. Então, sua verdadeira questão parece ser: por que um arquivo de dispositivo em primeiro lugar?
Gostaria de adicionar uma resposta às que já foram dadas.
Por que os usuários conseguem ver os arquivos do dispositivo?
Sempre que você usar um CD-ROM ou qualquer outro dispositivo que armazene arquivos, um software é usado para interpretar o que estiver em seu CD-ROM como uma árvore de diretórios de arquivos. Ele é invocado sempre que você usa ls
ou qualquer outro tipo de comando ou aplicativo que acessa os arquivos em seu CD-ROM. Esse software é o driver do sistema de arquivos para o sistema de arquivos específico usado para gravar os arquivos no CD-ROM. Sempre que você lista, lê ou grava arquivos em um sistema de arquivos, o trabalho desse software é garantir que as operações correspondentes de leitura e gravação de baixo nível sejam executadas no dispositivo em questão. Sempre que você mount
um sistema de arquivos, você está dizendo ao sistema qual driver do sistema de arquivos deve ser usado para o dispositivo. Se você fizer isso explicitamente com um comando mount
, ou deixá-lo para o sistema operacional ser feito automaticamente, ele precisará ser feito e, é claro, o software do driver do sistema de arquivos precisará estar lá em primeiro lugar.
Como um driver de sistema de arquivos faz seu trabalho? A resposta: é ler e gravar no arquivo do dispositivo. Por quê? A resposta, como você já declarou: o Unix foi projetado dessa maneira. No Unix, os arquivos de dispositivos são a abstração comum de baixo nível para dispositivos. O software realmente específico do dispositivo (o driver de dispositivo) para um dispositivo específico deve implementar a abertura, fechamento, leitura e gravação no dispositivo como operações no arquivo do dispositivo. Dessa forma, software de nível superior (como um driver de sistema de arquivos) não precisa saber tanto sobre o funcionamento interno de dispositivos individuais. Os drivers de dispositivo de baixo nível e os drivers do sistema de arquivos podem ser gravados separadamente, por pessoas diferentes, desde que eles concordem com uma maneira comum de interface entre si, e é para isso que servem os arquivos do dispositivo.
Portanto, os drivers do sistema de arquivos precisam dos arquivos do dispositivo.
Mas por que nós, usuários comuns, vemos os arquivos do dispositivo? A resposta é que o Unix foi projetado para ser usado por programadores de sistemas operacionais. Ele foi projetado para permitir que seus usuários gravem drivers de dispositivo e drivers de sistema de arquivos. Isso é, de fato, como eles são escritos.
O mesmo vale para o Linux: você pode escrever seu próprio driver de sistema de arquivos (ou driver de dispositivo), instalá-lo e depois usá-lo. Isso torna o Linux (ou qualquer outra variante do Unix) facilmente extensível (e é de fato o motivo pelo qual o Linux foi iniciado): quando uma nova peça de hardware é lançada no mercado ou uma maneira nova e mais inteligente de implementar um sistema de arquivos , alguém pode escrever o código para apoiá-lo, fazê-lo funcionar e contribuir para o Linux.
Arquivos de dispositivos facilitam isso.