想请教各位大大们
小弟在读 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 去读写
基本上上课没讲都默认单处理器做讨论的样子多核多处理器可能不能讲得这么简单因因为还有cache还有TLB要做同步,就会变成另一个大课题至少你lock bus但别颗处理器有它自己的cache你也要想办法让他不能对再cache的共享变量做存取
作者:
nat99up (NAt)
2017-11-12 12:34:00Disable interrupt是走硬件控制 跟变量存取没有直接关系
可是现在有很多颗cpu你关掉了还是会同时有多个在run只是单核心就只会有一个在run所以关掉中断可以很简单的解决共享变量存取的问题
作者:
can18 (18号)
2017-11-12 12:40:00不过我记得课本有提到多处理器不太适合用disable interrupt
作者:
nat99up (NAt)
2017-11-12 12:41:00多处理器要关就要全关...然后users就可开轰趴了哈哈
单纯的关掉所有cpu中断不能解决欧会存取共享变量的程式还是同时在执行中
作者:
nat99up (NAt)
2017-11-12 12:44:00只要其他颗上的process不参与到那个共享变量就可以吧
没问题的把cpu都power down就可以解决了XD可是你不知道别颗cpu上的process会不会存取压
作者:
nat99up (NAt)
2017-11-12 12:46:00都可以把别颗CPU的中断关掉了知道这点应该不难哈哈哈
作者:
can18 (18号)
2017-11-12 12:47:00想法同t大 基本上要转成类似单核的模式disable才有用
作者:
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
明明就有很棒的cs设计为什么我们要执著在关掉中断呢XD
作者:
can18 (18号)
2017-11-12 12:52:00我只是觉得 n 大的方法比关cpu还复杂XD
作者:
nat99up (NAt)
2017-11-12 12:53:00当然啊哈哈 只是帮这个方法找个借口说他堪用
作者:
can18 (18号)
2017-11-12 12:57:00弘毅优点是都讲很顺 不过有些都会有小bug
作者:
nat99up (NAt)
2017-11-12 13:01:00OS课本的背面最扯
作者:
leoone (里欧一代)
2017-11-12 13:37:00无法OS就是个理论性质的学科 拿到实际面本来就很多bug 举个例子 实际上是没有kernel thread这种东西的
我记得洪逸上课不是有说多处理器不适合吗,所以才接后面的临界区间设计...
作者:
TWkobe (中华柯比)
2017-11-22 19:15:00多处理器一般会在cpu上多一个port叫bus lock谁先抢到会先锁住bus然后就可以安心disable自己的interrup