互斥:硬件方法总结

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 

在这里插入图片描述

评价

优点

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

缺点

  • 存在忙等
  • 可能出现饥饿
  • 可能出现死锁
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值