Skip to content

2020年 408 操作系统 第 30 题

操作系统2020年选择题2分

题目

对于具备设备独立性的系统,下列叙述中,错误的是( )。

错因

A

觉得"设备"和"文件"是两类东西、用文件名访问设备听起来怪怪的。但 Unix/Linux 的核心设计哲学就是"一切皆文件"——/dev/sda/dev/tty/dev/null 都是设备的文件名表示,应用程序可以像 open("/dev/sda", ...) 这样按文件名打开设备。这正是设备独立性带来的好处之一。

B

可能觉得"用户程序最终要操作具体硬件,得知道物理设备名"。其实正好反过来——设备独立性的核心就是让用户程序只管逻辑名("打印机"、"磁盘 1"),具体映射到哪台物理设备由 OS 维护。这一点不成立的话,设备独立性就名存实亡了。

C

觉得"映射关系"是多余的开销,可以省。但没有这层映射,"逻辑设备名 → 哪台物理设备"无法回答,OS 就不知道把请求发给哪个驱动。逻辑设备表(LUT)正是干这个的——每条记录把一个逻辑名绑到当前可用的某台物理设备上。

总解析

题问"错误",D 直接撞设备独立性的设计目的——它存在的核心好处就是"应用程序不绑死在具体硬件上",硬件换了上层不用动。

设备独立性的工作机制:

说什么
应用层"我要写到 printer1"——只用逻辑名
OS 设备无关层逻辑设备表printer1 → /dev/lp0
设备驱动层操作具体的物理设备 /dev/lp0

物理设备从 lp0 换成 lp1?OS 改一下逻辑设备表就行——应用程序代码完全不用动,"换硬件不改程序"是设备独立性最核心的红利。D 直接说反了。

A、B、C 都对:

  • A:文件名(含设备文件 /dev/xxx)就是访问设备的常用方式
  • B:用户程序用逻辑名是设备独立性的标志
  • C:逻辑设备表是实现设备独立性的关键数据结构

最终答案是 D

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数