互斥:硬件方法总结

2.13.2 互斥:硬件方法

中断禁用(屏蔽中断)
  • 用于单CPU系统
  • 使用屏蔽中断的方法,屏蔽时无法切换进程,达到进程互斥的目的
while (true ) {
        disable interrupt    //屏蔽中断
        critical section          //临界区
        enable interrupt       //启用中断
        remainder                //其余部分
}
评价
  • 显而易见的效率低
  • 屏蔽期间无法响应外部请求
  • 无法切换进程
  • 无法工作在多处理器环境
专用机器指令
  • 处理器设计者指定的两种机器指令,在一个指令周期中执行,不会被打断和受到其他指令干扰
  • 也可用于多处理器环境
  1. 比较指令和交换指令compare_and_swap

比较一个内存单元的值和测试值,相等则交换

int compare_and_swap(int *word, int testval, int newval){
		int oldval; 
		oldval = *word;
		if(oldval == testval) *word = newval;
		return oldval;
}	
  1. 交换指令exchange

原子性交换寄存器和内存的值

procedure exchange(var r: register; var m: memory); 
	var temp; 
	begin 
	temp := m; 
	m := r; 
	r := temp; 
	end 

互斥:硬件方法总结

评价

优点

  • 支持多处理器
  • 简单易证明
  • 支持多临界区

缺点

  • 存在忙等
  • 可能出现饥饿
  • 可能出现死锁
上一篇:vue watch 使用的几种形式


下一篇:arc 045 d 题解