操作系统复习2.3.2-临界区的软件硬件实现方法

文章讨论了多种软件方法来实现进程对临界区的访问控制,包括单标志法、双标志先检查和后检查、Peterson算法、中断屏蔽以及TestAndSet和Swap指令。这些方法旨在防止多个进程同时进入临界区,但各自存在如空闲让进、忙则等待等原则的问题,或者适用场景限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

软件实现方法

思想

在进入区设置并检查一些标志来得知是否有进程已经在临界区,有则循环检查等待,无则直接进入,进程进入/离开临界区时修改标志

单标志法

在这里插入图片描述
通过标记进程号来实现控制只有一个进程能够进行临界区,但会出现P0进程进入临界区,但它实际上不需要访问,违反了空闲让进

双标志先检查

在这里插入图片描述
通过记录进程进入临界区的意愿来让其进入临界区,但会造成两个进程同时访问临界区,违反忙则等待

双标志后检查

在这里插入图片描述
造成两个进程都进不了临界区,违反空闲让进和有限等待

Peterson算法

在这里插入图片描述
要点在于,主动争取,主动谦让,其实挺矛盾的,违背了让权等待原则

中断屏蔽

就是前面提到的关中断和开中断,简单高效,但不适用于多处理机,只适用于操作系统内核进程,不适用于用户进程,这组指令只能运行在内核态

TestAndSet

在这里插入图片描述
又称TSL指令/TS指令
假设lock为false,代表资源空闲,可被访问,访问后设lock为true,其他进程需要等待
假设lock为true,代表资源在被访问,需要等待,将lock设为true,上锁和检查在一个TSL指令完成,原子操作,但不符合让权等待。
实际上操作是这样的:先取出当时的锁值,并设lock为true,锁住内存主线,保证其他进程不会修改锁值,比较锁值是否为0,若不为0,则重复操作,循环检查,若为0,则返回,并解除lock
对TSL指令的解释

Swap

在这里插入图片描述
old设为true,若原本lock为false,则交换后,lock为true,进程a进入临界区,其他进程交换后的old为true,循环交换,当进程a离开临界区,lock为false,其他进程可通过同一方法进入临界区,同样不满足忙等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值