操作系统-9——I/O管理和磁盘调度

本文介绍I/O技术的不同实现方式,包括程序控制I/O、中断驱动I/O、DMA和通道技术,并深入探讨了DMA的工作原理。同时,文章还讨论了磁盘调度策略,如FIFO、SCAN、C-SCAN算法,以及RAID技术的不同级别和关键特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、I/O功能的组织

四种技术:

  • 程序控制I/O:CPU忙等I/O结束,串行工作。
  • 中断驱动I/O:各种设备通用,中断次数多。
  • 直接存储器访问DMA:速度快、数据量大。在完成一个数据块I/O之后,下个CPU发出一次中断,中断次数少。适合于磁盘,网络接口等的I/O。
  • **通道Channe**l:比DMA效率跟高,通道具有自己的指令系统和专用的I/O处理器,独立完成I/O操作。

1.1直接存储器访问——DMA

DMA工作原理和过程:

  • CPU向DMA控制器发出I/O数据块的指令: <读/写操作、源/目的地址、传送字(节)数>;
  • 由DMA控制器完成设备的一个连续数据块与一个连续 内存区之间的直接传送(不断地抢占总线挪用CPU工作
    周期,将缓冲中的数据写入内存单元,或从内存单元读 出写到缓冲),传送字(节)数递减至0;
  • 一个数据块I/O完后,DMA控制器向CPU发中断;
  • 发出数据传送请求的进程被唤醒。 I/O效率高;DMA传送时,CPU执行效率略降低。

1.2磁盘调度

  • 扇区是小寻址单位和存取单位(但不是分配单位)。
  • 分配磁盘空间时以盘块(簇)为单位。1盘块=2n扇区
  • 一磁道内扇区数可能固定或不固定,但数据传输率 (kb/s)应保持恒定。

1.2.1磁盘性能参数

  • 磁盘访问时间包括如下三部分:Ta=Ts+Tr+Tt
  • 寻道时间Ts = 启动磁盘时间+横跨n条磁道时间 目前,典型的磁盘平均寻道时间Ts小于10ms。

  • 旋转延迟时间Tr = 将待访问扇区转到磁头下的时间 若15000转/分钟,则每转4ms,Tr平均约2ms。

  • 传输时间Tt =(读写字节数b ) /(旋转速度r * 每磁道字节数N )
  • 寻道时间对磁盘访问时间影响大。

    1.2.2磁盘调度策略

  • 磁盘调度:调整多个磁盘访问请求的服务顺序,以 降低平均磁盘服务时间。

  • 磁盘调度算法减少的是磁头移动距离(寻道时间)。

4种磁盘调度算法:

 - 先进先出(FIFO, First-In-First-Out)

 - SCAN扫描算法

 - C-SCAN 循环扫描算法
  • 先进先出(FIFO):按请求的接受顺序服务。

这里写图片描述

  • 后进先出(LIFO):先处理最新提出的请求。
    事务处理时,读取文件具有局部性,LIFO可减少磁臂移动,提高吞吐量,当先提出的请求会饥饿。
  • 最短服务时间有限算法(SSTF):也成为最短寻道时间有限算法。有限选择距当前磁头位置最近的访问请求进行服务。

这里写图片描述

  • SCAN扫描算法:也称作电梯算法。选择位于磁头移动方向前方距磁头位置最近的访问请求进行服务。当前方没有访问请求时,立即改变磁头移动方向(LOOK);或继续扫描到磁盘便捷后再转向(SCAN)。

    这里写图片描述

  • C-SCAN循环扫描算法:磁头从磁盘的一端一道另一端,随着移动而不断处理请求,当磁头一道另一端时,马上返回磁盘起始,返回时不处理请求。

    这里写图片描述

1.3RAID-独立磁盘冗余阵列

  • RAID用多个小容量磁盘代替单个大容量磁盘。

    • 优势是:增加数据容量,多个磁盘并行I/O可提高 速度,设置冗余磁盘可提高可靠性。
    • RAID是一组磁盘阵列,但OS视其为一个整体。
    • 除数据盘外,另有冗余磁盘保存(奇偶)校验信息, 作为校验盘,在某个磁盘失效时用于恢复数据。
  • RAID级别:0~6。常用:RAID 0、1、5、6

    三个关键技术:

  • RAID中的磁盘条带化: 将N个(一组)磁盘看作是一个存储部件。将每个数 据盘块划分为几个子块(条带strip),把每个子块的
    数据分别存储到各个不同磁盘的相同位置上。

  • RAID中的并行访问: 读写时,N个磁盘并行地读写各个子块。磁盘数据 传输率提高了N-1倍。

  • RAID中的块交叉校验:

    • 在磁盘条带化的基础上,在每组磁盘中设置一个校 验盘,该盘上任一位的内容为组中其余所有数据盘 同一位的校验(如:奇偶校验)。

    • 在写组中任一数据盘的任一块时,都要计算新的校 验并写入校验盘相同块。

    • 当一个数据盘出故障时,可以根据其余数据盘和校 验盘的内容,计算并恢复故障盘内容。
### 关于 UniApp 框架推荐资源与教程 #### 1. **Uniapp 官方文档** 官方文档是最权威的学习资料之一,涵盖了从基础概念到高级特性的全方位讲解。对于初学者来说,这是了解 UniApp 架构技术细节的最佳起点[^3]。 #### 2. **《Uniapp 从入门到精通:案例分析与最佳实践》** 该文章提供了系统的知识体系,帮助开发者掌握 Uniapp 的基础知识、实际应用以及开发过程中的最佳实践方法。它不仅适合新手快速上手,也能够为有经验的开发者提供深入的技术指导[^1]。 #### 3. **ThorUI-uniapp 开源项目教程** 这是一个专注于 UI 组件库设计实现的教学材料,基于 ThorUI 提供了一系列实用的功能模块。通过学习此开源项目的具体实现方式,可以更好地理解如何高效构建美观且一致的应用界面[^2]。 #### 4. **跨平台开发利器:UniApp 全面解析与实践指南** 这篇文章按照章节形式详细阐述了 UniApp 的各个方面,包括但不限于其工作原理、技术栈介绍、开发环境配置等内容,并附带丰富的实例演示来辅助说明理论知识点。 以下是几个重要的主题摘选: - **核心特性解析**:解释了跨端运行机制、底层架构组成及其主要功能特点。 - **开发实践指南**:给出了具体的页面编写样例代码,展示了不同设备间 API 调用的方法论。 - **性能优化建议**:针对启动时间缩短、图形绘制效率提升等方面提出了可行策略。 ```javascript // 示例代码片段展示条件编译语法 export default { methods: { showPlatform() { console.log(process.env.UNI_PLATFORM); // 输出当前平台名称 #ifdef APP-PLUS console.log('Running on App'); #endif #ifdef H5 console.log('Running on Web'); #endif } } } ``` #### 5. **其他补充资源** 除了上述提到的内容外,还有许多在线课程视频可供选择,比如 Bilibili 上的一些免费系列讲座;另外 GitHub GitCode 平台上也有不少优质的社区贡献作品值得借鉴研究。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值