操作系统-进程互斥的硬件实现方法与锁( 中断屏蔽方法 TestAndSet指令 Swap指令 互斥锁)

总览

在这里插入图片描述

中断屏蔽方法

不适应于多处理机:多处理机上的不同处理机进程也有,可能执行关中断然后访问临界区资源,这样就存在多个进程同时访问临界资源了
在这里插入图片描述

TestAndSet指令

Test-and-Set是一种特殊的硬件指令,用于实现进程间的互斥。它通常被用于控制对共享资源(临界资源)的访问。

具体来说,Test-and-Set指令包含两个步骤:

测试步骤:检查指定的内存地址(通常是某个标志位)的当前值。
设置步骤:将该内存地址设置为1(或某个预设的值)。
这两个步骤构成一个原子操作,即在执行过程中不会被其他处理器中断,确保了操作的同步性。

Test-and-Set指令通常应用于以下场景:

当进程需要进入临界区时,它会执行Test-and-Set指令来检查锁的状态。
如果返回的旧值为0(表示锁未被占用),则进程进入临界区,并将锁设置为1,防止其他进程进入。
当进程离开临界区时,它会将锁设置为0(解锁),允许其他进程进入。

让权等待:依然在不能访问临界区的时候仍在while循环中,导致占用CPU

在这里插入图片描述

适用于多处理机的原因

TestAndSet指令适用于多处理机,因为它提供了一种机制来确保在多处理器环境下对共享资源的互斥访问。

首先,TestAndSet指令是一个原子操作,这意味着在执行这个指令时,不会被其他进程或处理器中断。这个特性在多处理机系统中尤为重要,因为多个处理器可能同时尝试访问同一个共享资源。通过使用TestAndSet指令,可以确保在任何时候只有一个处理器能够修改共享资源的状态。

其次,TestAndSet指令允许处理器直接与内存进行交互,而不需要经过操作系统的干预。这使得它在多处理机环境中非常有用,因为它可以减少对操作系统内核的依赖,从而提高系统的效率和响应速度。

最后,虽然TestAndSet指令在某些情况下可能不适用于用户进程,但在多处理机系统的内核进程中,它仍然是一个非常有价值的工具,用于实现对临界资源的互斥访问。

Swap指令

将lock的值给old(对应此时临界区的上锁状态),然后lock值被设为true,因为old值最开始被设为true了,然后再检查lock
在这里插入图片描述

小结

在这里插入图片描述

进程互斥:锁

在这里插入图片描述
忙等待期间如果发生临界区解锁了,那么不需要切换进程上下文了。这样相比等待代价很低。而如果是忙等待期间就让其下处理机并切换进程,那么如果此时正好临界区解锁了,那么又得切换回到原来要访问临界区资源处于忙等待得进程才可以使用临界区(当然,这样得前提是有进程上锁后使用临界区和解锁的总共时间较短,如此其他进程忙等待时间就比较短)

单处理机不适用:因为忙等待期间其他进程即使要解锁要得等忙等待时间结束才行
在这里插入图片描述

  • 18
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

看星猩的柴狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值