《软件技术基础》之《同步》
进程并发控制:互斥与同步

并发控制
示例:

进程间的制约关系:
- 间接制约:资源共享→互斥
- 直接制约:进程合作→同步
临界资源:必须互斥使用的资源称为临界资源。
临界区:访问临界资源的那段代码称为临界区。

竞争临界资源引起的问题:忙等、饥饿、死锁。

临界区使用原则(互斥条件):空闲让进、忙则等待、优先等待、让全等待。

互斥与同步的解决策略


软件方法
在进入区设置和检查一些标志来标明是否有进程在临界区。若已经有进程在临界区,则在进入区通过循环检查进行等待,进程离开临界区后则在退出区修改标志。
初步设想——轮换使用临界区

第一次改进——设置临界区状态标志


第二次改进——预先表明进入临界区的态度


第三次改进——预先表明进入临界区的态度+谦让


谦让的改进:给定序号避免过分谦让


Peterson互斥算法

软件方法的特点

信号量方法
信号量实现进程互斥的基本原理

信号量定义

信号量的两个原子操作:wait(s)和signal(s),有时也称作P(s)和V(s)。

信号量的物理意义

wait、signal的应用

利用信号量实现互斥的通用模式

利用信号量实现前趋关系示例
P1、P2、P3、P4、P5、P6为一组合作进程,其进程前趋图如下所示,用P、V操作实现这六个进程的同步。


信号量的类型
依据使用方式:


管程
管程的组成

管程的概念
一个管程定义了一个数据结构和(在该数据结构上)能为并发进程所执行的一组操作,这组操作能同步进程和改变管程中的数据。
管程的特点

若由于某种原因,一个正在管程中执行的进程必须阻塞,该如何处理?
答:释放管程供其他进程使用→同步机制。
管程中的同步机制

管程的结构

生产者-消费者问题


生产者-消费者模型
- 缓冲区:固定大小
- 生产者:满则等待,空则填充
- 消费者:空则等待,有则获取


限制要求:

流程图:

代码:

生产者-消费者问题的管程解决方法:

消息传递
进程通信:进程之间的信息交换。
进程通信方式:

进程通信的方式

共享存储区方式

电子邮件的发送与接收过程:
消息传递机制
数据交换以格式化的消息为单位。
消息的一般格式:

消息传递的同步:

三种同步方式:


消息传递的寻址:


邮箱:不限制进程数,允许多个发送进程向邮箱发送消息,同时,也允许多个接收进程从邮箱接收信息。
利用消息传递实现互斥

代码:

本文深入探讨了进程并发控制的关键概念,包括互斥与同步的基本原理,Peterson互斥算法的细节,信号量方法及其在实现互斥和前趋关系中的应用。此外,还介绍了管程的概念、特点及在生产者-消费者问题中的应用,以及消息传递机制在进程通信中的作用。


5万+

被折叠的 条评论
为什么被折叠?



