4.2. 串行设备简介

Unix 内核提供了用于访问串行硬件的设备,通常称为 tty 设备(发音如其拼写:T-T-Y)。这是 电传打字机设备 的缩写,电传打字机设备曾经是 Unix 早期终端设备的主要制造商之一。现在该术语用于任何基于字符的数据终端。在本章中,我们使用该术语专门指 Linux 设备文件,而不是物理终端。

Linux 提供了三种 tty 设备类别:串行设备、虚拟终端(您可以通过在本地控制台上按 Alt-F1 到 Alt-Fnn 依次访问所有虚拟终端)和伪终端(类似于双向管道,供 X11 等应用程序使用)。前者之所以称为 tty 设备,是因为最初的基于字符的终端通过串行电缆或电话线和调制解调器连接到 Unix 机器。后两者以 tty 设备命名,因为它们的创建是为了从程序员的角度来看行为方式相似。

SLIP 和 PPP 最常在内核中实现。内核实际上并不将 tty 设备视为您可以像以太网设备一样操作的网络设备,使用诸如 ifconfig 等命令。但是,它确实将 tty 设备视为可以绑定网络设备的地方。为此,内核会更改 tty 设备的所谓“线路规程”。SLIP 和 PPP 都是可以在 tty 设备上启用的线路规程。一般概念是,串行驱动程序根据配置的线路规程以不同的方式处理提供给它的数据。在其默认线路规程中,驱动程序只是依次传输给它的每个字符。当选择 SLIP 或 PPP 线路规程时,驱动程序会读取一个数据块,在其周围包裹一个特殊的标头,使远程端能够识别数据流中的该数据块,并传输新的数据块。现在理解这一点还不太重要;我们将在后面的章节中介绍 SLIP 和 PPP,并且无论如何这一切都会自动为您发生。