目录
- 输入输出系统的性能
- 输入输出系统的可靠性、可用性和可信性
- 廉价磁盘冗余阵列RAID
- 总线
- 通道处理机
- I/O与操作系统
输入输出系统分为通信IO和存储IO:通信IO负责系统和外部设备的信息交流,存储IO负责扩大存储容量。
1. 输入输出系统的性能
- 如果输入输出系统的性能和CPU的性能不匹配,输入输出系统就会成为瓶颈。(无论在哪,最差的都是瓶颈)。
- 这里不能使用CPU时间作为衡量了,因为这里没有很好的测量输入输出系统的性能。应该使用系统响应时间:指用户输入命令开始到得到结果所花的时间。由两部分组成输入输出系统的响应时间和CPU的处理时间。
这里不能用CPU时间作为衡量的原因是CPU的处理会被打断,那么CPU的处理时间就不只是单单的输入输出系统的时间衡量,所以将整个事件推广到系统处理IO的时间和单纯的输入输出响应时间。
3.🌟 I/O处理的影响🌟:
- 多进程技术只能提高系统的吞吐率,并不能减少系统的响应时间【使用多进程技术不能忽略I/O性能对系统性能的影响】
- 进程切换时可能需要增加I/O操作
- 可切换的进程数量有限,当I/O处理较慢时,仍会导致CPU处于空闲状态
4. 输入输出系统的性能参数:
- 连接特性:哪些输入输出设备可以和计算机系统相连
- 输入输出系统的容量:输入输出系统可以容纳的输入输出设备数
- 响应时间和吞吐率
- 考虑输入输出操作对CPU的打扰情况(考查某个进程在执行时,由于其他进程的输入/输出操作,使得该进程的执行时间增加了多少)
不考虑当前进程的IO,考虑其他进程的IO对当前进程的影响。
2.输入输出系统的可靠性、可用性和可信性
存储设备应该无条件地保护好用户的数据,反应输入输出系统可靠性的参数有可靠性】可用性和可信性。
MTTF是平均失效前时间,那指的就是还没有失效的持续时间,其倒数是失效率,各个模块之间是串行关系,所以各个模块的失效率是加和的形式,前面有提到每个模块的生存周期是服从指数分布的,而指数分布如果两项相乘的话指数部分是相加的关系,失效率应该就是那个指数,所以失效率才是加和的形式。
- 🌟提高系统组成部件的可靠性的方法🌟:
- 有效构建方法:在构建系统的过程中消除故障隐患,这样建立起来的系统不会出现故障。
- 纠错方法:在系统构建过程中采用容错的方法,这样即使出现故障,也可以通过容错信息保证系统正常工作【建立在“冗余”的基础上,提供系统所需必要功能部件之外的部件】
纠错方法的容错信息可以理解为磁盘阵列的冗余盘,在磁盘上信息错误的时候可以通过冗余盘上的信息来恢复原有信息。
- 为了保证冗余信息出现错误时不失效:通常要将其存放在与出错部件不同的部件中,典型应用——磁盘冗余阵列
3. 廉价磁盘冗余阵列RAID
-
磁盘阵列:磁盘阵列是使用多个磁盘(包括驱动器)的组合来代替一个大容量的磁盘。
-
优点:
- 可以比较容易的构建大容量的磁盘存储器系统
- 可以提高系统的性能(因为磁盘阵列中的多个磁盘可以并行工作)
-
🌟磁盘阵列的结构特点🌟:
- 一般是以条带为单位把数据均匀地分布在多个磁盘上【交叉存储】
- 条带存放使得磁盘存储器系统可以并行地处理多个数据读/写请求,从而提高总的I/O性能
【在RAID中增加冗余信息盘有几种不同的方法,它们构成了不同的RAID级别】
- RAID的关键问题:
- 如何发现磁盘的故障
在磁盘扇区中除了保存数据信息外,还保存有用于发现该扇区错误的检测信息
。对扇区数据进行读取的同时,可以检测到是否有错误。 - 如何减少平均修复时间(MTTR)
在系统中增加热备份盘(热切换技术:允许系统在不关机的情况下更换设备),丢失的数据将根据冗余盘及其他盘上的信息进行重新构建,并放到热备份盘中。【在具有热备份盘和热切换技术的系统将会一直提供在线服务,丢失的数据立即在热备份盘上重新构建,并使该备份盘变成工作盘,而失效盘被换下,新换上去的磁盘变成备份盘】
- 如何发现磁盘的故障
RAID 0
所有的磁盘都可以并行工作,各自读出相应的部分。任何一块磁盘出现故障整个系统无法工作,因为没有冗余。适用于需要高带宽磁盘访问的场合,性能和容量可能比可靠性更重要。
RAID 1(镜像磁盘)
- 核心思想:对所有的磁盘数据提供一份冗余的备份。每当写入数据时,都要将其也同时写入镜像盘,在系统中所有的数据都有两份
- 特点
【1】能实现快速的读取操作
【2】写性能由写性能最差的磁盘决定,相对于各级RAID来说,RAID 1 写速度较快
【3】可靠性高,数据恢复简单
【4】最昂贵的解决方法,物理磁盘空间是逻辑磁盘的二倍 - 当从该磁盘阵列读取数据时,磁盘及镜像盘可独立同时工作,由最先读出数据的磁盘提供数据
- 🌟读取快原因🌟:对于访问请求的排队时间、寻道时间和旋转延迟的总和最小
- 🌟写入快原因🌟:可以并行执行,不需要计算校验信息
RAID 2(存储式的磁盘阵列)
Hamming纠错码的思路,每当写入数据时就写入Hamming码,每当读出数据时,也将Hamming码读出,用于判断数据是否有错。Hamming具有纠正1位错误和检测2位错误的能力。
缺点:
- 在磁盘个数较少时,冗余盘占磁盘总数的比例是比较高的,效率低下。
- 当数据盘较多时,系统规模会变得比较庞大
- 现在的磁盘大多在自己内部已有纠错码
RAID 3(位交叉奇偶校验磁盘阵列)
特点:
- 写数据时,为每行数据形成奇偶校验码并写入校验盘。
- 读出数据时,如果控制器发现某个磁盘出现故障,可据故障以外其他所有盘的正确信息来恢复故障盘中的数据。(异或运算,即使故障盘是校验盘也可以)
- 细粒度的磁盘阵列,采用的条带宽度较小,甚至可以是1B或1位。对于绝大多数的I/O请求都需要磁盘阵列中断所有磁盘为之服务。对大数据量的读写具有很大的优越性。
- 缺点:不能同时进行多个I/O请求的处理。
- 传输率靠所有同时为之服务的磁盘数量决定,越多传输速率越高(同时为同一个服务);若同时为不同的I/O请求服务就是并行性
- 置需要一个校验盘,开销较小
RAID 4(块交叉奇偶校验磁盘阵列)
特点:
- 能够同时处理多个小规模访问要求,采用粗粒度的磁盘阵列。每一个代表一个数据块。
- 磁盘中各个扇区都有自己的纠错码,所以完全可以让每个磁盘独立地进行读操作,从而提高单位时间完成的读操作的数量。
- 读操作:每次只需访问数据所在的磁盘,仅在磁盘出现故障时,才会读校验盘并进行数据的重建。
- 写入操作:由于要重新计算校验码,所以采用如下的捷径来简化处理:
写入新数据时,将原有数据与旧的奇偶校验码进行异或运算,然后计算出新的奇偶校验,最后把新数据和奇偶校验写入磁盘。 - 优点:除了能够有效地处理小规模访问,也可以一样快速处理大规模访问,但是控制比较复杂。
RAID3是每一行的数据使用一个盘当校验盘,因为使用的是细粒度所以共用一个,但是RAID4是粗粒度的也就是每一块磁盘的条带中都有很多的位信息,所以每一个扇区都有自己的冗余校验位。
RAID 5(块交叉分布奇偶校验阵列)
特点:
- 数据以块交叉的方式存于各盘,🈚️专门的冗余盘,奇偶校验信息均匀分布在所有的磁盘上。
- 校验工作不集中在一个磁盘上完成,无论校验读还是校验写
- 之前的RAID任何一次磁盘访问都要被访问到,校验盘压力较大
- 可以快速处理大规模访问,小规模读取,还能让它们更快地处理小规模写操作。
- 校验空间开销较小
RAID 6(P+Q双校验磁盘阵列)
特点:
- 有时需要系统能容忍两个磁盘出错
- 增加了一个独立的校验信息,放在另一个校验盘中
- 很适合重要数据的保存
- 校验空间开销是RAID 5 的2倍
RAID 10 与 RAID 01![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/32f622789f5cadbc8cfbaf4d687931f1.png)
RAID 10 :组内做镜像,组间按条带存放
RAID 01:组内按条带存放,组间做镜像
直接按照RAID0是按条带普通存放,而RAID1是镜像存放来记。按照这个顺序去记忆组内和组间的关系。
RAID的实现与发展
🌟实现磁盘阵列的方式主要有3种🌟:
- 软件方式:阵列管理软件由主机实现,优点是成本低,缺点是过多的占用主机时间而且带宽指标上不去
- 阵列卡方式:把RAID管理软件固化在I/O控制卡上,从而可不占用主机时间,一般用于工作站和PC机
- 子系统方式:基于通用接口总线的开放式平台,可用于各种主机平台和网络系统
4.总线
重要知识点:
1. 什么是总线
2. 总线的仲裁
3. 总线标准
4. 总线与CPU连接
总线是连接系统各个部分的公共信号线
优点:
成本低,简单
缺点:
是由不同的外设分时共享的,形成了信息交换的瓶颈,从而限制了系统中总的I/O吞吐量
4.1 总线的设计
- 总线主设备的数量是要仔细考虑的问题之一(总线主设备是指能够启动总线活动的设备)
- 总线仲裁机制:确定由哪个主设备来控制和使用总线。仲裁机制通常采用固定优先权(菊花链仲裁)或者相对公平的随机选取机制来分配总线的控制权。
- 包交换(可以提高总线带宽):将总线事务分成请求和应答两部分。在请求和应答之间的空闲时间内,总线可以供给其他的I/O使用,采用这种技术的总线称为分离事务总线(流水总线、悬挂总线、包交换总线)
- 分离事务总线工作过程:(多个请求在1个包内以流水的形式占用总线)
如上图约定地址1出现多长时间之后数据总线上出现数据。 - 定时方式:
- 同步总线和异步总线的选择:
同步总线比异步总线快:🈚️握手协议
考虑:带宽、传输距离和可以连接的设备数量
同步总线:设备的类型较少且距离较近
异步总线:设备类型较多且距离较远
4.2 总线标准和实例
4.3 总线与CPU的连接
I/O总线的物理连接方式由有两种选择:连接到存储器上(更为常见)、连接到Cache上
5. 通道处理机
重要知识点:
1. 什么是通道处理机
2. 为什么使用通道处理机(与其他三种进行比较)
3. 通道的功能
5.1 通道的作用与功能
为什么使用通道?
通道:专门负责整个计算机系统的输入/输出工作【通道处理机只能执行有限的一组输入/输出指令】
- 通道的功能:
- 接收CPU发来的I/O指令,并根据指令要求选择指定的外设与通道连接
5.2 通道的工作过程
重要知识点:
1. 通道程序
2. 广义指令
3. CPU执行程序和通道执行程序的时间关系(与那三种执行方式比较)
完成一次数据传输过程主要分3步:
1. 在用户程序中使用访管指令进入管理程序,由管理程序来编制一个通道程序并启动通道。
- 关于启动I/O指令:
- 启动I/O指令是一条主要的输入输出指令,属于特权指令。
- 首先判断所要使用的通道和子通道是否在线且空闲
- 在上述过程中,如果任何一个地方不正确,就表示该指令没有执行成功,形成相应的条件码并结束启动过程。通道通过检测这些条件码,就能够知道设备为什么没有启动成功。
2.通道处理机执行通道程序,完成指定的数据输入输出工作
如下图所示,通道处理机执行通道程序与CPU执行用户程序是并行的。通道被启动后,CPU就可以推出管理程序,返回到用户程序继续执行,而通道程序进入通道数据传送期,开始进行与设备的数据传送。执行完通道程序最后一条通道指令==“无链通道指令”时,通道的数据传输工作就全部结束了。通道进入数据传送结束期==。
3. 通道程序结束后向CPU发送中断请求
数据传送完成后,通道向CPU发I/O中断请求。CPU响应该中断请求,再次进入管态,调用相应的管理程序对该中断请求进行处理。如果正常结束,管理程序进行必要的登记等工作;如果是故障、错误等异常情况,则进行异常处理。然后,CPU返回到目态,继续进行目态程序的执行。
把握要点:
1. 谁编制的通道程序?根据什么进行编制?
2. 通道程序编制好之后放在哪里?
3. 通道处理机接下来应该如何工作?
4. 通道的工作完成了之后它做了什么?
5.3 通道的种类
5.4 通道流量分析
key:
1. 通道流量:一个通道在数据传送期间,单位时间内能够传送的数据量,单位Bps(字节/秒)
2. 通道最大流量:一个通道在满负荷下的流量,通道最大流量是通道的属性(无论客观环境如何变化它本身是不变的(主要与通道的种类、通道选择设备1次所用的时间、传送一个字节所用的时间等因素有关)
3. 通道的实际流量:通道实际的工作流量
4. 三种通道的流量分析
1. 字节多路通道
2. 选择通道
3. 多路选择通道
6. I/O与操作系统
- 操作系统的作用之一是多进程之间进行进程保护,这种保护包括存储器访问和I/O操作两个方面。由于I/O操作主要是在外设和存储器之间进行,所以操作系统必须保证这些I/O操作的安全性。
- 设计I/O系统需要考虑操作系统的因素
6.1 DMA和虚拟存储器
- DMA是使用虚拟地址还是物理地址来传输数据?如果使用物理地址存在的问题?
- 当数据缓冲区大小超过1页时,由于缓冲区所使用的多个页面在物理存储器中不一定是连续的,所以传输可能会出现问题
- 如果DMA正在存储器和缓冲区之间传输数据时,操作系统从存储器中移出(或重定位)一些页面,那么DMA将会在存储器中错误的物理页面上进行传输
如果进程在内存中被移动,操作系统应该能够及时的修改相应的DMA地址表。
还有一种不咋地的方法:
6.2 I/O和Cache数据一致性
背景:
Cache数据一致性问题,由于Cache中的数据有两份:一份在主存中、一份在Cache中。
写直达法:二者一致
写回法:二者不一致,但是早晚得一致
- 加入I/O操作后存在的问题:
如果把I/O连接到Cache上,CPU会和I/O竞争访问Cache,在进行I/O时,会造成CPU的停顿;而且I/O还可能会破坏Cache中CPU访问的内容(因为I/O操作可能导致一些新数据被加入Cache,而这些新数据在近期并不会被CPU访问),因此许多计算机还是把I/O连接到存储器上,把存储器的一片区域作为I/O缓冲器,从而减少对CPU的打扰,并设法解决数据不一致的问题。
- 无论写回还是写直达,解决一致性的方法: