Исторически пользователи взаимодействовали с системой, используя подключенные к компьютеру через жестко запаянные линии связи терминалы. Хотя фиксированные терминалы в значительной степени остались в истории, обработка символов, осуществляемая для ввода/вывода с клавиатуры, по-прежнему важна. Наиболее обычный вид сеанса пользователя в FreeBSD использует псевдотерминал. Псевдотерминал состоит из пары устройств, называемых ведущим (master) и ведомым (slave) устройствами. Ведомое устройство предоставляет процессу интерфейс, идентичный с исторически предоставлявшимся этим устройством интерфейсом. Однако вместо того, чтобы ассоциировать с аппаратным устройством для чтения и записи символов, у ведомого устройства есть другой процесс, который управляет им через ведущую часть псевдотерминала, т. е. все, что записывается в ведущее устройство, предоставляется ведомому устройству в качестве ввода, а все, что записывается в ведомое устройство, представляется в качестве ввода ведущему устройству. Псевдотерминалы используются эмулятором терминала X-window, xterm, а также обычными программами удаленной регистрации, такими, как ssh и telnet.
Терминалы поддерживают стандартные системные операции ввода/вывода, а также совокупность специфических для терминала операций управления редактированием вводимых символов и задержек вывода. Обработка символов осуществляется дисциплиной линии связи. Дисциплина линии связи по умолчанию выбирается, когда терминал используется для интерактивной регистрации. Дисциплина линии связи работает в каноническом режиме; ввод обрабатывается с предоставлением стандартных функций, ориентированных на редактирование строк, и представляется процессу построчно.
Экранные редакторы и программы, взаимодействующие с другими компьютерами, обычно работают в неканоническом режиме (обычно называемом также непосредственным (raw mode) или посимвольным (character-at-a-time mode) режимом). В данном режиме ввод передается читающему процессу немедленно и без интерпретации. Обработка специальных символов отключена, стирания или другой обработки строки не осуществляется, и программе, читающей с терминала, передаются все символы.
Терминал можно отконфигурировать тысячами комбинаций между этими двумя крайностями. Например, экранный редактор, которому нужно получать прерывания пользователя асинхронно, мог бы включить специальные символы, генерирующие сигналы, и включить управление потоком вывода, но в остальном работать в неканоническом режиме. Все другие символы передавались бы процессу без интерпретации.
На выводе обработчик терминала предоставляет простые службы форматирования, включая следующее.
Преобразование символа перевода строки в последовательность из двух символов перевода каретки и перевода строки.
· Расширение табуляций.
· Отображение отраженных неграфических ASCII-символов в виде последовательности двух символов в форме «ЛС» (т. е. ASCII-символа вставки, за которым следует ASCII-символ, значение которого является смещением от ASCII-символа «@»).
Каждую из этих служб форматирования процесс может индивидуально отменить посредством управляющих запросов.
- 15/05/2010 20:27 - Файловое хранилище
- 15/05/2010 02:17 - Иерархия файлов
- 14/05/2010 11:31 - Файловые системы
- 14/05/2010 02:47 - Интерфейс устройств
- 13/05/2010 20:26 - Поддержка нескольких файловых систем