Главная » 2016 » Март » 28 » Ограничения размера для вызова write()
12:11
Ограничения размера для вызова write()
Если значение count превышает значение SSIZE_MAX, то результат вызова writeOне определен.Если выполнить write() со значением count, равным нулю, то вызов мгновенновернет значение 0.Поведение вызова write()Когда write() возвращает значение, это означает, что ядро скопировало данныеиз предоставленного буфера в буфер ядра, но нет никакой гарантии, что данныебыли записаны в указанное целевое местоположение. Действительно, этот вызоввозвращает значение слишком быстро, чтобы так действительно происходило.Несоответствие производительности процессоров и жестких дисков делалобы такое поведение мучительно очевидным.Вместо этого, когда приложение из пользовательского пространства выполняетсистемный вызов writeO, ядро Linux делает несколько проверок, а затемпросто копирует данные в буфер. Позже в фоновом режиме ядро собирает все«грязные» буферы, сортирует их оптимальным способом и записывает их содержимоена диск (этот процесс называется отложенной записью (writeback)).Благодаря этому создается впечатление, что вызовы writeO работают чрезвы-чайно быстро, возвращая значение практически мгновенно, а ядро может откладыватьфактическую запись на диск на периоды бездействия и потом сразу жеобрабатывать большие пакеты запросов.Отложенная запись не меняет семантику POSIX. Например, если выполняетсявызов на считывание только что записанных данных, еще находящихся вбуфере, то этот запрос удовлетворяется из буфера, а не возвращает «устаревшие» данные с диска. Такое поведение действительно повышает производительность,так как данные считываются из кэша в памяти без обращения к диску.Запросы на чтение и запись чередуются, как положено, и результаты всегдавозвращаются ожидаемые — конечно же, если в системе не происходит аварийныйсбой до того, как данные попадают на диск! Даже если приложение будетсчитать, что запись произошла успешно, в такой ситуации данные никогда неокажутся в нужном месте на диске.
Просмотров: 541 | Добавил: admin | Рейтинг: 0.0/0
Всего комментариев: 0
avatar