当前位置: 技术问答>linux和unix
如何在SMP系统下,锁住其他CPU,只让一颗CPU工作?
来源: 互联网 发布时间:2015-12-07
本文导语: 需要执行一些特殊的硬件操作,必须只有一颗CPU工作不知到如何作? | 也mark一下下 :) 其实并不存在真的能锁住其它CPU 的指令,只能是锁住总线,因为总线是共享的,中断是每个CPU自有的...
需要执行一些特殊的硬件操作,必须只有一颗CPU工作不知到如何作?
|
也mark一下下 :)
其实并不存在真的能锁住其它CPU 的指令,只能是锁住总线,因为总线是共享的,中断是每个CPU自有的,锁中断并不能锁住CPU ,锁总线汇编指令好像是lock, 但我觉得你不外乎要保护数据的存取呀,可以采用spinlock_t 也是锁总线的操作,另外还有 barrier 都可以保证你的数据正确写到device register 的。
其实并不存在真的能锁住其它CPU 的指令,只能是锁住总线,因为总线是共享的,中断是每个CPU自有的,锁中断并不能锁住CPU ,锁总线汇编指令好像是lock, 但我觉得你不外乎要保护数据的存取呀,可以采用spinlock_t 也是锁总线的操作,另外还有 barrier 都可以保证你的数据正确写到device register 的。
|
一个进程在一个CPU上运行,你只要保证当前系统只有一个进程在运行当然就只有一个CPU在用。
如果你是在内核中你只要简单的关闭中断就行,你如果在用户层好像就没有什么办法可以控制了。
如果你是在内核中你只要简单的关闭中断就行,你如果在用户层好像就没有什么办法可以控制了。
|
http://www.tldp.org/HOWTO/SMP-HOWTO.html#toc4
http://www.linuxforum.net/forum/showthreaded.php?Board=linuxK&Number=453875&page=0&view=collapsed&sb=9