多处理器SMP系统结构--处理器间的同步与互斥

1.单处理器结构中的同步于互斥

各个进程在宏观上并性,微观上串行。在同一时间点上,只有一个进程正在运行,因此称为“并发”。保证进程间的同步与互斥是比较容易的。只要保证在对临界资源的操作中途不会发生进程调度,不会发生中断,或者即使发生了中断,也与操作对象无关,那也保证了操作的互斥性。只要对临界资源的操作能在单条指令中完成,那就保证了操作的互斥性,因为中断发生在指令之间,不会发生于一条指令的执行途中。

2.多处理器结构中的同步于互斥

多处理器的SMP结构相对于单处理器,“分辨率”会更高。

2.1 对于i386 CPU在执行期间,通过对总线加锁的方式实现互斥操作:

  • 在汇编程序中一条指令之前面加前缀“LOCK”:CPU在执行这条指令时把引线LOCK的电位拉低,同一总线上别的CPU不能通过总线访问内存。
  • 总线加锁特例:xchg指令,将一个内存单元中的内容与一个寄存器的内容对换,常用于内核信号量的操作。在执行xchg指令时,会自动锁住总线。例如:

2.2 “内存路障”(memory barrier)

高速缓存的使用可能会使实际的内存操作改变次序,在SMP结构中,这种次序的改变也可能影响到CPU间的同步与互斥。

从访问内存的角度看,这就使得CPU可能会有一些逻辑上已经完成,但物理上尚未实现的内存操作。如何解决这类问题?

通过“内存路障”(memory barrier)。

  • 隐示memory barrier方式:所有对系统总线加锁的操作;一些特殊的指令和操作:iret,cpuid,sfense
  • 显示memory barrier方式:mb()/rmb()/wmb()
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值