作者phterry (小风)
看板LinuxDev
标题Re: [问题] device和interrupt相关资讯的问题...
时间Wed Feb 18 14:43:01 2009
※ 引述《babuturtle (babuturtle)》之铭言:
: 会注意到是因为有朋友去面试linux driver相关的工作的时候被问到
: 後来查了一下这问题应该是从网路抓出来的 有点像是大学期中期末会出的那种考题
: 虽然怎麽看都像是书上的问题但是不清楚是哪本...
: 而且以观念上来说应该是不限定linux啦
: http://6004.csail.mit.edu/currentsemester/tutprobs/realtime.html
: 在这边简单把问题po一下 附上英文原文免得我的烂英文翻错有人能指正
: A computer system has three devices whose characteristics are summarized
: in the following table:
: 一个电脑系统有三个装置 特性如下表所示:
: 装置 服务时间 中断频率 被允许的latency...?
: Device Service Time Interrupt Frequency Allowable Latency
: D1 400 us 1/(800us) 400us
: D2 250 us 1/(1000us) 50us
: D3 100 us 1/(800us) 300us
: Service time indicates how long it takes to run the interrupt handler for
: each device. The maximum time allowed to elapse between an interrupt request
: and the start of the interrupt handler is indicated by allowable latency.
: 服务时间表示每个装置去跑中断函式所需要花的时间
: 而呼叫中断到开始进行中断函式之间的最大时限则是由allowable latency决定
: (1)
: If a program P takes 100 seconds to execute when interrupts are disabled,
: how long will P take to run when interrupts are enabled?
: 如果一个程式P 在中断被关闭的时候需要花100秒去执行
: 在中断被开启後P要花多少时间去执行?
: Ans:
: 这个还ok
: 就D1 D2 D3中断的服务时间x中断频率
: D1:400us * 1/(800us)=0.5 表示D1占用CPU 50%
: D2:250us * 1/(1000us)=0.25 表示D2占用CPU 25%
: D3:100us * 1/(800us)=0.125 表示D3占用CPU 12.5%
: 还剩下12.5%可以给P用
: (1/0.125)*100=800秒
: (2)
: Can the requirements given in the table above be met using a weak priority
: ordering among the interrupt requests?
: 根据上表 我们可以在中断要求的时候采用weak优先权吗?
: Ans:
: No. Once D1 or D3 start running, we will miss allowable latency for D2
: (3)
: Can the requirements given in the table above be met using a strong priority
: ordering among the interrupt requests?
: 根据上表 我们可以在中断要求的时候采用强制优先权吗?
: Ans:
: Yes, if priority is D2 > D3 > D1.
: 主要是(2) (3)两个问题的答案我不清楚原因是甚麽...
: 关键应该是Allowable Latency这名词
: 不知道有没有前辈能稍微解释一下Allowable Latency对於中断要求的影响...
(2) (3) 这两个问题是针对 Service Time 和 Allowable Latency 这两个因素
做一个排序时的考量.
Allowable Latency 就是中断要求发生後, 到开始 service 的等待容许时间,
这跟你所翻译的内容是一致的, 你可以把中断要求想成一个买东西的过程,
D1, D2, D3 分别是三个不同性格的客人, 而 service time, 就是每个人在买
东西时, 所花费的时间(有的人喜欢问东问西, 有的人喜欢速战速决),
Allowable Latency 则是每个人能够等待的时间. 有一天, 他们三个人一起到
达商店买东西, 窗口只有一个(CPU只有一颗), 所以一次只能服务一个客人,
如果店家想的单纯些的(weak priority ordering), 只看客人买东西的速度
(亦即 service time) 来决定先让买最快的客人先买的话, 会发现, D3先买的
话(D1先买亦同), D2 一定会等不及跑掉, 而没有办法让三个客人都买到东西.
这是第二题的原因. interrupt 发生之後, 如果 D2 不能优先处理, 则 D2
的 interrupt 会常常遗失.
然而, 第三题, 店家在常常流失顾客之际, 也开始会观查别的因素, 於是, 除
了看 service time 之外, 还去看 allowable latency, 然後发现了唯一能让
三个客户都 service 到的方法, 就是 D2 > D3 > D1
当 D2 执行完时, D1 及 D3 分别等了 250 us, 但都在他们的容许范围内.
换 D3 执行完时, D1 一共等了 350 us, 也还在 D1 的容许范围内.
最後 D1 执行...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.249.207.134
1F:推 babuturtle:解释的好清楚 非常感谢m(_ _)m 02/18 14:56