嵌入式系统中配置了大量的外围设备,即I/O设备。依据工作方式不同可以分为字符设备

题库2022-08-02  55

问题 嵌入式系统中配置了大量的外围设备,即I/O设备。依据工作方式不同可以分为字符设备、块设备和网络设备。下面描述不正确的是 ___。A.键盘、显示器、打印机、扫描仪、鼠标等都属于字符设备B.块设备是以块为单位进行传输的,如磁盘、磁带和光盘等C.网络设备主要用于与远程设备进行通信D.网络设备的传输速度和字符设备相当

选项 A.键盘、显示器、打印机、扫描仪、鼠标等都属于字符设备
B.块设备是以块为单位进行传输的,如磁盘、磁带和光盘等
C.网络设备主要用于与远程设备进行通信
D.网络设备的传输速度和字符设备相当

答案 D

解析 本题考查嵌入式系统中设备分类方面的基础知识。嵌入式系统中配置了大量的外围设备,即I/O设备。依据工作方式不同可以分为字符设备、块设备和网络设备。

字符(char)设备是能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实现这种特性。字符设备驱动程序通常至少要实现open、close、read和write的系统调用。字符终端(/dev/console)和串口(/dev/ttyS0以及类似设备)就是两个字符设备,它们能很好的说明“流”这种抽象概念。

字符设备可以通过节点来访问,比如/dev/tty1和/dev/lp0等。这些设备文件和普通文件之间的唯一差别是:对普通文件的访问可以前后移动访问位置,而大多数字符设备是一个只能顺序访问的数据通道。然而,也存在具有数据区特性的字符设备,访问它们时可前后移动访问位置。

例如framebuffer就是这样的一个设备,可以用mmap或lseek访问抓取的整个图像。与字符设备类似,块设备也是通过/dev目录下的文件系统节点来访问。块设备(例如磁盘)上能够容纳文件系统。在大多数的Unix系统中,进行I/O操作时块设备每次只能传输一个或多个完整的块,而每块包含512字节(或2的更高次幂字节的数据)。Linux可以让应用像字符设备一样地读写块设备,允许一次传递任意多字节的数据。

因此,块设备和字符设备的区别仅仅在于内核内部管理数据的方式,也就是内核及驱动程序之间的软件接口,而这些不同对用户来讲是透明的。在内核中,和字符驱动程序相比,块驱动程序具有完全不同的接口。网络接口是一个能够和其他主机交换数据的设备。接口通常是一个硬件设备,但也可能是个纯软件设备,比如回环(loopback)接口。网络接口由内核中的网络子系统驱动,负责发送和接收数据包。

许多网络连接(尤其是使用TCP协议的连接)是面向流的,但网络设备却围绕数据包的传送和接收而设计。网络驱动程序不需要知道各个连接的相关信息,它只要处理数据包即可。由于不是面向流的设备,因此将网络接口映射到文件系统中的节点(比如/dev/tty1)比较困难。

Unix访问网络接口的方法仍然是给它们分配一个唯一的名字(比如eth0),但这个名字在文件系统中不存在对应的节点。内核和网络设备驱动程序间的通信,完全不同于内核和字符以及块驱动程序之间的通信,内核调用一套和数据包相关的函数而不是fead、write等。
转载请注明原文地址:https://tihaiku.com/congyezige/2424667.html

最新回复(0)