一、磁盘高速缓存
操作系统中使用磁盘高速缓存技术是指利用内存中的存储空间来暂存从磁盘中读出的一系列盘块中的信息,用以提高磁盘的 I/O 速度,对高速缓存复制的访问要比原始数据访问更为高效。
二、缓冲区
(一) 引入缓冲区目的
1. 缓和CPU与 I/O 设备间速度不匹配的矛盾;
2. 减少对CPU的中断频率,放宽对CPU中断响应时间的限制;
3. 解决基本数据单元大小(即数据粒度)不匹配的问题;
4. 提高CPU和 I/O 设备之间的并行性。
(二)分类
1. 单缓冲
设备与处理机之间设置缓冲区,设备和处理机交换数据时,先把被交换的数据写入缓冲区,需要数据的设备或处理机再从缓冲区中取走数据。
2. 双缓冲
设置两个缓冲区,当缓冲区1满时,向缓冲区2中注入数据,只有缓冲区满才能取出数据。
408考研真题:
【2011统考真题】某文件占10个磁盘块,现要把该文件磁盘块逐个读入主存缓冲区,并送用户区进行分析。假设一个缓冲区与一个磁盘块大小相同,把一个磁盘块读入缓冲区时间为100μs,将缓冲区的数据传送到用户区的时间是50μs,CPU对一块数据进行分析的时间为50μs。在单缓冲区和双缓冲区结构下,读入并分析完该文件的时间分别是( )。
A. 1500μs, 1000μs B. 1550μs, 1100μs C. 1550μs, 1550μs D. 2000μs, 2000μs
答案:B
解:单缓冲区:(当上一个磁盘块从缓冲区读入用户区完成时,下一磁盘块才能开始读入)
使用时间 = max(C, T) + M = max(50, 100) + 50 = 150μs
文件占10个磁盘块,
1个磁盘块读入用户区的时间为150μs,10个磁盘块则为10*150=1500μs
加上处理最后一个磁盘块的时间50 μs
即1500 μs + 50 μs = 1550 μs
双缓冲区:(不存在等待磁盘块从缓冲区读入用户区的问题)
10个磁盘块可以连续从外存读入主存缓冲区,即1个磁盘块读入缓冲区时间为100μs,10个磁盘则是100 * 10 = 1000μs
加上最后一个磁盘块从缓冲区送到用户区的传输时间50μs,再加上CPU对一块数据进行分析的时间为50μs,一共1000 + 50 + 50 = 1100μs
【2013统考真题】设系统缓冲区和用户工作区均采用单缓冲,从外设读入一个数据块到系统缓冲区的时间为 100,从系统缓冲区读入一个数据块到用户工作区的时间为 5, 对用户工作区中的 一个数据块进行分析的时间为 90(如下图所示)。进程从外设读入并分析 2 个数据块的最短时间是( )。
A. 200 B. 295 C. 300 D. 390
答案:C
解:单缓冲:
第1个数据块从外设到用户工作区的总时间为100 + 5 = 105
在这段时间内,第2个数据块未进行操作。在第1个数据块在用户区进行分析时,第2个数据块从外设到用户工作区的时间为105,两段时间并行。
(第1个数据块在用户区进行分析90 < 第2个数据块从外设到用户工作区的时间为105,取105)再加上第2个数据块在用户区的分析时间90,即105 + 105 + 90 = 300
3. 循环缓冲
包含多个大小相等的缓冲区,每个缓冲区中有一个链接指针指向下一个缓冲区,最后一个缓冲区指针指向第一个缓冲区,多个缓冲区构成一个环形。
4. 缓冲池(可看下面两个链接)
操作系统I/O中的缓冲池
三、磁盘高速缓存与缓冲区的对比
(一)相同点——都介于高速设备与低速设备之间。
(二)不同点
不同点 | 高速缓存 | 缓冲区 |
存放数据 | 存放的是低速设备上某些数据的复制数据(高速缓存上有的,低速设备必有) | 低速设备传递给高速设备的数据(或相反),而这些数据在低速设备(或高速设备)上不一定有备份,这些数据再从缓冲区传送到高速设备(或低速设备)上 |
目的 | 存放的是低速设备经常访问的数据,若高速设备要访问的数据不在高速缓存中,则高速设备需要访问低速设备 | 高速设备与低速设备的通信都要经过缓冲区,高速设备永远不会直接去访问低速设备 |
四、设备分配的数据结构
设备分配依据的主要数据结构有4个:
1. 设备控制表(DCT)
2.控制器控制表(COCT)
3. 通道控制表(CHCT)
4. 系统设备表(SDT)
由于在多道程序中,进程数多于资源数,会此起资源的竞争,因此要有一套合理的分配原则,主要考虑的因素有:
1. I/O设备的固有属性;
2. I/O设备的分配算法;
3. I/O设备分配的安全性;
4. I/O设备的独立性。