Что такое copy on write

«Что такое copy on write» — вопрос из категории Linux, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Copy on write (CoW) — это оптимизация, при которой копирование данных происходит только при изменении. До модификации объекты ссылаются на одни и те же данные.

Пример с slices в Go:

a := []int{1, 2, 3}
b := a  // копирования нет, оба слайса ссылаются на один массив
b[0] = 42  // теперь происходит копирование (если capacity позволяет)
fmt.Println(a) // [1 2 3]
fmt.Println(b) // [42 2 3]

Основные преимущества:

  • Экономия памяти при неизменяемых данных
  • Ускорение операций копирования
  • Позволяет реализовать "ленивое" копирование

В Go явной поддержки CoW нет, но похожее поведение можно наблюдать у слайсов и строк (которые иммутабельны).