【操作系统】2.3 进程同步与互斥

 这一节大概是操作系统中最难的一节了。

2.3.1 进程的同步与互斥

2.3.1 进程的同步与互斥_StudyWinter的博客-CSDN博客_进程同步思维导图

在这里插入图片描述

进程同步:在多道程序环境下,进程是并发执行的,不同进程之间存在着不同的相互制约关系。为了协调进程之间的相互制约关系,如等待、传递信息等,引入了进程同步的概念。进程同步是为了解决进程的异步问题。

互斥:亦称间接制约关系。进程互斥指当一个进程访问某临界资源时,另一个想要访问该临界资源的进程必须等待。当前访问临界资源的进程访问结束,释放该资源之后,另一个进程才能去访问临界资源。

临界区是进程中访问临界资源的代码段。

为了禁止两个进程同时进入临界区,需遵循以下准则:

(1)空闲让进:临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区;

(2)忙则等待:当已有进程进入临界区时,其他试图进入临界区的进程必须等待;

(3)有限等待:对请求访问的过程,应保证能在有限时间内进入临界区;

(4)让权等待:当进程不能进入临界区时,应立即释放处理机,防止进程忙等待。

这四个原则,得有个印象。

2.3.2 操作系统之实现临界区进程互斥的软件实现方法

2.3.2 操作系统之实现临界区进程互斥的软件实现方法_StudyWinter的博客-CSDN博客

在这里插入图片描述

软件实现方法的思想:在进入区设置并检查一些标志 来标明是否有进程在临界区中,若已有进程在临界区,则在进入区通过循环检查进行等待,进程离开临界区后则在退出区修改标志。入区通过循环检查进行等待,进程离开临界区后则在退出区修改标志。

(1)单标志法:两个进程在访问临界区后会把使用临界区的权限转交给另一个进程。也就是说每个进程进入临界区的权限只能被另一个进程赋予。

(2)双标志法:设置一个布尔型数组,数组中的各个元素用来标记进程想进入临界区的意愿;每个进程在进入临界区之前先检查当前有没有别的进程想进入临界区,如果没有,则把自身对应的标志设置true。

(3)双标志后检查法:是双标志先检查法的改进,加锁。

2.3.3 操作系统之实现临界区进程互斥的硬件实现方法

2.3.3 操作系统之实现临界区进程互斥的硬件实现方法_StudyWinter的博客-CSDN博客

在这里插入图片描述

 2.3.4 操作系统之信号量机制(整型信号量、记录型信号量P、V)

2.3.4 操作系统之信号量机制(整型信号量、记录型信号量P、V)_StudyWinter的博客-CSDN博客_记录型信号量

PV操作是重点和难点

PV两个字母是荷兰文 P asseren(通过),V rijgeven(释放)的简称。

P是申请资源;V是释放资源;

在这里插入图片描述

在这里插入图片描述

  • 整型信号量

在这里插入图片描述

(1)用一个整型型变量作为信号量,数值表示某种资源数;

(2)整型信号量与普通整型变量的区别:对信号量只能执行初始化、P、V三种操作;

(3)整型信号量存在的问题:不满足让权等待原则

P是申请资源;V是释放资源
  • 记录型信号量

因为整型信号量存在忙则等待的问题,所以提出记录型信号量。

在这里插入图片描述

(1)P操作中,一定是先value--,之后可能执行block原语;

(2)V操作中,一定是先value++,之后可能执行wakeup原语;

(3)能够判断在什么条件下需要执行block或者wakeup。

2.3.5 操作系统之信号量机制实现进程的互斥、同步与前驱关系

2.3.5 操作系统之信号量机制实现进程的互斥、同步与前驱关系_StudyWinter的博客-CSDN博客

在这里插入图片描述

实现进程互斥:

(1)信号量初值设为1;(2)临界区之前对信号执行P操作;(3)临界区之后对信号执行V操作

实现进程同步:

(1)信号量初始值为0;(2)在“前操作”之后执行V操作;(3)在“后操作”之前执行P操作;

实现进程的前驱关系:

(1)每一对前驱关系初值问为0;(2)在每个“前操作”之后执行V操作;(3)在每个”后操作“之前执行P操作。

2.3.6 操作系统之进程同步与互斥经典问题

2.3.6 操作系统之进程同步与互斥经典问题(生产者-消费者问题、多生产者-多消费者问题、吸烟者问题、读者-写者问题、哲学家进餐问题)_StudyWinter的博客-CSDN博客_生产者消费者进程同步互斥

【这一节得再看看】

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值