snapuserd Демон snapuser Тип файла: служба Предупреждение: SetUsageMessage() никогда не вызывается тип: строка по умолчанию: "" тип: строка по умолчанию: "" тип: строка по умолчанию: "" командную строку, даже если программа не определяет флаг с этим именем. ВАЖНО: флаги в этом списке, которые имеют аргументы, ДОЛЖНЫ использовать флаг=формат значения) тип: строка по умолчанию: "" Флаги из external/gflags/src/gflags_completions.cc: для вкладки завершение тип: int32 по умолчанию: 80 процесс и попытается выполнить завершение флага командной строки в стиле bash для этого значения. тип: строка по умолчанию: "" Флаги из external/gflags/src/gflags_reporting.cc: (все флаги могут иметь два тире) тип: bool по умолчанию: false (в настоящее время: true ) тип: bool по умолчанию: ложь указанную подстроку тип: строка по умолчанию: "" тип: строка по умолчанию: "" тип: bool по умолчанию: ложь тип: bool по умолчанию: ложь тип: bool по умолчанию: false Флаги из system/core/fs_mgr/libsnapshot/snapuserd_daemon.cpp: Каждый дополнительный аргумент является INIT сообщением. тип: bool по умолчанию: false тип: строка по умолчанию: "snapuserd" Комментарии Идея подхода copy-on-write заключается в том, что при чтении области данных используется общая копия, в случае изменения данных — создается новая копия. Например, при работе UNIX-функции fork() вместо реального копирования, под которое надо выделять память, ядро меняет дескрипторы страниц памяти материнского процесса, запрещая какую-либо запись в страницы данных (страницы программного кода и так запрещены для записи; хотя здесь имеются свои тонкости — но на дальнейшие рассуждения они не влияют). Затем создаётся дочерний процесс, которому копируются дескрипторы страниц памяти материнского процесса. При этом ядро помечает эти страницы как совместно используемые. Попытка записи в отображённые страницы (неважно, со стороны материнского или дочернего процесса) вызывает исключение (exception), которое передаёт управление в ядро. Ядро видит, что это обращение было законным, и создаёт копию изменяемой страницы. Таким образом удаётся снизить количество потребляемой программами физической памяти. Механизм COW достаточно сложен в реализации, особенно в многоядерных системах, а ошибки в нём могут приводить к уязвимостям, например, Уязвимость Dirty COW (Linux, 2007-октябрь 2016) Механизм получил большое распространение при создании новейших файловых систем, таких как ZFS и Btrfs. Благодаря ему создание мгновенных снимков в данных системах происходит практически мгновенно, не занимая при этом больших ресурсов носителя информации. |