news 2026/4/18 9:12:35

操作系统期末复习——第5章:输入/输出

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
操作系统期末复习——第5章:输入/输出

目录

  • 5.2 I/O软件原理
    • 5.2.1 I/O软件的目标
    • 5.2.2 程序控制I/O
    • 5.2.3 中断驱动I/O
    • 5.2.4 使用DMA的I/O
  • 5.3 ⭐I/O软件层次
    • 5.3.1 中断处理程序
    • 5.3.2 ⭐设备驱动程序(Device Driver)
    • 5.3.3 ⭐Device-Independent的OS软件
    • 5.3.4 功能
    • 5.3.5 总结
  • 5.4 Disks
    • 5.4.1 盘硬件
    • 5.4.2 磁盘格式化
    • 5.4.3 ⭐磁盘臂调度算法

5.2 I/O软件原理

5.2.1 I/O软件的目标

  1. 统一命名

    文件或设备名称是字符串或证书,不依赖具体机器

  2. 设备独立性

    程序可以访问任何I/O设备,无序提前指定

  3. 同步和异步传输

    同步传输(即阻塞):程序等待I/O操作完成

    异步传输(即中断驱动):程序继续执行,I/O完成后通过中断通知

  4. Buffering

    设备产生的数据无法直接存放到目标内存,需要暂存到缓冲区

  5. 错误处理

    尽可能在接近硬件的层面处理

  6. 共享设备和独占设备

    共享设备:磁盘能同时让多个用户使用

    独占设备:磁带机必须由单个用户独占使用

5.2.2 程序控制I/O

  1. CPU直接控制I/O直到I/O完成

    • 适用于单进程系统(MS-DOS、嵌入式系统(Embedded systems)

    • 不适用于多道程序设计和分时系统

  2. 轮询/忙等

    • CPU不断检查设备状态寄存器来检测设备是否准备就绪

    • 三种状态

      • Ready

      • Busy

      • Error

    • 缺点:CPU浪费(CPU需处于忙等来等待I/O)

5.2.3 中断驱动I/O

  1. CPU在发送第一个字符后,不再轮询等待,而是打印机READY时会发送硬件中断,再让CPU处理

  2. 缺点:每次字符输入都会发生中断

5.2.4 使用DMA的I/O

  1. DMA控制器会把内核缓冲区的字符串输给打印机控制器,CPU不参与这个过程

  2. 传输完整个缓冲区(字符串),CPU才会被再次中断

5.3 ⭐I/O软件层次

5.3.1 中断处理程序

  1. 最好隐藏中断处理程序

    • 把启动一个I/O操作的驱动程序阻塞,直至I/O操作完成并产生一个中断

    • 如何阻塞驱动程序

      • 在一个信号量上执行down

      • 在一个条件变量上执行wait

      • 在一个消息上执行receive

  2. 中断处理程序的位置由中断向量确定

  3. 中断处理流程

    • 硬件

      1. 发出中断

      2. 处理器执行完当前指令

      3. 处理器发出中断确认信号

      4. 处理器将PSW和PC推入控制栈

      5. 处理器根据中断加载新PC值

    • 软件

      1. 保存剩余进程状态信息

      2. 进程中断

      3. 恢复进程状态信息

      4. 恢复旧的PSW和PC

  4. 软件中的具体步骤

    1. 保存没被中断硬件保存的所有寄存器

    2. 为中断服务过程设置上下文,如TLB、MMU和页表

    3. 为中断服务过程设置堆栈

    4. 确认中断控制器,重启中断

    5. 将寄存器从它们被保存的地方复制到进程表

    6. 运行中断服务进程

    7. 选择下一次运行哪个进程

    8. 为下一次要运行的进程设置MMU上下文

    9. 装入新进程的寄存器

    10. 开始运行新进程

5.3.2 ⭐设备驱动程序(Device Driver)

  1. 用来控制I/O设备的特定代码

  2. Device driver的逻辑定位

    用户程序 -> 操作系统的其余部分 -> Device driver -> 总线 -> Device controller -> Device

  3. 功能

    • 接收OS抽象的读/写请求

    • 初始化设备

    • 发送硬件命令

    • 请求队列管理

    • 错误处理

  4. 分类

    • 块设备驱动程序:磁盘

    • 字符设备驱动程序:键盘和打印机

5.3.3 ⭐Device-Independent的OS软件

功能

  1. Device driver的统一接口

    • 好处

      1. 驱动开发者知道驱动程序接口是什么样

      2. 操作系统开发者能基于接口编写device-independent的I/O功能

    • 解决给I/O设备命名(以Unix为例)

      • 设备被抽象为特殊文件,需要通过系统调用(如read()等)访问

      • 文件名与每个设备关联,并确定一个包含主设备号和次设备号的i节点

        • 主设备号:定位驱动程序

        • 次设备号:作为参数传递给驱动程序,以指定读/写的单元(区分同一驱动的不同设备)

      • 通常的文件保护规则也适用于I/O设备

  2. 缓冲

  3. 错误报告

    处理层级

    1. Device-controller

      如校验错误

    2. Device driver

      如无法读取磁盘

    3. Device-independent的OS软件层

      • 编程错误(写入只读设备)

      • 实际的I/O错误(摄像头关机)

  4. 分配与释放专用设备

    不允许并发访问

  5. 提供device-independent块大小

    不同磁盘扇区大小可能不同,应由device-independent软件隐藏并向高层提供统一块大小

5.3.4 功能

  1. 封装系统调用

  2. 格式化I/O处理(如printf())

  3. 假脱机管理

5.3.5 总结

流程(双向)

  1. I/O请求

  2. 用户进程

  3. Device-independent软件

  4. Device driver

  5. 中断处理

  6. 硬件

  7. 响应

5.4 Disks

5.4.1 盘硬件

  1. 柱面(cylinder)->磁道(track)->扇区(sector)

  2. 扇区通常512B

  3. 磁盘可能有多个环带

  4. 因为本来每个磁道扇区数相同,越外圈每个扇区越大,会造成浪费。所以在外面的磁道有更多扇区

5.4.2 磁盘格式化

  1. 磁盘使用前要先进行低格式化和高格式化

    • 低格式化

      • 将磁盘分为磁盘控制器可读写的扇区

      • 由供应商完成

      • 磁道格式化方式

        • 分为由inter-sector-gap间隔的扇区

        • 扇区格式:前导码+数据+校验码

  2. 柱面斜进(cylinder skew)

    • 当磁盘读取完一个磁道,磁头需要移动到下一个磁道。在移动过程中,盘面一直在旋转,为保证磁头能从本磁道的末尾恰好移动至下一磁道开头,就需要柱面斜进

    • 目的:改进性能,让磁盘在一次连续的操作中读取多个磁道而不丢失数据

    • :How much cylinder skew is needed for a 7200-RPM disk with a track-to-track seek time of 1 msec? The disk has 200 sectors of 512 bytes each on each track.

      • 7200转/分钟=0.12转/毫秒,磁道间寻道的这1毫秒期间,盘面会转过200*0.12=24个扇区。所以答案是24
  3. 扇区交错(interleaving)

    • 若磁盘控制器只有一个扇区buffer,当一个扇区数据从硬盘传输至buffer后,需要把buffer数据拷贝至内存。此期间磁头将越过下一个扇区起始位置,因此下一个逻辑扇区不应是相邻的物理扇区,所以山区要交错排列

    • 复制快可用单交错,复制慢可用双交错

5.4.3 ⭐磁盘臂调度算法

  1. 决定读写磁盘块时间的因素

    • 寻道时间

      磁盘臂移动至适当柱面的时间

    • 旋转延迟

      等待适当扇区旋转到磁头下所需时间

    • 实际数据传输时间

  2. FCFS

  3. Shortest Seek First(SSF)

  4. Elevator Algorithm


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 7:39:40

从零到 AI 产品经理:3 个必备技能缩短你的转型路径

不废话,直接上排期表:三天看“大盘”,把大模型这个行业的生态位、AI 产品经理的价值机会和类型搞清楚一星期“吃透”大模型底层原理:不学算法,但是必须懂模型怎么作业、应用方式和能力边界30 天每周跑通一个项目&#…

作者头像 李华
网站建设 2026/4/18 7:43:09

微信小程序 PHP_uniapp的字典词韵查询系统的设计与实现_79zfkl8b

微信小程序 PHPUniapp 字典词韵查询系统设计与实现摘要 该系统基于微信小程序平台,结合PHP后端与Uniapp框架,构建了一个高效、跨平台的汉语字典与词韵查询工具。设计采用前后端分离架构,前端通过Uniapp实现多端兼容,后端使用PHP处…

作者头像 李华
网站建设 2026/4/18 2:17:01

软件测试之学习测试用例的设计(等价类法、边界值法、错误猜测法、场景法、因果图法、正交法)

1. 测试用例的概念 软件测试人员向被测试系统提供的一组数据的集合,包括 测试环境、测试步骤、测试数据、预期结果 2. 为什么在测试前要设计测试用例 测试用例是执行测试的依据 在回归测试的时候可以进行复用 是自动化测试编写测试脚本的依据 衡量需求的覆盖率…

作者头像 李华