[理工] OS Disable interrupt

楼主: jerry900287 (卤蛋)   2017-11-12 11:47:02
想请教各位大大们
小弟在读 OS "Race Condition" Problem 的时候
针对两大策略 Disable Interrupt 和 Critical Section Design
的 Disable Interrupt 有个疑问
作者: can18 (18号)   2017-11-12 12:00:00
这边我之前也有相同疑问我自己觉得这边是有bug上网查有一个实作的方法是 CPU1 会lock memory bus 不让 CPU2 去读写
作者: TMDTMD2487 (ㄚ冰)   2017-11-12 12:29:00
基本上上课没讲都默认单处理器做讨论的样子多核多处理器可能不能讲得这么简单因因为还有cache还有TLB要做同步,就会变成另一个大课题至少你lock bus但别颗处理器有它自己的cache你也要想办法让他不能对再cache的共享变量做存取
作者: nat99up (NAt)   2017-11-12 12:34:00
Disable interrupt是走硬件控制 跟变量存取没有直接关系
作者: TMDTMD2487 (ㄚ冰)   2017-11-12 12:37:00
可是现在有很多颗cpu你关掉了还是会同时有多个在run只是单核心就只会有一个在run所以关掉中断可以很简单的解决共享变量存取的问题
作者: can18 (18号)   2017-11-12 12:40:00
不过我记得课本有提到多处理器不太适合用disable interrupt
作者: TMDTMD2487 (ㄚ冰)   2017-11-12 12:41:00
因为就像我讲的你会让你的每个cpu都有诸多的限制
作者: nat99up (NAt)   2017-11-12 12:41:00
多处理器要关就要全关...然后users就可开轰趴了哈哈
作者: TMDTMD2487 (ㄚ冰)   2017-11-12 12:43:00
单纯的关掉所有cpu中断不能解决欧会存取共享变量的程式还是同时在执行中
作者: nat99up (NAt)   2017-11-12 12:44:00
只要其他颗上的process不参与到那个共享变量就可以吧
作者: TMDTMD2487 (ㄚ冰)   2017-11-12 12:44:00
没问题的把cpu都power down就可以解决了XD可是你不知道别颗cpu上的process会不会存取压
作者: nat99up (NAt)   2017-11-12 12:46:00
都可以把别颗CPU的中断关掉了知道这点应该不难哈哈哈
作者: TMDTMD2487 (ㄚ冰)   2017-11-12 12:46:00
把中断关掉他们还是可以读memory的押
作者: can18 (18号)   2017-11-12 12:47:00
想法同t大 基本上要转成类似单核的模式disable才有用
作者: TMDTMD2487 (ㄚ冰)   2017-11-12 12:48:00
对呀所以要lock住data bus
作者: nat99up (NAt)   2017-11-12 12:48:00
我的意思是确保其他颗上process没参与这个变量就可以啦
作者: can18 (18号)   2017-11-12 12:49:00
要怎么确保 啊如果有参与的话怎么办基本上除了把其他cpu关掉跟锁bus无法确保吧
作者: nat99up (NAt)   2017-11-12 12:50:00
把别人的PCB抓出来看 但讨论这个也太没意义XD
作者: TMDTMD2487 (ㄚ冰)   2017-11-12 12:50:00
明明就有很棒的cs设计为什么我们要执著在关掉中断呢XD
作者: can18 (18号)   2017-11-12 12:52:00
我只是觉得 n 大的方法比关cpu还复杂XD
作者: nat99up (NAt)   2017-11-12 12:53:00
当然啊哈哈 只是帮这个方法找个借口说他堪用
作者: TMDTMD2487 (ㄚ冰)   2017-11-12 12:53:00
通常越简单的方法效率越低XD
作者: can18 (18号)   2017-11-12 12:57:00
弘毅优点是都讲很顺 不过有些都会有小bug
作者: TMDTMD2487 (ㄚ冰)   2017-11-12 12:59:00
是没么小bug拉跟他的书比起来xd
作者: nat99up (NAt)   2017-11-12 13:01:00
OS课本的背面最扯
作者: leoone (里欧一代)   2017-11-12 13:37:00
无法OS就是个理论性质的学科 拿到实际面本来就很多bug 举个例子 实际上是没有kernel thread这种东西的
作者: shownlin (哈哈阿喔)   2017-11-12 16:00:00
我记得洪逸上课不是有说多处理器不适合吗,所以才接后面的临界区间设计...
作者: TWkobe (中华柯比)   2017-11-22 19:15:00
多处理器一般会在cpu上多一个port叫bus lock谁先抢到会先锁住bus然后就可以安心disable自己的interrup

Links booklink

Contact Us: admin [ a t ] ucptt.com