第1节 流程控制问题
推荐给好友
打印
加入收藏
更新于2008-05-17 22:40:28

信号量的实现

信号量的实现必然会提醒注意一个基本仲裁问题:当某个信号出现时,怎样在同时等待的进程中进行选择呢?这涉及到实现技术中的一些基本原子性假设。

 
方法:

SVC实现,利用核心处理程序的原子性。引进分时处理器来共享单个非中断的内核。

通过特殊指令(比如,“测试和设置”)来实现,利用单条指令执行的原子性。与支持原子性的“读-修改-写”总线事务处理的共享总线多处理器一起工作。

 利用单独的读或者写操作的原子性来实现。由Dijkstra设计的复杂、智能的2阶段方案在实践中并未使用。

 自举:某个锁(“二进制信号量”)允许轻松地实现对全部信号量的支持。

将信号量作为管理程序进行调用

调用序列

将锁的地址

放入到R0中

CMOVE(lock, R0)

SVC(WAIT)

SVC调用是不可中断的,因为它在管理模式中执行。

 

<<上一节   下一节 >> 




 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.