一、磁盘调度算法计算题

题目:假定磁盘有200个柱面,编号0~199,当前存取臂的位置在143号柱面上,并刚刚完成了125号柱面的服务请求,如果请求队列的先后顺序是:86,147,91,177,94,150,102,175,130;试问:为完成上述请求,下列算法存取臂移动的总量是多少?并算出存取臂移动的顺序。 (1)先来先服务算法FCFS; (2)最短查找时间优先算法SSTF; (3)扫描算法SCAN; (4)电梯调度。

参考答案: (1) 先来先服务算法FCFS:移动总量为565,移动顺序依次为143-86-147-91-177-94-150-102-175-130。 (2) 最短查找时间优先算法SSTF:移动总量为162,移动顺序依次为143-147-150-130-102-94-91-86-175-177。 (3) 扫描算法SCAN:移动总量为169,移动顺序依次为143-147-150-175-177-199-130-102-94-91-86。 (4) 电梯调度:

  • 先向地址大的方向:移动总量为125,移动顺序依次为143-147-150-175-177-102-94-91-86;
  • 先向地址小的方向:移动总量为148,移动顺序依次为143-130-102-94-91-86-147-150-175-177。

二、UNIX文件字节偏移量转物理地址计算题

题目:在UNIX中,如果一个盘块的大小为1KB,每个盘块号占4个字节,即每块可放256个地址。请转换下列文件的字节偏移量为物理地址:(1)9999;(2)18000;(3)420000。

解题步骤: 步1 将逻辑文件的字节偏移量转换为文件的逻辑块号和块内偏移。方法是:将逻辑文件的字节偏移量/盘块大小,商为文件的逻辑块号,余数是块内偏移。 步2 将文件的逻辑块号转换为物理块号。使用多重索引结构,在索引节点中根据逻辑块号通过直接索引或间接索引找到对应物理块号。

参考答案: (1) 9999:,其逻辑块号为9,故直接索引addr[8]中可找到物理块号。 (2) 18000:,其逻辑块号为17,通过一次间接索引addr[10]中可找到物理块号。 (3) 420000:,其逻辑块号为410,通过二次间接索引addr[11]中可找到物理块号。

三、CPU与外设I/O时间占比计算题(10分)

题目:某计算机CPU主频为1GHz,所连接的某外设的最大数据传输率为40kBps,该外设接口中有一个32位的数据缓存器,相应的中断服务程序的执行时间为500个时钟周期。请回答下列问题: (1) CPU用于该设备进行输入/输出的时间占整个CPU时间的百分比大约为多少?是否可用中断方式进行该外设的输入输出? (2) 若该外设的最大数据传输率提高到4MBps,此时采用周期挪用DMA方式进行输入/输出,每挪用一个周期传送一个32位数据,一次DMA传送完成1000字节的数据传送,DMA初始化和后处理的时间为2000个时钟周期,不考虑访存冲突,则CPU用于该设备进行输入/输出的时间占整个CPU时间的百分比大约为多少?

参考答案(1)

因为该外设接口中有一个32位数据缓存器,所以,若用中断方式进行输入/输出的话,可以每32位数据进行一次中断请求,因此,中断请求的时间间隔为

对应的中断服务程序的执行时间为 ,因为中断响应过程就是执行一条隐指令的过程,所用时间相对于中断处理时间(即执行中断服务程序的时间)而言,几乎可以忽略不计,因而整个中断响应并处理的时间大约1µs多一点,远远小于中断请求的间隔时间。因此,可以用中断方式进行该外设的输入输出

若用中断方式进行该设备的输入/输出,则该设备持续工作期间,CPU用于该设备进行输入/输出的时间占整个CPU时间的百分比大约为 (也可以通过考察1秒钟内500M个时钟周期中有多少时钟周期用于中断来计算百分比,其计算公式为 )。

参考答案(2)

若外设的最大传输率为4MBps,则中断请求的时间间隔为 。而整个中断响应并处理的时间大约0.5µs多一点,中断请求的间隔时间和中断响应处理时间太接近,虽然可以用中断方式进行该外设的输入输出,但不太合适。

若用周期挪用DMA方式,则:

  1. 一秒钟内产生的DMA次数为
  2. 每次DMA传送前都需要2000个时钟周期进行DMA初始化和DMA结束处理,所以,CPU用于DMA处理的总开销为 个时钟周期;
  3. 而CPU的时钟频率为1GHz,即CPU每秒钟内产生1000M个时钟周期,故CPU用于该外设I/O的时间占整个CPU时间的百分比 (也可通过考察相邻两次DMA请求间隔时间内CPU用于该外设I/O的时间来计算,即 )。