Вторник, 21.11.2017, 21:57
Приветствую Вас, Гость
Главная » 2014 » Январь » 13 » Флаг 0_SYNC
10:50
Флаг 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, так как эти вызовы можно делать реже (например,только после того, как завершаются определенные критически важные операции).


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