Знание должно быть доступно!

Путь /ОС/Linux

Иногда при использовании Linux можно выхватить сообщение типа такого:


А вот что это значит:

Когда разработчики пишут о "супер силе коровы" и рисуют корову, они, скорее всего, шутят или просто хотят весело проиллюстрировать использование технологии Copy-on-write (COW).

"Корова" здесь — это игра слов. 

COW (copy-on-write) звучит как "cow" (корова). 

Разработчики любят такие каламбуры и часто добавляют забавные изображения или сообщения, чтобы сделать технические концепции более запоминающимися и понятными.

Так что, если видишь корову в сообщениях программы, это просто весёлый способ сказать, что используется оптимизация памяти COW

Держи уши востро и не бойся коров, они только помогают!

Copy-on-write (COW) — это крутая фича, которая экономит память и повышает производительность. Когда ты запускаешь программу, она может выделять память для своих данных. Если одна и та же память нужна двум процессам или двум частям программы, система не копирует данные сразу. Вместо этого она делит память, пока один из процессов не попытается её изменить. Тогда и происходит настоящая копия.

Короче, вот как это работает:

Запуск: Программа выделяет память и загружает данные.
Деление: Если другой процесс или поток хочет использовать эти же данные, они делят одну и ту же область памяти.
Изменение: Как только один из них пытается изменить данные, система создает копию этих данных для этого процесса. Оригинальные данные остаются без изменений для других.

Пример с листком бумаги и покупками:

  1. Изначальный листок: Представь, что ты и твой коллега кодер записали список покупок на одном листе бумаги.

Листок 1: Молоко, Хлеб, Яблоки

Копирование листка: Ваши списки пока что идентичны, и вы оба смотрите на один и тот же листок. Пока никто не вносит изменений, вы оба используете один и тот же документ.

Листок 1: Молоко, Хлеб, Яблоки Листок 2: Молоко, Хлеб, Яблоки (та же информация, доступная вам обоим)

Изменение листка: Теперь представь, что ваш коллега решил добавить в список "Сыр". В этот момент происходит следующее:

  • Система создает отдельный новый листок только для него, чтобы изменения не затрагивали ваш оригинальный список.

В коде это выглядит так:

python:

# Изначальный список покупок
purchases = ["Молоко", "Хлеб", "Яблоки"]

# Создаем копию (пока они делят один и тот же список)

После добавления "Сыр" в shared_purchases, purchases остается без изменений, а shared_purchases обновляется. Это и есть Copy-on-write: пока изменения не происходят, память делится, и только при изменении создается новая копия.

Вот и все! Таким образом, технология Copy-on-write экономит память и помогает эффективно управлять данными.

Вы и сами можете пилить такие всплывалки с помощью cowsay: