Философия Unix - избегать хранения данных и программ в двоичных файлах [закрыто]

Я не могу понять причину следующей философии Unix.

На веб-сайте LINFO: Важным принципом философии Unix является предотвращение хранения данных и программ в двоичных файлах в той мере, в какой это практически возможно. Скорее, они должны храниться в текстовых файлах, поскольку текст является универсальным интерфейсом между программами и людьми. Это использование текстовых выходов и входов, которые позволяют программам в Unix-подобных операционных системах работать вместе так легко и эффективно (то есть, используя трубы). Хотя текстовые файлы могут быть не такими быстрыми (или малыми), как бинарные файлы, это легко компенсируется высокими скоростями современных процессоров (и низкой стоимостью памяти и памяти).

Пожалуйста, объясните, если возможное.

-3
задан 18 January 2018 в 23:56

3 ответа

Чтобы ответить на ваш вопрос в ближайшее время, статья, которую вы цитируете, является неправильной. Философия Unix заключается в том, что все это файл, но это не означает текстовый файл. Частным примером этого могут быть сокеты. См., Например, ответ Гилла: сокет - это файл, но это не обязательно означает, что он имеет имя файла и не должен существовать на жестком диске, а данные, переданные через сокеты, необязательно являются текстовыми, но конкретными байтовыми последовательностями.

Сами трубки, в частности анонимные трубы, как в |, сами могут быть файлами без существующих на диске. Данные, передаваемые через каналы, могут быть любого типа - двоичного или текстового. Одним из примеров этого может быть сжатие сжатого архива iso-изображения в dd, чтобы записать его на диск.

Помимо прочего, также не обязательно верно, что текстовые файлы могут быть медленнее, чем двоичные файлы. Если программа, которую вы используете для чтения текстового файла, использует (правильное) преимущество системного вызова ответа [] d2] Gilles, который полностью или частично отображает файл в ОЗУ и, как вы знаете, оперативная память быстрая. Вы когда-нибудь задумывались, почему tail может быть очень быстрым при получении последних нескольких строк файла с гигабайтами? Ну, если вы запустите strace анализатор системных вызовов на tail, он покажет вам, что есть mmap() syscalls.

Скорость процессоров здесь также неактуальна, и все преимущества наличия многоядерных процессоров могут пойти в ноль, если программа, которую вы используете для чтения файла, записывается как последовательная программа (не как параллельная программа, следовательно не может использовать несколько ядер) или проблема с памятью, где ширина шины памяти / скорость памяти не может поддерживать скорость процессора.

Относительно этого:

Скорее, они должны храниться в текстовых файлах, поскольку текст является универсальным интерфейсом между программами и людьми.

Да, текст может быть удобным для общения между машиной и человеком, но в случае безопасности есть причина, по которой мы хотели бы хранить данные в зашифрованной двоичной форме, где данные злоумышленника будут выглядеть только как последовательность байтов, нечитаемый беспорядок.

4
ответ дан 22 May 2018 в 15:27

Чтобы ответить на ваш вопрос в ближайшее время, статья, которую вы цитируете, является неправильной. Философия Unix заключается в том, что все это файл, но это не означает текстовый файл. Частным примером этого могут быть сокеты. См., Например, ответ Гилла: сокет - это файл, но это не обязательно означает, что он имеет имя файла и не должен существовать на жестком диске, а данные, переданные через сокеты, необязательно являются текстовыми, но конкретными байтовыми последовательностями.

Сами трубки, в частности анонимные трубы, как в |, сами могут быть файлами без существующих на диске. Данные, передаваемые через каналы, могут быть любого типа - двоичного или текстового. Одним из примеров этого может быть сжатие сжатого архива iso-изображения в dd, чтобы записать его на диск.

Помимо прочего, также не обязательно верно, что текстовые файлы могут быть медленнее, чем двоичные файлы. Если программа, которую вы используете для чтения текстового файла, использует (правильное) преимущество системного вызова ответа [] d2] Gilles, который полностью или частично отображает файл в ОЗУ и, как вы знаете, оперативная память быстрая. Вы когда-нибудь задумывались, почему tail может быть очень быстрым при получении последних нескольких строк файла с гигабайтами? Ну, если вы запустите strace анализатор системных вызовов на tail, он покажет вам, что есть mmap() syscalls.

Скорость процессоров здесь также неактуальна, и все преимущества наличия многоядерных процессоров могут пойти в ноль, если программа, которую вы используете для чтения файла, записывается как последовательная программа (не как параллельная программа, следовательно не может использовать несколько ядер) или проблема с памятью, где ширина шины памяти / скорость памяти не может поддерживать скорость процессора.

Относительно этого:

Скорее, они должны храниться в текстовых файлах, поскольку текст является универсальным интерфейсом между программами и людьми.

Да, текст может быть удобным для общения между машиной и человеком, но в случае безопасности есть причина, по которой мы хотели бы хранить данные в зашифрованной двоичной форме, где данные злоумышленника будут выглядеть только как последовательность байтов, нечитаемый беспорядок.

4
ответ дан 17 July 2018 в 22:42

Чтобы ответить на ваш вопрос в ближайшее время, статья, которую вы цитируете, является неправильной. Философия Unix заключается в том, что все это файл, но это не означает текстовый файл. Частным примером этого могут быть сокеты. См., Например, ответ Гилла: сокет - это файл, но это не обязательно означает, что он имеет имя файла и не должен существовать на жестком диске, а данные, переданные через сокеты, необязательно являются текстовыми, но конкретными байтовыми последовательностями.

Сами трубки, в частности анонимные трубы, как в |, сами могут быть файлами без существующих на диске. Данные, передаваемые через каналы, могут быть любого типа - двоичного или текстового. Одним из примеров этого может быть сжатие сжатого архива iso-изображения в dd, чтобы записать его на диск.

Помимо прочего, также не обязательно верно, что текстовые файлы могут быть медленнее, чем двоичные файлы. Если программа, которую вы используете для чтения текстового файла, использует (правильное) преимущество системного вызова ответа [] d2] Gilles, который полностью или частично отображает файл в ОЗУ и, как вы знаете, оперативная память быстрая. Вы когда-нибудь задумывались, почему tail может быть очень быстрым при получении последних нескольких строк файла с гигабайтами? Ну, если вы запустите strace анализатор системных вызовов на tail, он покажет вам, что есть mmap() syscalls.

Скорость процессоров здесь также неактуальна, и все преимущества наличия многоядерных процессоров могут пойти в ноль, если программа, которую вы используете для чтения файла, записывается как последовательная программа (не как параллельная программа, следовательно не может использовать несколько ядер) или проблема с памятью, где ширина шины памяти / скорость памяти не может поддерживать скорость процессора.

Относительно этого:

Скорее, они должны храниться в текстовых файлах, поскольку текст является универсальным интерфейсом между программами и людьми.

Да, текст может быть удобным для общения между машиной и человеком, но в случае безопасности есть причина, по которой мы хотели бы хранить данные в зашифрованной двоичной форме, где данные злоумышленника будут выглядеть только как последовательность байтов, нечитаемый беспорядок.

4
ответ дан 24 July 2018 в 13:19

Другие вопросы по тегам:

Похожие вопросы: