问答题 在某系统中,从磁盘将一块数据输入到缓冲区需要花费的时间为T,CPU将对一块数据进行处理的时间为C,将缓冲区的数据传送到用户区所花时间为M,那么在单缓冲和双缓冲情况下,系统处理大量数据时,一块数据的处理时间为多少?
【正确答案】在无缓冲的情况下,为了读取磁盘数据,应先从磁盘把一块数据输入到用户数据区,所花费的时间为T;然后再由CPY对这一块数据进行计算,计算时间为C,所以每一块数据的处理时间为T+C。 ●在单缓冲的情况下,应先从磁盘把一块数据输入到缓冲区,所花费的时间为T;然后由操作系统将缓冲区的数据传送到用户区,其所花费的时间为M;接下来,便由CPU对这一块数据进行计算,计算时间为C。由于第i次读磁盘数据送至缓冲区时,系统同时读出用户区中第i-1次数据计算,此两项操作可以并行,并与数据从缓冲区传送到用户区的操作串行进行,因此一块数据的处理时间为MAX(C,T)+M。 ●在双缓冲的情况下,应先从磁盘把一块数据输入到第一个缓冲区,当装满第一个缓冲区后,操作系统可以将第一个缓冲区的数据传送到用户区并对第一块数据进行计算,与此同时可以将磁盘输入数据送入第二个缓冲区;当计算完成后,若第二个缓冲区已装满数据,则又可以将第二个缓冲区中的数据传送至用户区并对第二块数据进行计算,与此同时可以将磁盘输入数据送入第一个缓冲区,如此反复交替使用两个缓冲区。 其中将数据从缓冲区传送到用户区的操作与用户区数据处理是串行的,它们又可以与从磁盘传送数据到缓冲区的操作并行,因此大约耗时为MAX(C+M,T)。考虑到内存中数据块的“搬家”耗时非常短,因此M可以忽略,故近似看成是MAX(C,T)。
【答案解析】