Skip to content

2022年 408 操作系统 第 32 题

操作系统2022年选择题2分

题目

下列关于驱动程序的叙述中,不正确的是( )。

错因

B

误以为"设备初始化"是开机时 BIOS 一次性做完的事。BIOS 自检阶段只把 CPU、内存、引导设备拉到能跑起来的最低状态,具体设备的工作参数——中断号、DMA 通道、寄存器映射、内核缓冲区——是 OS 启动后加载对应驱动时才配上去的。

C

觉得驱动跑在内核态、又是直接操作硬件,一气呵成不该被打断。但驱动发完 I/O 命令后要等硬件回中断或 DMA 完成,这段等待期调度器会把当前进程挂进设备等待队列、状态切到阻塞,硬件完成中断后再被唤醒。

D

read/write 想成了内核自己直接读硬件。系统调用只是入口,会一路下沉到 VFS → 文件系统 → 块设备驱动的 read/write 例程,真正跟磁盘控制器打交道把字节搬过来的还是驱动。

总解析

题问"不正确",A 一眼就可疑——驱动程序本来就是为某种具体的 I/O 控制方式写出来的代码,方式不同驱动的骨架就完全不同:

I/O 控制方式驱动里大致长什么样
程序直接控制(轮询)while 循环读状态寄存器忙等,数据就绪再搬
中断驱动发命令后让出 CPU、进程阻塞,中断处理程序里读数据
DMA配 DMA 控制器(源/目的地址、字节数)启动传输,等 DMA 完成中断
通道准备通道程序,发通道指令,等通道结束中断

硬件用哪种方式跟 CPU 交互,驱动就得写成对应的样子,"无关"是反话。B、D 是驱动的本职工作(初始化设备 + 完成读写),C 是驱动等硬件时的常态,三者都成立。

最终答案是 A

最后更新:

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