Next: 下载和安装 Up: 介绍 Previous: zhcon简介

## zhcon的基本工作原理

通常 Linux 的控制台工作在文本模式下，要想在屏幕上正确显示，汉字必须将屏幕切换到 图形模式，这可以通过调用内核 FrameBuffer 驱动程序来实现。此外，还要能正确识别系 统输出到控制台的汉字信息，并调用汉字显示模块将其输出到屏幕。一种方法是像 DOS 下 的汉字系统所做的那样：利用系统时钟中断定时监视显存地址 B800:0000 处的显示缓冲区 ，动态识别缓冲区中的字符信息。这种方法要求修改内核中断和 TTY 驱动程序，实现起来 比较困难，而且需要直接操纵硬件视频缓冲区，大大影响了系统的可移植性和稳定性。另一 种方法就是本系统所采用的基于伪终端（ Pseudo-Terminals ）的外挂式解决方案。 伪终端（ Pseudo-Terminal ）是一种类似于终端的特殊的进程间通信通道（ channel ）。 通道的一端被称为主设备（ master pseudo-terminal device ），另一端被称为从设备。> 写入主设备的数据被发送到从设备，而写入从设备的数据也可从主设备读出，对用户来说就 好像自己实际上连接到了真正的计算机终端之上。简而言之，伪终端是位于虚拟终端和最终 终端设备之间的一种承担着输入输出转换功能的设备。 伪终端诞生之初就得到了广泛应用，典型的例子是Telnet服务程序。Telnet是一种远程登录 服务，用户使用Telnet客户端程序通过网络登录到远程主机之上进行各种操作。Telnet服务 程序就是一个伪终端，一端连接到Telnet客户端程序，另一端连接到主机应用程序，客户和 应用程序之间通过伪终端进行对话。 当应用程序需要从输入设备（键盘）读入数据时，它向控制台设备（ /dev/console ）发出 系统调用 read() ，接着内核 console 驱动响应该系统请求，从输入设备驱动程序（通常 为键盘驱动 keyboard.c ）获得输入数据，并将之返回给应用程序。而当应用程序需要想控 制台输出数据时，它通过 write() 系统调用将数据发送至 console 设备，再由内核 console 驱动转发到真正的输出设备（终端、打印机．．．．．．）上去。 通过以上分析可以发现如果在应用程序从控制台设备（ /dev/console ）读入数据之前截获 键盘输入信息，并提交输入法模块处理，再将处理后得到的中英文信息发送至应用程序即可 完成中文输入。而在应用程序将输出数据写入 /dev/console 设备之前截获输出并交由汉字 识别模块处理，最终由汉字显示模块输出至屏幕，即可实现中英文输出。

Next: 下载和安装 Up: 介绍 Previous: zhcon简介