手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

详谈Linux 2_4_x内核信号量机制

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

这个场景中,我们发现一个有意思的事情,就是进程A先于进程B进入加锁范围,但反而是进程B首先被唤醒,但由于进程A和进程B分别运行于不同的CPU,且企图获得该信号量的时间基本相同,所以出现这种情况也没什么大的关系。

也许有人会问,在实际情况中,上面说的这些场景真的有可能发生吗?考虑到当某个进程运行到上述的一个特定点,此时在这个CPU上发生中断,该CPU转而去 处理这个中断(当然他处理完中断还是会从这个特定点继续向下运行的,另外这个特定点也不会在加锁范围之内,因为spin_lock_irq函数会执行一句 cli来关掉中断),这时另一个CPU的进程没有中断打断,而继续运行,上面描述的场景就发生了。虽然这种几率是很小的,但操作系统的实现过程中,却不 得不考虑他们。

通过上面十二个场景,我们能够看到有关内核信号量的代码,虽然不长,但需要考虑的情况却要如此的复杂而全面。我希望通过这篇文章,能够对正在阅读Linux源代码的朋友们,多少提供一些帮助。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!