Есть ли у него 3 уровня буферизации или 2 уровня буферизации при использовании библиотеки stdio?

Я попытался последовать совету Бретта, но это не повлияло на мою систему. (Убунту 18.04.)

Однако следующее сработало:

sudo systemctl disable wpa_supplicant
2
12.03.2020, 18:20
1 ответ

В общем случае имеется два уровня. Буфер в пользовательском пространстве выделяется библиотекой stdio, и вызовы puts/printf/fprintf и т. д. помещают символы в этот буфер. На каком-то этапе (, например. буфер заполнен или записывается новая строка, и поток находится в режиме буферизации строки )библиотека stdio вызывает write, чтобы попросить ядро ​​записать буфер. Ядро обычно копирует буфер в буфер ядра, запускает все, что необходимо для передачи данных в место назначения и возврата. Затем пользовательское пространство может свободно использовать буфер пользовательского пространства по своему усмотрению.

Возможно (, но необычно )иметь разные реализации stdio, которые делают это по-разному. sfio имеет уровень совместимости со stdio. Были предложены различные схемы для zero copyи т. д. Дело в том, что stdioговорит вам, что такое эффект, а не как он делается.

4
28.04.2021, 23:20

Теги

Похожие вопросы