- [⬆ вверх]
- Cписок проверки знаний Linux для детей.md
- DEBTAP КАК ЗАСТАВИТЬ .DEB СЛУЖИТЬ ARCH'У.md
- GNOME
- Gpg генерация ключей.md
- MinIO.md
- Network
- Nmtui - настройка сети.md
- Punycode - как русский домен превратить в ASCII.md
- Systemd и что это такое..md
- Taskwarrior - Примеры с комментариями.md
- Wi-Fi в Linux откуда боль и как её лечить.md
- ZSH - что за shell?.md
- iptables
- megacli - утилита управления LSI MegaRAID контроллерами..md
- pacman.md
- ssh вход по ключу для root'a.md
- yazi.md
- zfs шпаргалка.md
- zpool шпаргалка.md
- Безопасность
- Взять цвет пипеткой.md
- Встроенные переменные Bash (POSIX-compatible).md
- Выкачать всё из папки по ftp.md
- Генерим себе пароли.md
- Группа wheel.md
- Добавление принтера на archLinux.md
- Зашифровать папку.md
- Звук
- Игры
- Как дверь по паролю на SSH запереть!.md
- Как определять какие кнопки жмакаются.md
- Как подключить джостик от PS3 к Linux.md
- Как раскрасить вывод echo?.md
- Как узнать какая материнка стоит?.md
- Качаем с youtub'a.md
- Конвертирование в .iso различных образов..md
- Копирование без кеширования.md
- Куда пишутся "логи неудачных попыток входа в систему"?.md
- Настройка ntp.md
- Настройка сети в ручную на arch'e.md
- Не работает звук. Что делать?.md
- Нет wifi карты на ноуте, что делать?.md
- Обновление ключей в Arch Linux.md
- Обработка видео под Linux.md
- Обучение
- Очистка кеша pacman и yay.md
- Перевод выделенного текста и показ перевода в графическом диалоговом окне KDE.md
- Перегенерить mirrors.md
- Переменные окружения (ENV).md
- Переходим с remmina на терминал.md
- Проверка дисков.md
- Работа с .qcow2.md
- Сменить имя hostname.md
- Создание пользователя.md
- Создание собственной сети внутри Docker'a.md
- Специфично для Linux переменные окружения.md
- Список пакетов для установки Arch'a.md
- Ставим Arch Linux на RAID1.md
- Ставим i3 на Arch Linux.md
- Удаление защищённых файлов.md
- Упаковка со сжатием.md
- Установка tinyproxy.md
- Установка vim на стероидах.md
- Установка видео драйверов.md
- Установка документации.md
- Установка пакетов из исходников в Arch Linux.md
- Чиним не рабочие F1-F12.md
- Что за "коровья СУПЕРСИЛА"?.md
- Что такое Linger в системе systemd.md
- Шпаргалка по всему systemd.md
- список команд для mdadm - утилиты для управления RAID-массивами.md
Иногда при использовании Linux можно выхватить сообщение типа такого:
А вот что это значит:
Когда разработчики пишут о "супер силе коровы" и рисуют корову, они, скорее всего, шутят или просто хотят весело проиллюстрировать использование технологии Copy-on-write (COW).
"Корова" здесь — это игра слов.
COW (copy-on-write) звучит как "cow" (корова).
Разработчики любят такие каламбуры и часто добавляют забавные изображения или сообщения, чтобы сделать технические концепции более запоминающимися и понятными.
Так что, если видишь корову в сообщениях программы, это просто весёлый способ сказать, что используется оптимизация памяти COW.
Держи уши востро и не бойся коров, они только помогают!
Copy-on-write (COW) — это крутая фича, которая экономит память и повышает производительность. Когда ты запускаешь программу, она может выделять память для своих данных. Если одна и та же память нужна двум процессам или двум частям программы, система не копирует данные сразу. Вместо этого она делит память, пока один из процессов не попытается её изменить. Тогда и происходит настоящая копия.
Короче, вот как это работает:
Запуск: Программа выделяет память и загружает данные.
Деление: Если другой процесс или поток хочет использовать эти же данные, они делят одну и ту же область памяти.
Изменение: Как только один из них пытается изменить данные, система создает копию этих данных для этого процесса. Оригинальные данные остаются без изменений для других.
Пример с листком бумаги и покупками:
-
Изначальный листок: Представь, что ты и твой коллега кодер записали список покупок на одном листе бумаги.
Листок 1: Молоко, Хлеб, Яблоки
Копирование листка: Ваши списки пока что идентичны, и вы оба смотрите на один и тот же листок. Пока никто не вносит изменений, вы оба используете один и тот же документ.
Листок 1: Молоко, Хлеб, Яблоки Листок 2: Молоко, Хлеб, Яблоки (та же информация, доступная вам обоим)
Изменение листка: Теперь представь, что ваш коллега решил добавить в список "Сыр". В этот момент происходит следующее:
- Система создает отдельный новый листок только для него, чтобы изменения не затрагивали ваш оригинальный список.
В коде это выглядит так:
python:
# Изначальный список покупок
purchases = ["Молоко", "Хлеб", "Яблоки"]
# Создаем копию (пока они делят один и тот же список)
После добавления "Сыр" в shared_purchases, purchases остается без изменений, а shared_purchases обновляется. Это и есть Copy-on-write: пока изменения не происходят, память делится, и только при изменении создается новая копия.
Вот и все! Таким образом, технология Copy-on-write экономит память и помогает эффективно управлять данными.
Вы и сами можете пилить такие всплывалки с помощью cowsay: