注: 多进程时所主要解决的就是进程同步问题。

  1. 进程同步:
    进程同步的主要任务是对多个相关进程在执行次序上进行协调,以使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。

1.1 进程同步存在的问题:

一、两种形式的制约关系

  1. 间接相互制约关系(存在临界资源需要互斥)
  2. 直接相互制约关系(进程存在前后执行顺序)

二、产生死锁

1.产生死锁的原因

(1) 竞争资源  
(2) 进程间推进顺序非法

2.产生死锁的必要条件

(1)    互斥条件            (不可预防)
(2)    请求和保持条件        (可预防)
(3)    不剥夺条件           (可预防)
(4)    环路等待条件         (可预防)

3.死锁的类型

1
2
3
(1) 嵌套型 (即便一个临界资源 也会发生死锁)
(2) AB-BA
(3) 有待完善!

1.2 解决的方法:

一、数据结构:

  1. 信号量:
    (实现互斥 例: APUE中的14.3 记录锁 15.8 XSI IPC的信号量)

    (1) 整型信号量  
    (2) 记录型信号量  
    (3) AND 型信号量  
    (4) 信号量集 
    

二、算法 :

1 实现同步:

    (1) 生产者—消费者问题
    (2) 哲学家进餐问题
    (3) 读者—写者问题


2 解决死锁:

    (1) 预防死锁: 破坏产生死锁的必要条件
    (2) 避免死锁: 利用算法防止进入不安全状态(银行家算法)
    (3) 检测死锁: 产生死锁后采取适当措施
    (4) 解除死锁: 产生死锁后撤销挂起某些进程

 评论