Нуль-копирование

Нуль-копирование

«Нуль-копирование»[источник не указан 34 дня] (англ. zero copy) описывает операции, в ходе которых процессор не выполняет задачу копирования данных из одной области памяти в другую.

Содержание

Обзор

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

Способы создания ПО с поддержкой нуль-копирования включают в себя использование копирование на основе технологии DMA и отображение в памяти (memory mapping) через блок управления памятью (MMU). Эти особенности требуют специфической аппаратной поддержки и обычно включают в себя определенные требования к выделению памяти.

Протоколы нуль-копирования очень важны для высокоскоростных сетей, в которых емкость сетевого соединения приближается к или превосходит возможности обработки процессором. В этом случае процессор проводит почти все время копируя передаваемые данные, и таким образом становится узким местом («бутылочным горлышком»), устанавливающим ограничение скорости соединения ниже его возможностей. Приближенный подсчет, используемый в индустрии, говорит, что примерно один тактовый цикл процессора требуется для обработки одного бита входящих данных. Например, процессор с тактовой частотой в 1 ГГц может обрабатывать сетевое соединение с пропускной способностью в 1 Гбит/сек при обычном копировании данных, но этот же самый процессор «захлебнется», работая с 10-гигабитным соединением. Именно поэтому ПО с поддержкой нуль-копирования становится крайне необходимым. Сетевые соединения свыше 1 Гбит/сек и, следовательно, и сетевое ПО с поддержкой нуль-копирования, на данный момент ограничены использованием лишь в суперкомпьютерных кластерах, крупных индустриальных (особенно государственных, научных и коммерческих) центрах данных (ЦОД) и так далее. Однако, по мере развития информационных технологий и по мере того, как сети с пропускной способностью в 1 Гбит/сек, 10 Гбит/сек и даже 100 Гбит/сек становятся все более распространенными, решения с нуль-копированием также начинают пользоваться все большим спросом, так как пропускная способность сетей растет быстрее производительности процессоров.

Протоколы нуль-копирования обладают некоторыми первоначальными накладными расходами, так что отказ от программного ввода-вывода (PIO) приемлем только для больших пакетов данных.

В основе протоколов RDMA (en:Remote Direct Memory Access) лежат методики нуль-копирования.

Некоторые операционные системы (включая Linux) поддерживают нуль-копирование файлов за счет специфических API-функций, как например, sendfile и sendfile64, splice, vmsplice.

Реализации и примеры использования

Корпорация Oracle Corporation разработала и внедрила в свои продукты протокол RDS, в значительной мере опирающийся на технологию нуль-копирования.

См. также

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Полезное


Смотреть что такое "Нуль-копирование" в других словарях:

  • Нуль-терминированная строка — или C строка (от названия языка Си) или ASCIZ строка (от названия директивы ассемблера .asciz) способ представления строк в языках программирования, при котором вместо введения специального строкового типа используется массив символов, а концом… …   Википедия

  • Red Hat Enterprise Linux — Рабочий …   Википедия

  • Brainfuck — Класс языка: эзотерический Появился в: 1993 Автор(ы): Урбан Мюллер Диалекты: BrainSub, Brainfork, Brainloller, COW, Ook, Pbrain, Smallfuck, Spoon, LOLCODE, Whitespace,DoubleFuck, Feckfeck Испытал влияние …   Википедия

  • Брэйнфак — Brainfuck (англ. brain мозг + эзотерических языков программирования, придуман Урбаном Мюллером (нем. Urban Müller) в 1993 году для забавы. Язык имеет восемь команд, каждая из которых записывается одним символом. Исходный код программы на… …   Википедия

  • C++ — У этого термина существуют и другие значения, см. C. См. также: Си (язык программирования) C++ Семантика: мультипарадигмальный: объектно ориентированное, обобщённое, процедурное, метапрограммирование Тип исполнения: компилируемый Появился в …   Википедия

  • Калькулятор — У этого термина существуют и другие значения, см. Калькулятор (значения). Современный инженерный калькулятор Калькулятор …   Википедия

  • Зор-своп алгоритм — В программировании, обмен при помощи исключающего ИЛИ (англ. Xor swap algorithm, кзор своп алгоритм)  это алгоритм, который использует операцию исключающего ИЛИ (XOR) для обмена различных значений переменных, имеющих один и тот же тип данных без… …   Википедия

  • С++ — См. также: Си (язык программирования) C++ Семантика: мультипарадигмальный: объектно ориентированное, обобщённое, процедурное, метапрограммирование Тип исполнения: компилируемый Появился в: 1985 г. Автор(ы): Бьёрн Страуструп …   Википедия

  • strlcpy — и strlcat  нестандартные функции, созданные в качестве замены часто используемых некорректным образом аналогов стандартной библиотеки языка программирования Си для копирования содержимого нуль терминированной строки в буфер ограниченного… …   Википедия

  • Ссылка (C++) — В языке программирования C++ ссылка это простой ссылочный тип, менее мощный, но более безопасный, чем указатель, унаследованый от языка Си. Название C++ ссылка может приводить к путанице, так как в информатике под ссылкой понимается обобщенный… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»