操作系统c语言两个进程制约且互斥,操作系统——互斥的定义及实现

一、进程互斥的定义

所谓进程互斥,指的是对某个系统资源,一个进程正在使用它,另外一个想用它的进程就必须等待,而不能同时使用 。

进程互斥是多道程序系统中进程间存在的一种源于资源共享的制约关系,也称间接制约关系,主要是由被共享资源的使用性质所决定的。

9c1544fa5405ee4c65218f3cf24550d3.png

二、互斥访问的划分

c86643eb860cccfcb90bc2dba8765678.png

三、进程互斥遵循的原则

空则让进:当无进程在互斥区时,任何有权使用互斥区的进程可进入。

忙则等待:不允许两个以上的进程同时进入互斥区,当已有进程进入临界区时,其他试图进入临界区的进程必须等待。

等则有限:对请求访问的进程,应该保证能在有限时间内进入临界区(保证不会饥饿)。

等则让权:当进程不能进入临界区时,应立即释放处理机,避免进程忙等待。

四、实现进程互斥的软件方法

单标志法:

9f9e77b6baa64e5e32694c273cfa33de.png

0614f57af8aa215814f28ee5fdaa68bc.png

2ea7ccd537a49fc12047ffe3142577f8.png

双标志先检查法:

56d4122d44656762d65fd1d4a3ced641.png

双标志后检查法:

5bc2bbf9f15a9ef3faedbf928261a35a.png

Peterson算法

936975e3ca7df6952323ae6b8a7a33c6.png

进入区:

1主动争取

2主动谦让

3检查对方是否也想使用,且最后一次是不是自己说了“客气话”。

王道考研老师举了一个这样的例子:

如果是按照①②③的顺序:

香香想要用马桶,并且表示可以谦让臭臭,但是臭臭并不想用马桶,于是香香去使用马桶了。

2165254d2b0777b63bbbc423ebbcaa7a.png

如果是按照①⑥②⑦⑧的顺序,香香想要使用马桶,臭臭也想要使用马桶,香香表示可以先让臭臭来使用马桶,臭臭表示可以先让香香来使用马桶,但最后一次谦让的客气话是臭臭说的,所以臭臭要等待香香先去使用马桶。

2e4171d61c2bda369428dbfcb3f1996d.png

2ca7e71d616beb612bbc23f5ceb357a5.png

总结

4ce8daa371b4541f544cefa5ee94295e.png

其实对于所有解决进程互斥算法的分析,都可以采用一个相同的思路:

先区分出那一个是进入区,在进入区都做了哪些事情,再把进入区这些操作并发会产生的不同顺序依次执行,验证有可能会导致什么样的问题出现。

五、实现进程互斥的硬件方法

中断屏蔽法:

bc7506412fa3f153ad233d19c7f65637.png

TestAndSet指令:

0cb4183380a57c6fa9518fcdd60ebbb3.png

刚开始lock是false,TSL使得lock变为true,并且返回的old值为false,while循环条件不足,跳出循环进入临界区,若这时候又有一个进程要访问临界区,但此时的lock为ture,执行TSL之后old返回ture,while一直循环直到上一个进程访问完临界区在退出去进行“解锁”。

Swap指令:

48edc27adf72d4bbe0a1ebc690370fb4.png

刚开始lock是false,Swap使得lock与old交换变为true,old值变为false,while循环条件不足,跳出循环进入临界区,若这时候又有一个进程要访问临界区,但此时的lock为ture,执行Swap之后old交换为ure,while一直循环直到上一个进程访问完临界区在退出去进行“解锁”。

总结:

07e2708e9457b0912507ba62f7517e5c.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值