版权归原作者所有,如有侵权,请联系我们

[科普中国]-字符控制块

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

简介

控制块是控制数据块行为的,不同的控制块包含一些不同的控制参数2。字符控制块是一种数据控制块。字符控制块是指系统为每一个在系统中进行字符有关操作的程序设置一个有关字符使用情况的控制信息块。字符控制块在计算机系统中有很多地方有应用,例如在缓冲区中和字符设备中都有用到字符控制块,主要用于控制字符读取,防止字符缓冲区溢出。字符控制块的功能一般都是通过程序实现,即设备驱动程序。

字符字符是指计算机中使用的字母、数字、字和符号,包括:1、2、3、A、B、C、~!·#¥%……—*()——+等等。在 ASCII 编码中,一个英文字母字符存储需要1个字节。在 GB 2312 编码或 GBK 编码中,一个汉字字符存储需要2个字节。在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3到4个字节。在UTF-16编码中,一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)。在UTF-32编码中,世界上任何字符的存储都需要4个字节。

字符设备主要指工作速度比较低的机电类设备,如字符终端、打印机等。 这类设备通常以字符或字作为与 处理机之间传送数据的基本单位, 在设备控制器中一般只设置存储 一个或少数几个字符的缓冲寄存 器。对于输入设备,缓冲寄存器用 来作为CPU读取数据的源寄存 器;而对于输出设备,缓冲寄存器 用来作为CPU传送数据的目的寄 存器。这种设备通常只在启动、停 止或已经准备好进行数据传送或 接收时要求CPU服务,而在主存 中也只需要指定少数空间进行打 包或差错控制。

当一台字符型设备在硬件上与主机相连之后,必须为这台设备创建字符特别文件。操作系统的mknod命令被用来建立设备特别文件。例如为一台终端创建名为/dev/tty03的命令如下(设主设备号为2,次设备为13,字符型类型标记c):

mknod /dev/tty03 c 2 13

此后,open, close, read, write等系统调用适用于设备文件/dev/tty03。设备与驱动程序的通信方式依赖于硬件接口。当设备上的数据传输完成时,硬件通过总线发出中断信号导致系统执行一个中断处理程序。中断处理程序与设备驱动程序协同工作完成数据传输的底层控制。

缓冲区溢出缓冲区是由多个以不同速度或优先级 运行的硬件或程序进程共享的数据区。缓冲区的存在使它们之间的相互等待变少了。缓冲区溢出(buffer overflow),是针对程序设计缺陷,向程序输入缓冲区写入使之溢出的内容(通常是超过缓冲区能保存的最大数据量的数据),从而破坏程序运行、趁著中断之际并获取程序乃至系统的控制权。缓冲区溢出原指当某个数据超过了处理程序限制的范围时,程序出现的异常操作。造成此现象的原因有:存在缺陷的程序设计。尤其是C语言,不像其他一些高级语言会自动进行数组或者指针的边界检查,增加溢出风险。C语言中的C标准库还具有一些非常危险的操作函数,使用不当也为溢出创造条件。

设备驱动程序一个能使计算机连接并控制 某一外部设备的程序。每个操作系 统中都包含有为键盘、显示器等设 置的一套标准设备驱动程序;但是 如果你要外加专门的外设,如光碟 驱动器或网卡,则可能需要加入适 当的设备驱动程序,以便让操作系 统知道如何管理该设备。在DOS 操作系统中,CONFIG.SYS文件 中的DEVICE或DEVICEHIGH 命令用来装载设备驱动程序。在不同的操作系统中所采用的设备处理方式并不完全相同。根据在设备处理时是否设置进程,以及设置什么样的进程而把设备处理方式分成以下三类:

(1) 为每一类设备设置一个进程,专门用于执行这类设备的 I/O 操作。比如,为所有的交互式终端设置一个交互式终端进程;又如,为同一类型的打印机设置一个打印进程。

(2) 在整个系统中设置一个 I/O 进程,专门用于执行系统中所有各类设备的 I/O 操作。也可以设置一个输入进程和一个输出进程,分别处理系统中所有各类设备的输入或输出操作。

(3) 不设置专门的设备处理进程,而只为各类设备设置相应的设备处理程序(模块),供用户进程或系统进程调用。