Как флаги O_SYNC и O_DIRECT открыты ( 2) разные / похожие?

Использование и эффекты флагов O_SYNC и O_DIRECT очень сбивают с толку и, похоже, несколько различаются между платформами. Из справочной страницы Linux (см. Пример здесь ) O_DIRECT обеспечивает синхронный ввод-вывод, минимизирует эффекты кэширования и требует, чтобы вы самостоятельно выполняли выравнивание размера блока. O_SYNC просто гарантирует синхронный ввод-вывод. Хотя оба гарантируют запись данных в кэш жесткого диска, Я считаю, что операции прямого ввода-вывода должны быть быстрее, чем обычные синхронные операции ввода-вывода, поскольку они обходят кеш страницы (хотя на странице руководства FreeBSD для open (2) указано, что кеш обходится при использовании O_SYNC. См. здесь ).

В чем именно разница между флагами O_DIRECT и O_SYNC? Некоторые реализации предлагают использовать O_SYNC | O_DIRECT. Почему?

48
задан tshepang 31 January 2014 в 04:35
поделиться