网络

教育改变生活

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 90|回复: 0
打印 上一主题 下一主题

[计算机系统原理] 《计算机系统原理》(2023 年版)第 6 章 程序中 I/O 操作的...

[复制链接]

589

主题

616

帖子

4万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
41773

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

跳转到指定楼层
楼主
发表于 前天 09:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
《计算机系统原理》(2023 年版)第 6 章 程序中 I/O 操作的实现 学习指南一、章节核心架构
本章聚焦计算机系统与外部设备交互的核心机制,围绕 "如何高效、可靠地实现输入输出操作" 展开,核心内容包括:
1. I/O 系统基础I/O 设备分类(字符设备 / 块设备)、I/O 接口组成(数据 / 控制 / 状态寄存器)、端口编址方式(统一编址 / 独立编址)
2. I/O 控制方式:程序查询方式、中断驱动方式、DMA(直接内存访问)方式、通道控制方式的原理与对比
3. 缓冲技术:单缓冲、双缓冲、循环缓冲、缓冲池的设计目标与应用场景
4. 设备驱动与用户接口:设备驱动程序的分层结构(硬件抽象层 / 设备无关层)、用户态 I/O 系统调用(如 read/write)的实现路径
二、学习目标拆解(一)知识掌握目标
1. 准确描述 I/O 接口的三大寄存器功能(数据寄存器传输数据、控制寄存器接收命令、状态寄存器反馈设备状态,教材 P150 6-1 重点)
2. 熟练区分四种 I/O 控制方式的核心差异(CPU 参与度、数据传输单位、适用场景,参考教材 P155 6-2
3. 掌握缓冲技术的五种典型应用场景(如键盘输入用单缓冲,磁盘读写用双缓冲)
4. 清晰阐述设备驱动程序的分层架构(用户层设备无关层设备驱动层硬件)及各层功能
5. 识别不同 I/O 设备的编址方式(如 x86 的端口独立编址使用 IN/OUT 指令)
(二)能力培养目标
1. 能根据设备特性选择合适的 I/O 控制方式(例:低速键盘用中断驱动,高速硬盘用 DMA
2. 正确分析缓冲技术对系统性能的影响(如双缓冲如何减少 CPU 等待时间)
3. 理解设备无关性设计的意义(如操作系统如何屏蔽不同磁盘型号的差异)
4. 诊断 I/O 操作故障(如中断未响应、DMA 传输错误)的可能原因
三、重点难点深度解析(一)核心重点模块1. I/O 控制方式对比
[size=11.0000pt]控制方式
[size=11.0000pt]CPU 干预程度
[size=11.0000pt]数据传输单位
[size=11.0000pt]典型延迟(CPU 周期)
[size=11.0000pt]适用设备
[size=11.0000pt]核心优缺点
[size=11.0000pt]程序查询
[size=11.0000pt]全程参与
[size=11.0000pt]单字节 /
[size=11.0000pt]100-1000
[size=11.0000pt]低速设备(键盘)
[size=11.0000pt]简单但 CPU 利用率低
[size=11.0000pt]中断驱动
[size=11.0000pt]事件响应
[size=11.0000pt]单字节 /
[size=11.0000pt]50-100
[size=11.0000pt]中速设备(打印机)
[size=11.0000pt]异步处理,CPU 效率提升
[size=11.0000pt]DMA
[size=11.0000pt]初始化后释放
[size=11.0000pt]数据块
[size=11.0000pt]10-20
[size=11.0000pt]高速块设备(硬盘)
[size=11.0000pt]硬件直接传输,需 DMA 控制器
[size=11.0000pt]通道控制
[size=11.0000pt]最低
[size=11.0000pt]数据块
[size=11.0000pt]<10
[size=11.0000pt]多设备并发场景
[size=11.0000pt]独立通道处理器,成本高
2. 缓冲技术详解
缓冲类型对比
单缓冲CPU 与设备共享一个缓冲区,适用于字符设备(如终端输入),存在互斥访问问题
双缓冲:输入 / 输出各一个缓冲区,交替使用(例:A 缓冲输入时 B 缓冲输出),提升并行度
循环缓冲:多个缓冲区组成环形队列,适合连续数据传输(如音频流),需指针管理
缓冲池:系统级共享缓冲区,动态分配给多个设备,提高资源利用率
缓冲作用
a. 解决 CPU I/O 设备速度不匹配(如 CPU 处理速度快于磁盘读取)
b. 减少 I/O 次数(批量传输降低启停损耗)
c. 支持异步通信(缓冲区作为数据暂存区)
3. 设备驱动程序架构
分层设计优势
[size=11.0000pt]用户层(系统调用) 设备无关层(统一接口) 设备驱动层(硬件特定逻辑) 硬件设备  
设备无关层屏蔽硬件差异(如不同厂商的网卡提供统一的 read/write 接口),设备驱动层处理寄存器操作和中断响应
关键数据结构
设备控制块(DCB):记录设备状态、缓冲区指针、驱动程序入口地址
中断向量表:映射设备中断号到对应的处理程序地址
(二)学习难点突破
1. DMA 传输流程
步骤:CPU 发送 DMA 请求→DMA 控制器接管总线直接在内存与设备间传输数据完成后发中断通知 CPU
核心:DMA 控制器需解决总线竞争问题(通过总线仲裁逻辑),传输过程中 CPU 可处理其他任务
1. 中断处理机制
中断响应优先级:硬件中断(如 DMA 完成)高于软件中断(如进程调度)
中断屏蔽:通过中断控制器(如 8259A)暂时禁止低优先级中断,确保关键操作不被打断
1. 设备无关性实现
通过逻辑设备名(如 /dev/sda)映射物理设备,用户程序无需知道具体硬件地址
设备无关层负责错误处理(如重试读操作)和资源分配(如缓冲区分派)
四、高效学习方法(一)对比表格记忆法
1. 制作 I/O 控制方式对比表(如上),重点记忆 CPU 参与度、传输单位、适用场景
2. 缓冲技术对比表:
[size=11.0000pt]缓冲类型
[size=11.0000pt]缓冲区数量
[size=11.0000pt]并行度
[size=11.0000pt]典型应用
[size=11.0000pt]管理复杂度
[size=11.0000pt]单缓冲
[size=11.0000pt]1
[size=11.0000pt]串行
[size=11.0000pt]键盘输入
[size=11.0000pt]
[size=11.0000pt]双缓冲
[size=11.0000pt]2
[size=11.0000pt]半并行
[size=11.0000pt]打印机输出
[size=11.0000pt]
[size=11.0000pt]缓冲池
[size=11.0000pt]N
[size=11.0000pt]全并行
[size=11.0000pt]多设备并发
[size=11.0000pt]
(二)流程图分析法
1. 绘制 DMA 传输流程图:
[size=11.0000pt]CPU初始化DMA控制器(目标地址、传输长度)→ DMA控制器向CPU申请总线获得总线后传输数据(每次传输修改地址指针)传输完成发中断→ CPU处理中断
1. 中断处理流程:设备触发中断硬件压栈(PCPSW查找中断向量表执行中断服务程序恢复现场继续原程序
(三)实例分析法
1. 键盘输入场景
控制方式:中断驱动(按键按下触发中断,CPU 读取扫描码)
缓冲:单缓冲(暂存按键字符,避免丢失)
驱动:键盘驱动程序将扫描码转换为 ASCII 码,通过系统调用传递给用户程序
1. 硬盘读写场景
控制方式:DMA(传输大块数据,减少 CPU 干预)
缓冲:双缓冲(一个缓冲读取数据,另一个缓冲供 CPU 处理)
驱动:硬盘驱动程序处理扇区寻址、错误校验,向上提供块设备接口
五、知识框架与考点聚焦(一)核心知识图谱
[size=11.0000pt]graph TD
[size=11.0000pt]A[I/O系统基础] --> B(设备分类)
[size=11.0000pt]A --> C(接口组成)
[size=11.0000pt]A --> D(编址方式)
[size=11.0000pt]E[I/O控制方式] --> F(程序查询)
[size=11.0000pt]E --> G(中断驱动)
[size=11.0000pt]E --> H(DMA)
[size=11.0000pt]E --> I(通道控制)
[size=11.0000pt]J[缓冲技术] --> K(单缓冲)
[size=11.0000pt]J --> L(双缓冲)
[size=11.0000pt]J --> M(循环缓冲)
[size=11.0000pt]N[设备驱动] --> O(分层架构)
[size=11.0000pt]N --> P(设备无关性)
[size=11.0000pt]N --> Q(中断处理)
(二)高频考点预测
1. I/O 控制方式优缺点(简答题,例:对比中断驱动与 DMA 方式的适用场景)
2. 缓冲技术设计目标(论述题,说明为什么高速设备仍需要缓冲)
3. 设备驱动分层架构(原理题,解释设备无关层的作用)
4. DMA 传输流程(计算题,给定传输参数计算 DMA 传输时间)
六、备考策略与资源推荐(一)针对性练习建议
1. 控制方式选择:分析教材 P160 6-1(打印机控制),说明为何采用中断驱动而非程序查询
2. 缓冲效果计算:假设磁盘读取一块数据需 10msCPU 处理需 5ms,计算双缓冲下的总时间(10ms vs 单缓冲 15ms
3. 驱动流程分析:阅读 Linux 内核简单驱动代码(如字符设备驱动),理解 file_operations 结构体的作用
(二)深度理解工具
1. 操作系统接口:
◦ Linux lsof命令查看进程打开的 I/O 设备文件
◦ dmesg查看设备驱动加载日志,观察中断号分配、DMA 通道使用情况
1. 硬件模拟工具:
◦ QEMU 模拟 I/O 设备行为,观察不同控制方式下的 CPU 占用率变化
(三)学习计划建议
[size=11.0000pt]学习阶段
[size=11.0000pt]核心任务
[size=11.0000pt]建议用时
[size=11.0000pt]配套练习
[size=11.0000pt]基础夯实
[size=11.0000pt]掌握 I/O 接口组成、控制方式分类
[size=11.0000pt]3 小时
[size=11.0000pt]教材 P168 习题 123
[size=11.0000pt]进阶提升
[size=11.0000pt]缓冲技术原理、设备驱动分层
[size=11.0000pt]4 小时
[size=11.0000pt]教材 P169 习题 789
[size=11.0000pt]综合应用
[size=11.0000pt]设计设备驱动架构、优化 I/O 性能
[size=11.0000pt]2 小时
[size=11.0000pt]模拟题:为低速设备选择控制方式和缓冲策略
[size=11.0000pt]总结巩固
[size=11.0000pt]制作控制方式对比表、缓冲技术脑图
[size=11.0000pt]1.5 小时
[size=11.0000pt]自测:描述 DMA 传输的完整流程
七、常见问题答疑
Q1:为什么高速设备仍需要缓冲?A:缓冲的主要作用是匹配 CPU 与设备的速度差异。即使设备速度快,若数据处理需要时间(如解压缩),缓冲可减少设备等待,提升整体吞吐量
Q2DMA 方式下 CPU 是否完全不参与?A:否。CPU 需初始化 DMA 控制器(设置传输地址、长度等参数),传输完成后处理中断,但传输过程中 CPU 可执行其他指令,无需轮询设备状态
Q3:设备无关性如何实现?A:通过操作系统的设备无关层统一管理设备,将物理设备映射为逻辑设备(如所有磁盘视为块设备),并提供统一的系统调用接口(如 read/write),屏蔽硬件细节
通过系统化学习,建议重点关注不同 I/O 控制方式的适用场景和缓冲技术的性能优化逻辑。结合操作系统实际案例(如 Linux 的块设备驱动)理解设备驱动的分层设计,利用硬件模拟工具直观感受 DMA 和中断的工作流程。实际应用中,注意区分用户态 I/O 调用与内核态驱动实现的差异,为后续学习操作系统设备管理和输入输出子系统奠定基础。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

WEB前端

QQ|手机版|小黑屋|金桨网|助学堂  咨询请联系站长。

GMT+8, 2025-6-6 08:46 , Processed in 0.035900 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表