Буферный кеш ввода / вывода для дискового файла в ядре Linux - PullRequest
4 голосов
/ 30 октября 2011

У меня вопрос по кешу ввода / вывода ядра для файла на диске.Как я знаю, когда вызывается write () или read (), в пространстве ядра есть буферный кеш для операции ввода-вывода на диске.Мой вопрос заключается в том, относится ли эта буферизация ввода-вывода только к файлу диска или к терминалу, FIFO, каналу и сокетам?

1 Ответ

7 голосов
/ 30 октября 2011

Это называется "кеш страниц".Он состоит из страниц, подкрепленных файлами, и «анонимных страниц», подкрепленных свопом.Это все часть подсистемы виртуальной памяти Linux (VM).

Она не используется для TTY, FIFO, каналов или сокетов.Каждый из них обеспечивает свою собственную буферизацию по своей природе;например, данные, которые вы записываете в канал, должны находиться где-то перед тем, как они будут снова считаны.Но эта буферизация не имеет ничего общего с подсистемой VM.

[update]

Обратите внимание, что эта буферизация полностью независима от буферизации пространства пользователя, предоставляемой (например) fwrite().(Я вижу, вы задавали подобный вопрос ранее, и неясно, понимаете ли вы это различие.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...