进程同步
进程同步的概念
多个相关进程在执行次序上的协调称为进程同步。用于保证多个进程在执行次序上的协调关系的相应机制称为进程同步机制。
~~~~~~
所有的进程同步机制应遵循下述四条准则
a. 空闲让进
b. 忙则等待
c. 有限等待:对要求访问临界资源的进程,应保证进程能在有限时间进入临界区,以免陷入饥饿状态
d. 让权等待:当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入忙等
~~~~~~
利用硬件技术实现进程同步机制
提高临界区代码执行中断优先级
检测和设置硬件指令
~~~~~~
信号量机制
a. 记录型信号机制:在信号量机制中信号量是代表资源物理实体的数据结构
~~~~~~
i. 信号量的值只能通过两个原子操作:P、V来改变,它代表分配资源和释放资源
~~~~~~
ii. P-V操作:
~~~~~~
b. 利用信号量实现进程互斥:为使多个进程能互斥地访问某临界资源,只需为该资源设置一个互斥信号量mutex,并设其初值为1,然后将各进程的临界区CS置于P和V操作之间即可。
c. 利用信号量实现进程同步:
~~~~~~
i.
~~~~~~ ii. 为了实现进程同步,需采用同步信号量。为了满足第一条同步规则,设置一个同步信号量full,它代表的资源是缓冲器满,它的初值为0。这个资源是P进程所拥有,P进程可以申请该资源,对它施加P操作,如条件满足P进程可从Buffer中取数。而P进程的合作进程C对full信号量施加V操作,即它可释放该资源。当C进程将数据存入Buffer后,即可释放该资源供P进程再使用。同样为了满足第二条同步规则,设置另一个同步信号量empty,它代表的资源是缓冲器空,它的初值为1 。缓冲器空这个资源是进程C所拥有,它可以申请该资源,对它施加P操作。而它的合作进程P对empty信号量施加V操作。
d. 利用信号量描述前趋关系:
利用信号量解决经典进程同步问题
生产者消费者问题
读者写者问题
管程
定义:管程是由一些共享数据、能为并发进程所执行的作用在共享数据上的操作的集合、初始代码以及存取权组成
~~~~~~
~~~~~~
进程通信
共享存储器系统
a. 基于共享数据结构的通信方式:
~~~~~~
i. 要求诸进程公用某个数据结构,进程通过它们交换信息
~~~~~~
ii. 效率低,只适用于传送少量的数据
b. 基于共享存储区的通信方式:
消息传递系统
a. 直接通信方式:
~~~~~~
i. 发送进程利用OS提供的发送命令直接把消息发送给接收进程,并将它挂在接收进程的消息缓冲队列上。接收进程利用OS提供的接收命令直接从消息缓冲队列中取得消息。此时要求发送进程和接收进程都以显示的方式提供对方的标识符,通常系统提供下述两条通信原语:
b. 间接通信方式:
~~~~~~
i. 消息不直接从发送者发送到接收者,而是发送到暂存消息的共享数据结构组成的队列,这个实体称为信箱
~~~~~~
ii. 好处是增加了使用消息的灵活性:发送者和接收者的关系可能是一对一、多对一、一对多或多对多
~~~~~~
iii. 能使两进程间交互不受其它进程错误干预的影响
~~~~~~
iv. 多对一的关系对客户/服务器交互特别有用:一个进程对多个其它进程提供服务。在这种情况,信箱经常被称作端口;一对多关系允许一个发送进程和多个接收进程交互,这可用来将消息广播给一组进程
管道通信
a. 管道定义:
~~~~~~
i. 通信前需要创建管道
~~~~~~
ii. 利用管道通信的双方需要同步
b. 与一般文件不同的是管道数据的先进先出处理方式和管道文件数据的不可再现性