Три вопроса о дочерних оболочках :Продолжительность жизни и создание

Btrfs calculates a crc32c checksum for each file.

Это неверно. Обе системы с открытым -исходным файлом контрольной суммы -(ZFS и BTRFS )вычисляют контрольную сумму для каждого логического блока (неназванный исходный код Awe используется правильно ). Это контрольная сумма данных на диске -.

Если в файловой -системе включено сжатие (, что становится все более распространенным параметром ), эта контрольная сумма представляет собой данные после сжатия. Это означает, что даже если файл помещается в один логический блок, возможно (и все более вероятно )что данные контрольной суммы файловой -системы будут для вас бесполезны.

Если вам нужна контрольная сумма файла, лучший способ получить ее — вычислить ее.

0
10.09.2020, 09:02
1 ответ

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

  1. Когда вы запускаете grepиз оболочки, оболочка обычно хочет восстановить управление после этого, поэтому она разветвляется, запускает grepв ответвлении и ожидает завершения разветвленного процесса. Так что да, оболочка в форке недолго -жила, но «создание» «активов» оболочки в форке совсем не стоило больших затрат на большинстве современных операционных систем (благодаря копированию -на -механизмы записи ).

  2. То же самое относится и к ls -lиз интерактивной оболочки. Однако в некоторых случаях оболочка заменяет себя вместо разветвления; см. Почему bash не создает подоболочку для простых команд? для получения подробной информации.

  3. Запуск сценария оболочки создаст один процесс для оболочки, выполняющей сценарий, и по одному процессу для каждой внешней команды в оболочке и, возможно, под-оболочки для определенных конструкций оболочки.

Создание процессов дешево, но execсоздание еще меньше; это одна из причин, по которой люди часто заботятся об ограничении количества используемых процессов. Две другие причины, которые, возможно, более важны, заключаются в том, что запуск программы включает в себя затраты на запуск этой программы и часто включает повторяющиеся части общего процесса (, сравните find... -exec grepи grep -rв системах, в которых есть последний, или несколько вызовов grep, sedи т. д. по сравнению с одним sedилиawk).Как только вы начинаете сталкиваться с проблемами скорости в сценариях оболочки из-за того, что слишком полагаетесь на внешние команды, это часто является признаком того, что пришло время использовать более мощную среду программирования, которая позволит обрабатывать больше данных без участия других программ.

1
18.03.2021, 23:06

Теги

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