Среда, 21.08.2019, 17:26
Приветствую Вас, Гость
Главная » 2012 » Август » 28 » Прямой ввод-вывод
11:11
Прямой ввод-вывод

Ядро Linux, как и ядро любой другой современной операционной системы, реализует

сложный пласт возможностей кэширования, буферизации и управления

вводом-выводом между устройствами и приложением (см. раздел ?Внутреннее

устройство ядра? в конце этой главы). Когда речь идет о быстродействующих

приложениях, часто возникает желание обойти этот уровень сложности и реализовать

собственные функции управления вводом-выводом.

Однако развертывание собственной системы ввода-вывода обычно не стоит

затрачиваемых усилий, и в действительности инструменты, доступные на уровне

операционной системы, скорее всего, позволят добиться намного более высокой

производительности, чем средства уровня приложений. И все же системы

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

чтобы минимизировать присутствие в них операционной системы, как

только это возможно.

Когда вы добавляете флаг 0 DIRECT в вызов орепО, ядро минимизирует

управление вводом-выводом и ввод-вывод осуществляется напрямую из буферов

в пользовательском пространстве в устройство, обходя страничный кэш.

Все операции ввода-вывода синхронизируются и не возвращают значение до

тех пор, пока полностью не завершаются.

При использовании прямого ввода-вывода длина запроса, выравнивание буфера

и смещения файлов — все должны быть целыми числами, кратными размеру

сектора соответствующего устройства — обычно он составляет 512 байт.

До появления ядра Linux 2.6 это требование было еще строже: в версии 2.4 все

должно было быть выровнено по размеру логического блока файловой системы

(обычно 4 Кбайт). Для обеспечения совместимости приложения должны использовать

выравнивание по размеру самого большого логического блока (что

чаще всего наименее удобно).

Просмотров: 177 | Добавил: piligrim | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: