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

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

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

Главная идея copy-on-write — при копировании областей данных создавать реальную копию только когда в одну из копий производится операция записи.

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

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

См. также[править | править вики-текст]

Литература[править | править вики-текст]

  • D. M. Dhamdhere. Operating Systems: A Concept-based Approach. — Tata McGraw-Hill Education, 2006. — ISBN 0070611947. — c.281-282