单/双缓冲区的处理时间问题
设备管理中的计算题:
1、(选自2011年统考真题)某文件占10个磁盘块,现要把该文件磁盘块逐个读入主存缓冲区,并送用户区进行分析,将缓冲区的数据传送到用户区的时间是50μs,CPU对一块数据进行分析的时间为50μs。在单缓冲区和双缓冲区结构下,读入并分析完该文件的时间分别是(B)
A、1500μs, 1000μs
B、1550μs, 1100μs
C、1550μs, 1550μs
D、2000μs, 2000μs
解:
图a 为单缓冲,图b为双缓冲。每个标号的格子长度为100,没标号的格子长度为50,代表对应处理步骤所需的时间(单位为μs)
在单缓冲的情况下,当上一个磁盘块从缓冲区读入用户区完成时下一磁盘块才能开始读入,将读入缓冲区和传送用户区作为一个单元,共有10个这样的单元,也就是150 x 10μs = 1500μs,加上最后一个磁盘块的CPU处理时间50μs,得1550μs。
在双缓冲的情况下,读入第一个缓冲区之后可以立即开始读入第二个缓冲区,读完第二个缓冲区之后,第一个缓冲区已经把数据传送至用户区,第一个缓冲区空闲,可以立即开始继续将数据读入第一个缓冲区中,因此不存在等待磁盘块从缓冲区读入用户区的问题,得到传输数据全部传输到缓冲区的时间100 x 10μs = 1000μs, 再加上将最后一个缓冲区的数据传输到用户区并由CPU处理完的时间(50 + 50)μs = 100μs ,得1100μs
我的理解:
缓冲区问题主要是看T M C三个时间的关系
T: dev(ice) → buffer
M: buf → work
C: CPU process
在单块数据的处理中:
单缓冲の时间 = max ( C , T ) + M ; 双缓冲の时间 = max ( C + M , T )
在多块数据的处理中,对于一个数据时间同上,但总时间有变化,最后总会有不在单位处理时间(即单块数据的处理时间)的时间部分。
此时利用甘特图(上答案图)图解
2、(选自2013年统考真题)设系统缓冲区和用户工作区均采用单缓冲,从外设读入一个数据块到系统缓冲区的时间为100,从系统缓冲区读入1个数据块到用户工作区的时间为5, 对用户工作区中的1个数据块进行分析的时间为90(见下图),进程从外设读入并分析2个数据块的最短时间是(C)
A. 200
B. 295
C. 300
D. 390
解题方法可以仿照第一个题的图解:
计算可得 100 + 5 + 100 + 5 + 90 = 300
数据块1从外设到用户工作区的总时间为105,在这段时间中,系统缓冲区均被数据块1占据,因此对数据块2无法进行操作。但在数据块1在用户工作区进行分析处理时(时间90),系统缓冲区已空闲下来,可以让数据块2从外设读入到系统缓冲区,相当于数据块2的整个处理时间比串行执行时节省了90的时间。又1个数据串行执行时,所需时间为100 + 5 + 90 = 195, 第二块的处理时间为195 - 90 = 105, 合计195 + 105 = 300,即进程从外设读入并分析2个数据块的最短时间为300。
我的理解:甘特图太好用了