Filosofia Unix - evite armazenar dados e programas em arquivos binários [fechados]

-3

Não consigo entender o motivo da seguinte filosofia Unix.

A partir do Site LINFO : Um princípio importante da filosofia Unix é evitar o armazenamento de dados e programas em ficheiros binários para o extensão prática. Em vez disso, eles devem ser armazenados em arquivos de texto simples, porque o texto é uma interface universal entre programas e seres humanos. É o uso de saídas e entradas de texto que permite que os programas em sistemas operacionais semelhantes ao Unix trabalhem juntos de forma tão fácil e eficiente (por exemplo, através do uso de tubos). Embora os arquivos de texto possam não ser tão rápidos (ou tão pequenos) quanto os arquivos binários, isso é facilmente compensado pelas altas velocidades dos processadores modernos (e pelo baixo custo de memória e armazenamento).

Por favor, explique, se possível.

    
por Nikhil 18.01.2018 / 20:56

1 resposta

4

Para responder à sua pergunta em breve, o artigo que você cita é meio errado. A filosofia do Unix é que tudo é um arquivo, mas não significa arquivo texto . Um exemplo particular disso seria soquetes. Veja por exemplo a resposta de Gilles aqui: socket é um arquivo, mas isso não significa necessariamente que ele tem nome de arquivo e não tem que existir no disco rígido, e os dados passados via sockets não são necessariamente texto, mas sequências de bytes particulares.

Os próprios pipes, em particular os pipes anônimos como em | , podem ser arquivos sem existir no disco. Os dados transmitidos por meio de pipes podem ser de qualquer tipo - binário ou texto. Um exemplo disso seria o arquivamento comprimido da imagem iso no comando dd para gravá-lo em disco.

Entre outras coisas, também não é necessariamente verdade que os arquivos de texto podem ser mais lentos que os arquivos binários. Se o programa que você usa para ler o arquivo de texto aproveita (corretamente) a chamada de sistema mmap () , que mapeia o arquivo completamente ou parcialmente para a RAM, e como você sabe, a RAM é rápida. Já se perguntou por que tail pode ser muito rápido em obter as últimas linhas de um arquivo com gigabytes grandes? Bem, se você executar o analisador de chamadas do sistema strace em tail , ele mostrará que há mmap() syscalls acontecendo.

A velocidade dos processadores também é um pouco irrelevante aqui e todos os benefícios de ter processadores multi-core podem se esgotar se o programa usado para ler um arquivo for escrito como programa sequencial (não como programa paralelo, portanto não qualquer uso de múltiplos núcleos) ou há problema de parede de memória onde a largura do barramento de memória / velocidade da memória pode ' t suporta a velocidade da CPU.

Sobre isso:

% bl0ck_qu0te%

Sim, o texto pode ser conveniente para comunicação entre uma máquina e um ser humano, mas em caso de segurança há uma razão pela qual gostaríamos de armazenar dados em formato binário criptografado onde os dados de um atacante ficariam apenas como seqüência de bytes. bagunça ilegível.

    
por Sergiy Kolodyazhnyy 18.01.2018 / 22:16