>[оверквотинг удален]
> 1. Если в текстовой консоле - нет.
> 2. На 1 CPU иногда и больше: shell -> xterm -> xorg.
> Ну один точно shell -> xterm. Если этот символ
> '\n'.
> или терминал в RAW.
> Собственно этот режим и предлагает kmscon:
> shell -> kmscon. Тоесть отвечая на свой вопрос ДА.
> 3. Нет.
> PS. Я имел ввиду не юзерспейс-ядерный контекст, а переключение
> задач, что накладней. Сорри, за путаницу.Вы же, по-моему, понимаете, что переключение контекстов происходит не на каждый символ, а на каждый вызов fflush из stdio.h или подобного вызова из подобной библиотеки. Никто не откючает юзерспейс-буферизацию. По-умолчанию (glibc'овые настройки буферизации для stdin/stdout/stderr), переключения контекстов происходят на каждую выведенную строчку. В сложных же случаях (например, вывод через ncurses) буферизация происходит сложнее, и эти сложности отражаются на прикладном коде, который использует ncurses.
Я отмечу, между прочим, что я давно переключился с работы в консоли на иксовые эмуляторы терминалов, потому что они меньше нагружают процессор. Когда я только познакомился с линуксом, меня пёрло сидеть именно в консоли, потому что ностальгия и синдром утёнка -- мой первый опыт общения с компьютером прошёл в текстовом режиме. Но и тем не менее я пользовался X'ами, и со временем заметил такую особенность консоли -- что она может замедлить процесс компиляции пакета, просто потому что куча вывода в консоль. Вы можете проверить это элементарно:
cd /usr/src/linux/kernel
f=`ls -S | head -n 1`
time cat "$f"
sleep 1; time cat "$f"
Когда последнюю команду вгоните, нажмите Enter пока sleep работает и тут же тыкните в Alt-f2, подождите немного и вернитесь обратно. Можете затем, интереса ради, проделать то же самое в urxvt/xterm или каким там вы эмулятором терминала пользуетесь. Выпишите все эти цифры, посмотрите на них, и подумайте, что же всё-таки больше тормозит систему: переключения контекстов или ядерная реализация виртуальной консоли.
1. В ядро никто не будет пихать кучу сложностей для того, чтобы сделать консоль быстрее: для консоли скорость важнее надёжности. Кроме того под каждую видеокарту придётся писать свой набор "сложностей".
2. Переключения процессов происходят не на каждый символ, и даже не на каждый fflush: fflush приводит лишь к сбросу юзерспейс-буфера в ядро. Будет ли ядро (получив управление через write) переключать задачи или подождёт когда в ядерном буфере накопится побольше? Принудительное переключение процессов происходит лишь тогда, когда ядерный буфер переполняется и без освобождения буфера невозможно выполнить write. Ну, либо по таймеру. Всё это вместе говорит о том, что не стоит так бездумно рассуждать о прямопропорциональной зависимости количества переключений контекстов от количества выводимых символов. Всё несколько хитрее.