Interested Article - Копирование при записи

Механизм копирования при записи ( англ. Copy-on-write, COW ) используется для оптимизации многих процессов, происходящих в операционной системе , таких как, например, работа с оперативной памятью или файлами на диске.

Идея подхода copy-on-write заключается в том, что при чтении области данных используется общая копия, в случае изменения данных — создается новая копия.

Например, при работе UNIX -функции fork() вместо реального копирования, под которое надо выделять память, ядро меняет дескрипторы страниц памяти материнского процесса , запрещая какую-либо запись в страницы данных (страницы программного кода и так запрещены для записи; хотя здесь имеются свои тонкости — но на дальнейшие рассуждения они не влияют). Затем создаётся дочерний процесс, которому копируются дескрипторы страниц памяти материнского процесса. При этом ядро помечает эти страницы как совместно используемые.

Попытка записи в отображённые страницы (неважно, со стороны материнского или дочернего процесса) вызывает исключение (exception), которое передаёт управление в ядро. Ядро видит, что это обращение было законным, и создаёт копию изменяемой страницы. Таким образом удаётся снизить количество потребляемой программами физической памяти. Механизм COW достаточно сложен в реализации, особенно в многоядерных системах, а ошибки в нём могут приводить к уязвимостям, например, Уязвимость Dirty COW (Linux, 2007-октябрь 2016)

Механизм получил большое распространение при создании новейших файловых систем , таких как ZFS и Btrfs . Благодаря ему создание мгновенных снимков в данных системах происходит практически мгновенно, не занимая при этом больших ресурсов носителя информации .

См. также

Литература

  • D. M. Dhamdhere. . — Tata McGraw-Hill Education, 2006. — ISBN 0070611947 . — c.281-282
Источник —

Same as Копирование при записи