Кольцевой буфер — это структура данных фиксированной длины, где за последним элементом следует первый. В задачах компьютерного зрения такие буферы применяются для хранения последовательностей матриц, подаваемых в нейросети. Стандартные методы реализации на списках или плоских массивах часто требуют лишнего копирования данных или перевыделения памяти.

Техника «магического» кольцевого буфера использует возможности виртуальной памяти для оптимизации. Разработчик отображает два последовательных виртуальных блока на один и тот же физический сегмент. Это позволяет указателю при выходе за границы первого блока автоматически попадать в начало физической памяти, исключая необходимость в модульной арифметике.

Главное ограничение метода заключается в том, что размер буфера должен быть кратен размеру страницы памяти, который на архитектуре x86-64 обычно составляет 4 КБ. Поскольку управление виртуальной памятью зависит от ОС, для Linux и Windows требуются разные реализации, использующие системные API для привязки памяти к файлам подкачки или анонимным файлам.

В Linux для создания буфера применяются функции memfd_create и mmap. В Windows аналогичный результат достигается через создание секции в файле подкачки с использованием функций VirtualAlloc2 и MapViewOfFile3. Такой подход позволяет работать с данными как с единым непрерывным массивом без затрат на перемещение элементов в памяти.