当前位置:   article > 正文

【操作系统】笔记:I/O操作与磁盘_磁盘io

磁盘io

目录

1.I/O操作

I/O设备

I/O控制方式

程序直接控制方式

 中断驱动方式

 DMA方式

DMA控制器 

 通道控制方式

 四种方式对比

I/O软件层次结构服务 

用户层软件

设备独立性软件

 设备驱动程序

输入/输出应用程序接口

假脱机技术

 设备分配的安全性

设备分配的数据结构

缓冲区

2.磁盘

磁盘结构

 磁盘的物理地址

磁盘读写操作时间 

磁盘调度算法

 磁盘地址结构设计

减少延迟时间的方法

 磁盘初始化

 坏块的管理

固态硬盘SSD 


本文图片均来源于王道考研计算机操作系统

【王道计算机考研 操作系统】https://www.bilibili.com/video/BV1YE411D7nH?p=41&vd_source=70586cfbe12502eb00ef1b5feee78bc7


1.I/O操作

I/O设备

1.I/O设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机的硬件部件
2.I/O设备按信息交换的单位分类为:块设备(传输快,可寻址),字符设备(传输慢,不可寻址,常采用中断驱动方式)
3.I/O控制器:即设备控制器,由CPU来控制I/O控制器,又由I/O控制器来控制设备的机械部件

4.I/0控制器的功能为:接收识别CPU发出的命令,向CPU报告设备的状态,数据交换,地址识别

 

5.I/O控制器内有寄存器用于与CPU的交互
寄存器的编址有两种:内存映射I/O和寄存器独立编址

I/O控制方式

I/O控制方式有:程序直接控制方式,中断驱动方式,DMA方式,通道控制方式

程序直接控制方式

读I/O模块的状态即检查IO设备是否为空闲状态,若不是则继续循环检查 

 中断驱动方式

利用中断可实现当检查IO设备为忙时就发生中断,直到空闲才叫回CPU为进程分配IO设备

如鼠标若没有点击则发生中断,当点击时立马换回CPU 

 DMA方式

 DMA方式即通过DMA控制器实现托管,CPU告诉DMA的IO控制逻辑将输入的数据放到内存中的哪个位置后便不需要再关注了,由DMA实现,直到传输完成再唤回CPU

DMA控制器 

 通道控制方式

 四种方式对比

 

I/O软件层次结构服务 

 I/O软件层次结构服务分为:用户层软件,设备独立性软件,设备驱动程序,中断处理程序,硬件(各个层次由上到下,上层为下层提供接口,下层为上层提供服务,类似于计算机网络7层结构)

用户层软件

设备独立性软件

实现的功能有:

(1)向上层提供统一的调用接口(如read系统调用);

(2)对设备的保护(类似文件保护,需要为设备添加访问权限);

(3)对差错的处理;

(4)设备的分配与回收(很多I/O设备为临界资源);

(5)数据缓冲区管理;

(6)建立逻辑设备名到物理设备名的映射关系,根据设备类型选择调用相应的驱动程序

 设备驱动程序

输入/输出应用程序接口

 

设备驱动程序要为设备独立软件提供统一的接口(根据不同的操作系统有不同的接口,但同一操作系统必须统一) ,所以要接入该操作系统的各种IO设备都必须采用该操作系统制定的统一标准

假脱机技术

实现在用户层软件中(脱机即脱离主机的控制进行的输入/输出操作),假脱机即用软件的方式模拟脱机技术

假脱机技术是为了解决IO设备传输数据慢,CPU内存和磁盘传输数据快的矛盾,若没有假脱机技术,CPU就必须等待IO设备的传输,利用率低

假脱机技术实际就是利用缓冲区的特性(由下文缓冲区可知)来解决矛盾,IO设备将数据全部传入输入缓冲区后,CPU再进行处理,没有全部输入前CPU就不会进行任何数据的提取 

 设备分配的安全性

设备分配的数据结构

操作系统利用通道控制表,控制器控制表,设备控制表这三种数据结构来实现对设备的分配

一个通道控制多个控制器,一个控制器控制多个设备

控制表存储了控制信息(即设备的使用情况),映射设备逻辑名与物理名(用户使用逻辑名,操作系统对物理名进行操作),只有当三张表都表示三个设备为空闲时才能为进程分配该IO设备

缓冲区

缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可利用内存作为缓冲区。使用硬件作为缓冲区的成本较高,容量也较小,一般仅用在对速度要求非常高的场合,所以更多情况下利用的是内存作为缓冲区

缓冲区的作用:

(1)缓和CPU与I/O设备之间速度不匹配的矛盾;

(2)减少对CPU的中断频率,放宽对CPU中断响应时间的限制;

(3)解决数据粒度不匹配的问题;

(4)提高CPU与I/0设备之间的并行性;

单缓冲:操作系统在主存分配一个缓冲区

(重点)当缓冲区数据非空时,不能往缓冲区中冲入数据,只能从缓冲区把数据传出;当缓冲区为空时,可以往缓冲区冲入数据,但必须把缓冲区充满以后,才能从缓冲区把数据传出

(重点)在单缓冲区中如何计算数据输入和输出的平均用时?

 

求平均用时可以先假定一个初始的工作状态,经历一次输入输出后当再次回到初始状态时即是一次数据传输

由图可知,缓冲区为空,工作区为满,所以可以直接输入到缓冲区,CPU也可以处理数据,但缓冲区必须充满才可以传送,所以即使CPU已经处理完了进程工作区也不能提取数据,所以当输入时间大于CPU处理时间时,平均用时由输入时间决定

 

 

若CPU处理时间大于输入时间,则平均用时由CPU处理时间决定 

双缓冲求平均用时

双缓冲求平均用时需要设置一个缓冲区为空,一个缓冲区为满,若两个都为空或为满会很复杂,当一个为空一个为满时,1区传送,2区输入后就又变为一个为空一个为满(即回到初始状态),此时就是一次传输数据 

 

 循环缓冲区


2.磁盘

磁盘结构

 磁盘的物理地址

磁盘读写操作时间 

磁盘调度算法

先来先服务算法

 最短寻找时间优先

 扫描算法

 

 LOOK调度算法

 循环扫描算法

 C-LOOK调度算法

 磁盘地址结构设计

当读取地址连续的磁盘块时,采用(柱面号,盘面号,扇区号)的地址结构可以减少磁头移动消耗的时间

 

减少延迟时间的方法

交替编号

当读取逻辑相邻的文件时

若不采取交替编号,那么在读取完该文件后磁头需要进行数据的处理,需要一些时间,此时不可能继续读取相邻的扇区,所以只能再绕一圈而使延迟时间大大增加

而交替编号便给了磁头处理数据的时间,使进入到下下个扇区时可以直接读取数据 

 错位命名

由于各层的磁盘都是同轴转动的,所以相邻盘面的地址位置就同样需要进行错位才能避免因为处理时间导致不能直接读取使延迟时间增加

 

 

 磁盘初始化

 坏块的管理

固态硬盘SSD 

固态硬盘结构

固态硬盘的页相当于磁盘的扇区,块相当于磁盘的磁道 

SSD 

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号