Skip to content

2026年 408 操作系统 第 31 题

操作系统2026年选择题2分

题目

下列关于驱动程序的描述中,错误的是( )。

错因

A

把这条说法当作错误。但它其实是驱动程序最准确的角色定义——向上给 OS(具体是设备无关 I/O 软件层)暴露统一接口,向下直接和硬件控制器(寄存器、中断)打交道。这是教材标准说法,无可争议。

B

误以为这条错。但每种硬件的寄存器布局、中断号、初始化时序、命令字格式都不一样,驱动必须针对特定硬件型号编写——这就是 Linux 内核里有几千个 .c 文件分别对应不同设备驱动的原因。这条是对的,不是错的。

C

被两条看似矛盾的说法搞糊涂——"既要定制开发,又要统一接口?"实际上这两条恰好是分工:对下定制(贴硬件)对上统一(向 OS 暴露 read / write / open / close 等标准函数)。统一接口正是"设备无关性"的实现基础——上层 OS 才能用同一套系统调用操作五花八门的设备。这条是对的。

总解析

题面是反向措辞:"错误的是( )"——找的是错的那个。

分析四个论断

选项内容对错理由
A驱动是硬件与 OS 的接口程序教材定义;是连接 OS 抽象层和具体硬件寄存器的桥梁
B驱动需根据硬件特性定制开发不同硬件寄存器布局、中断号、命令字都不同,必须一对一编写
C驱动需要设置统一的接口向上必须提供统一的 read/write/ioctl 等接口,让 OS 屏蔽设备差异
D字符设备、块设备都是同一种 I/O 方式二者是 OS 划分的不同设备类,I/O 方式根本不同

字符设备 vs 块设备 的本质区别

维度字符设备块设备
访问粒度字节流式访问(如 512 B / 4 KB)随机访问
缓冲方式通常无缓冲或简单缓冲有专门的块缓存(buffer cache / page cache)
是否可寻址不可(流式,只能顺序读写)可(任意 LBA 跳转)
典型设备键盘、鼠标、串口、终端磁盘、SSD、光盘、U 盘
系统调用语义一次返回任意字节数一次必读/写一整块

正因为这两类设备的访问模式完全不同,OS 在 I/O 子系统里给它们设了两条独立的处理路径(Linux 里就是 chrdevblkdev 两套子系统)——绝不是"同一种 I/O 方式"。D 是错的。

最终答案(错误的描述)是 D

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题