Среда, 21.08.2019, 17:12
Приветствую Вас, Гость
Главная » 2012 » Август » 28 » Флаг 0_SYNC, проститутки
11:12
Флаг 0_SYNC, проститутки


Системному вызову орепО можно передавать флаг 0 SYNC, указывая, что весь

ввод-вывод для данного файла должен быть синхронизированньїм:



int fd.

td = open (file, 0_WR0NLY | 0_SYNC):

it (fd == -1)

perror ("e;open"e;),

return -1.

Запросы на чтение всегда синхронизируются. Если бы это было не так, то

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

бы под вопросом. Однако, как обсуждалось чуть выше, вызовы writeO

обычно не синхронизируются. Нет никакой связи между возвращением вызовом

какого-то значения и фиксацией данных на диске. Флаг 0 SYNC принудительно

создает это взаимоотношение между действиями, гарантируя, что все

вызовы writeO будут выполнять синхронизированный ввод-вывод.

Можно представлять себе это так: 0 SYNC заставляет систему неявно выполнять

вызов fsync() после каждой операции w r ite () до того, как вызов на запись

1 Что ж, здесь скрывается та же ловушка: жесткий диск может солгать и сказать ядру, что

содержимое буферов уже на диске, тогда как оно все еще остается в дисковом кэше.

возвращает значение. В действительности семантика именно такова, хотя

в ядре Linux работа 0 SYNC реализуется немного более эффективно.

При использовании флага 0 SYNC время пользователя (user time) и время ядра

(kernel time) (время, проведенное в пользовательском пространстве и пространстве

ядра соответственно) для операций записи немного увеличивается.

Более того, в зависимости от размера записываемого файла 0 SYNC может вызывать

увеличение общего затрачиваемого времени на один-два порядка, так как

к общему времени работы добавляется еще и время ожидания ввода-вывода

(I/O wait time) для процесса (время, которое тратится на ожидание завершения

операции ввода-вывода). Издержки увеличиваются очень сильно, поэтому к

синхронизированному вводу-выводу следует прибегать только после того, как

опробованы все возможные альтернативы.

Обычно, когда требуется гарантия, что операции записи будут успешно завершаться

фиксацией данных на диске, в приложениях применяются вызовы

fsyncO и fdatasyncO. При этом издержки увеличиваются меньше, чем при использовании

флага 0 SYNC, так как эти вызовы можно делать реже (например,

только после того, как завершаются определенные критически важные операции).


Вас интересует информация проститутки? Блог проститутки Киева будет лучшим вариантом.
Просмотров: 392 | Добавил: piligrim | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: