MXStat
MXStat
Введите текст для поиска
Расширенный поиск каналов
  • Вход на сайт
  • Каталог
    Каталог каналов Региональные подборки Поиск каналов
    Добавить канал
  • Рейтинги
    Рейтинг каналов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Max
Kali Linux

21 Aug, 12:21

Открыть в Max Поделиться

⚡️ Linux умеет передавать страницы памяти ядру почти без копирования

Есть малоизвестный системный вызов vmsplice().

Он позволяет отобразить пользовательские страницы памяти прямо в pipe:
struct iovec iov = {
    .iov_base = buf,
    .iov_len = len
};

vmsplice(pipefd[1], &iov, 1, SPLICE_F_GIFT);
Самая интересная часть — SPLICE_F_GIFT.

Этим флагом userspace фактически говорит ядру: эти страницы памяти можно считать переданными тебе.

Это используется в zero-copy/low-copy сценариях, где хочется минимизировать лишние копирования между userspace и kernel space.

Но есть нюанс: после такой передачи нельзя относиться к этим страницам как к обычной памяти и спокойно менять их содержимое.

Очень низкоуровневая штука, но отличный пример того, насколько далеко Linux позволяет зайти в оптимизации I/O.

735 10
Каталог
Каталог каналов Подборки каналов Поиск каналов Добавить канал
Рейтинги
Рейтинг каналов Max
Контакты
Написать в Max Написать в Telegram Написать на почту
Всякая всячина
Пользовательское соглашение Политика конфиденциальности
Наши каналы
MXStat в Telegram MXStat в Max
Наши боты
MXAuthBot MXAnalyticsBot
Made by TGStat