Главная » 2016 » Март » 28 » Синхронизированный ввод-вывод
12:11
Синхронизированный ввод-вывод
Хотя синхронизация ввода-вывода — это очень важная тема, не следует боятьсявопросов, связанных с отложенной записью. Буферизация записи обеспечиваетогромный выигрыш в производительности, и, следовательно, в любой операционнойсистеме, находящейся хотя бы на полпути к получению звания ?современная?, реализуется отложенная запись с использованием буферов. Тем неменее иногда в приложениях возникает необходимость контролировать момент,когда данные оказываются на диске. Для этого ядро Linux предоставляетнесколько параметров, позволяющих обменивать производительность на синхронностьопераций.fsync() и fdatasync()Самый простой способ гарантировать, что данные достигнут диска, — использоватьсистемный вызов fsync(), определенный в POSIX.lb следующим образом:finclude <unistd.h>int fsync (int fd);Вызов fsyncO гарантирует, что все грязные данные, соответствующие файлу,который указан при помощи дескриптора файла fd, записываются обратнона диск. Файловый дескриптор fd должен быть открыт для записи. Этот вызовобеспечивает запись на диск и данных, и метаданных, например временных метоксоздания и других атрибутов, содержащихся в inode. Он не возвращает значениедо тех пор, пока жесткий диск не сообщает, что данные и метаданныебыли успешно записаны на диск.Если запись кэшируется на диске, то fsyncO не может знать, попадают лиданные на диск физически. Жесткий диск может сообщить, что данные былизаписаны, пока они в действительности еще остаются в кэше записи диска.
Просмотров: 393 | Добавил: admin | Рейтинг: 0.0/0
Всего комментариев: 0
avatar