UNIX буферизованный и небуферизованный ввод / вывод - PullRequest
2 голосов
/ 07 декабря 2011

В чем разница между небуферизованным вводом / выводом и стандартным вводом / выводом?Я знаю, что с помощью read (), write (), close () небуферизованный ввод-вывод.Printf и получает буферизованный IO.Я также знаю, что лучше использовать буферизованный ввод-вывод для больших транзакций.Я просто не знаю причину почему.И что означает термин «буферизованный» в этом контексте?

1 Ответ

5 голосов
/ 07 декабря 2011

Небуферизованный ввод / вывод просто означает, что при чтении или записи не используется никакой буфер. Обычно, когда мы используем системные вызовы, такие как read () и write (), они читают и записывают тип char по типу char и могут вызвать значительное снижение производительности.Так что для больших дат предпочтительнее чтение / запись на высоком уровне или просто буферизованный ввод / вывод. Буферизация просто означает, что мы имеем дело не с одним символом, а с блоком символов, поэтому иногда он также известен как блок ввода / вывода. Обычнов Unix, когда мы используем высокоуровневые функции чтения / записи, они извлекают / хранят данные с заданным размером блока и помещают их в буферный кеш, и из этого буферного кеша эти функции ввода / вывода получают желаемый объем данных.

...