Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lections_v2.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
11 Мб
Скачать
☆

Терминальный ввод-вывод.

Функции терминального ввода-вывода используются для управления терминалами, взаимодействия между компьютерами, соединенными кабелями, для работы с модемами, принтерами и т. п. Система позволяет работать с широким спектром устройств.

Терминальный ввод-вывод имеет два режима: канонический — ввод с терминала обрабатывается построчно, но вводится не более одной строки, неканонический — вводимые символы в строки не собираются (посимвольный ввод). Канонический режим устанавливается по умолчанию.

В стандарте POSIX-1 установлены два режима, которые считаются устаревшими.

1) Прозрачный — raw

2) посимвольный — cbreak

TTY — Teletype or terminal type.

В Линукс все устройства, которые могут действовать в качестве терминалов, объединены под этим названием. При этом tty0 ~tty7 — виртуальные консоли.

Pty# - псевдотерминалы, например, окно xterm

ttyS# - последовательные интерфейсы.

Устройство tty, как правило, может переключаться между различными дисциплинами линий связи tty. Это означает, что в ядре каждый системный вызов read-write или I/O control вызывает процедуру, специфичную для этой линии связи. Конкретнее можно сказать, что реализация дисциплины линии связи tty вставляется между драйвером устройства tty, который является низкоуровневым драйвером и отвечает за действительный ввод-вывод, и процессом пользователя, который желает получить доступ к устройству tty.

SLIP — протокол интернета для последовательного канала.

Serial line internet protocol.

Ppp — протокол 2х точечного соединения. Point to point protocol.

Реализация ррр состоит из 4-ех частей:

1) Общий драйвер ррр;

2, 3) По одной дисциплине линии связи tty для синхронных (2) и асинхронных (3) устройств;

4) демон pppd.

Вопросы, связанные с терминальным вводом-выводом, относятся к разряду наиболее запутанных, независимо от ОС. Все характеристики терминала, которые можно узнать или изменить, находятся в структуре struct termios.

struct termios

{

tcflag_t c_iflag; // флаги режима ввода. Управляют вводом символов

tcflag_t c_oflag; // флаги режима вывода

tcflag_t c_cflag; // флаги режима управления

tcfag_t c_lflag; // флаги локального режима

cc_t c_cc[NCCS]; //

}

Флаги режима ввода управляют вводом символов. В частности, очистку восьмого бита, проверка бита четности и т. д.

Флаги режима вывода определяют обработку выходного потока данных. В частности, может быть замена символов конца строк, например, это необходимо, когда передача информации осуществляется между компьютерами под управлением разных ОС. В этом случае необходим заменить NL на CR/NL (cr — возврат каретки).

Флаги режима управления определяют параметры последовательного порта. RS-232 — последовательный порт. Например, можно указать, что необходимо игнорировать строки состояния модема, установить количество стоповых битов и т. п.

Флаги локального режима управляют интерфейсом между драйвером и пользователем, например, включение и выключение эха вывода, разрешение и запрет генерации сигналов терминалом, переход в неканонический режим и т. п.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]