正确答案:B
答案解析:这是一个简单的缓冲区的问题。由于缓冲区的访问是互斥的,所以对单一缓冲区,从磁盘写入和读出到用户区的操作必须串行执行,也就是要保证互斥操作。而CPU对数据的分析与从用户区读数据也是需要互斥操作,但是CPU分析与从磁盘写入缓冲区的操作可以并行。从本题看,由于分析所用的时间小于从磁盘写入缓冲区的时间,因此,CPU会空闲。单缓冲区的总时间一(磁盘写入缓冲区时间十缓冲区读出时间)×100+CPU处理最后一块数据的时间=(200+100)×100+100=30 100μs。当采用双缓冲区时,每块缓冲区的操作也必须满足互斥操作,但是,对两块缓冲区的操作却可以并行,所以,当第一个缓冲区写满以后,磁盘紧接着写另一个缓冲区,同时,前一个已经满了的缓冲区被读出到用户区,并立即进行CPU的数据分析。读出操作和数据分析必须互斥进行,故,从时间上看,当数据被读出并分析后,恰好另一个缓冲区也写满了,可以立即进行读出数据到用户区并进行数据分析。两块缓冲区交替进行读写,直到数据分析完毕,因此,总时间一(磁盘写入缓冲区时间)×100+读出最后一块数据时间+CPU分析最后一块数据时间=(200)×100+100+100=20200μs。
|