操作系统期末复习——第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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1125143.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Claude Code 国内使用2026年最新完整教程分享

适用 Windows / macOS / Linux,并包含 国内网络环境可用方案与常见问题排查。Claude Code 是 Anthropic 官方的终端 AI 编程助手,可用于:写代码、解释代码、重构、生成脚本、审查 PR、运行测试、维护项目记忆(CLAUDE.md&#xff0…

Mosaic:面向超长序列的多GPU注意力分片方案

Transformer的"二次方注意力瓶颈"的问题是老生常谈了。这个瓶颈到底卡在哪实际工程里怎么绕过去?本文从一个具体问题出发,介绍Mosaic这套多轴注意力分片方案的设计思路。 注意力的内存困境 注意力机制的计算公式: Attention(Q, …

2026马斯克《Moonshots》播客独家访谈全记录与深度解析

一、访谈基础信息全景 本次访谈是马斯克2026年首份重磅公开对话,录制于2025年12月22日美国得克萨斯州奥斯汀特斯拉超级工厂(Cybertruck与Optimus机器人核心生产基地),于2026年1月6日通过《Moonshots》播客正式上线,全时长近3小时。访谈由“零重力”公司创始人、奇点大学执…

操作系统期末复习——第4章:文件系统

目录第4章:文件系统概述4.1 文件4.1.1 文件命名4.1.2 文件结构4.1.3 文件类型4.1.4 文件访问4.2 目录4.2.1 一级目录系统4.2.2 二级目录系统4.2.3 层次目录系统4.2.4 路径名4.3文件系统的实现4.3.1 文件系统布局4.3.2 文件与磁盘4.3.3 ⭐文件的实现4.3.4 ⭐目录的实…

GESP Python 编程一级教材之 10 掌握变量的创建及使用(教程含历年试题解析)

系列文章 《GESP系列教程之 什么是GESP?》 《GESP 认证标准之 Python 编程一级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程二级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程三级标准(考试大纲与要求含考试真题)》 《GESP …

微信小程序 PHP_uniapp的社区团购系统_1g4y216z

微信小程序社区团购系统概述 该系统基于PHP和UniApp技术栈开发,整合微信小程序前端与PHP后端,实现社区团购的完整业务流程。前端采用UniApp跨平台框架,兼容多端运行;后端使用PHP构建高效的数据接口,支持商品管理、订单…

GESP Python 编程一级教材之 11 掌握输入输出语句 input 和 print(教程含历年试题解析)

系列文章 《GESP系列教程之 什么是GESP?》 《GESP 认证标准之 Python 编程一级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程二级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程三级标准(考试大纲与要求含考试真题)》 《GESP …

6.1 Elasticsearch-Lucene 索引文件结构:tim、tip、doc、pos、pay

6.1 Elasticsearch-Lucene 索引文件结构:tim、tip、doc、pos、pay Elasticsearch 的搜索性能之所以能在 PB 级别数据量下仍保持毫秒级响应,核心依赖是 Lucene 的倒排索引文件格式。一个分片(shard)本质上就是 Lucene 的一个索引目…

GESP Python 编程一级教材之 12 神奇的画笔turtle绘图,掌握图形库 turtle 的主要功能,使用 turtle 进行绘图(教程含历年试题解析)

系列文章 《GESP系列教程之 什么是GESP?》 《GESP 认证标准之 Python 编程一级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程二级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程三级标准(考试大纲与要求含考试真题)》 《GESP …

微信小程序 PHP_uniapp的社区老人服务管理系统_lz9wo71q

微信小程序 PHP_uniapp 社区老人服务管理系统摘要 该系统基于微信小程序和 PHP_uniapp 技术栈开发,旨在为社区老年人提供便捷的线上服务管理平台。通过整合社区资源,实现服务需求对接、健康监测、活动组织等功能,提升老年人生活质量。 技术架…

GESP Python 编程一级教材之 13 掌握模块的导入方法(教程含历年试题解析)

系列文章 《GESP系列教程之 什么是GESP?》 《GESP 认证标准之 Python 编程一级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程二级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程三级标准(考试大纲与要求含考试真题)》 《GESP …

玫瑰克隆AI工具:深耕小红书生态的爆款创作赋能利器

玫瑰克隆AI工具的核心定位,是专为小红书内容生态打造的“爆款逻辑拆解原创内容赋能”AI辅助创作系统。它区别于泛用型AI文案工具,深耕小红书平台规则、用户偏好与流量机制,以技术驱动破解创作者的核心痛点,助力不同层级创作者从“…

论文复现:PMSM速度伺服系统的强化学习与最优控制

论文复现:PMSM速度伺服系统的强化学习与最优控制 以下是基于论文提出的控制策略的复现代码,包括模型建立、控制器设计、强化学习算法实现以及仿真验证。代码将分为以下几个部分: 系统建模与参数定义 快速电流环PI控制器 模型降阶与慢速子系统 最优速度环设计与LQR问题 强化…

爆火!9款AI论文工具实测,PaperNex维普一把过!

深夜,你的论文进度条还卡在10%?导师的夺命连环催即将到来,知网维普的查重高墙横亘在前。别慌,这篇2024年最新的“急救指南”,将为你揭秘9款实测有效的AI论文神器,特别是能让你在最后关头“一把过”的王牌工…

多智能体实战指南:9种模式打造高效AI应用

想要构建一个智能体应用,最重要的是什么?可能很多人首先会想到要选择一个性能强大的大模型。 这个回答没错,毕竟当前的LLM Based Agent哪能缺少LLM的支撑。但事实却是,很多基于先进大模型构建的智能体没能体现出应用效果&#xff…

微信小程序 PHP_uniapp的音乐播放器排行榜系统的设计与实现_5h11g380

微信小程序音乐播放器排行榜系统设计与实现 该系统基于微信小程序平台,采用PHP后端与Uniapp前端框架开发,实现了一个功能完善的音乐播放器排行榜系统。系统设计分为前端展示、后端数据处理和数据库管理三大模块。 前端采用Uniapp跨平台框架开发&#xff…

收藏必备!国产最强大模型GLM-4-Plus评测:打破国外垄断,三大场景解决程序员痛点!

本文介绍了智谱AI推出的GLM-4-Plus大模型,该模型在SuperBench评测中排名第三,打破了国外模型垄断前三的局面。文章详细展示了GLM-4-Plus如何帮助程序员解决代码编写、理解和错误排查三大痛点,介绍了其强大的文件分析功能,并讲解了…

收藏!80%的人正在浪费大模型革命!这份产品经理转型指南请务必收藏

文章揭示大模型产品领域现状:真正的"神级产品经理"尚未出现,而80%的人正在用错误方式转型。作者剖析了四种典型错误:传统C端思维套用ChatBot、迷信专家call而非实际建模、高管只做PMO不学模型、O2O老兵只关注KPI和投流。强调大模型…

微信小程序 PHP_uniapp校园外卖跑腿骑手在线接单系统 _f8zv38dg

系统概述 微信小程序 PHP_uniapp校园外卖跑腿骑单系统是一款基于Uniapp框架和PHP后端开发的校园生活服务应用,旨在为学生和骑手提供高效的外卖配送与跑腿服务。系统支持多端兼容(微信小程序、H5、App),涵盖用户下单、骑手接单、订…

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

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