⚡️ Linux умеет передавать страницы памяти ядру почти без копирования — 21 августа 2026 г. в 09:21:39.751
⚡️ 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.

