假设磁盘块与缓冲区大小相同,每个盘块读入缓冲区的时间为 16us, 由缓冲区送至用户区的时间是 5us,在用户区内系统对每块数据的处理时间为 1us.若用户需要将大小为 10 个磁盘 块的 Doc1 文件逐块从磁盘读入缓冲区,并送至用户区进行处理,那么采用单缓冲区需要花费的时间为(  )us: 采用双缓冲区需要花费的时间为,( 请作答此空)us.

1050 次浏览
  • A、160
  • B、161
  • C、166
  • D、211
这是一个简单的缓冲区的问题。由于缓冲区的访问是互斥的,所以对单一缓冲区,从磁盘写入和读出到用户区的操作必须串行执行,也就是要保证互斥操作。而CPU对数据的分析与从用户区读数据也是需要互斥操作,但是CPU分析与从磁盘写入缓冲区的操作可以并行。从本题看,由于分析所用的时间小于从磁盘写入缓冲区的时间,因此,CPU会空闲。单缓冲区的总时间=(磁盘写入缓冲区时间+缓冲区读出时间)×10+CPU处理最后一块数据的时间=(16+5)×10+1=211μs。当采用双缓冲区时,每块缓冲区的操作也必须满足互斥操作,但是,对两块缓冲区的操作却可以并行,所以,当第一个缓冲区写满以后,磁盘紧接着写另一个缓冲区,同时,前一个已经满了的缓冲区被读出到用户区,并立即进行CPU的数据分析。读出操作和数据分析必须互斥进行,故,从时间上看,当数据被读出并分析后,恰好另一个缓冲区也写满了,可以立即进行读出数据到用户区并进行数据分析。两块缓冲区交替进行读写,直到数据分析完毕,因此,总时间=(磁盘写入缓冲区时间)×10+读出最后一块数据时间+CPU分析最后一块数据时间=(16)×10+5+1=166s。
挑战成功
2年前
挑战失败
2年前
挑战失败
2年前