代码改变世界

并发程序设计

2017-06-12 12:29  fengna  阅读(347)  评论(0编辑  收藏  举报

1. 多进程设计存在的问题:结果错误(机票问题)和永久等待(内存资源管理)

2. 进程互斥与同步:

(1)进程互斥:多个相关的进程争夺独占性资源而产生的竞争条件制约;

(2)进程同步:多个相关的进程为完成同一任务基于某一条件协调决定先后执行顺序的协调条件制约;

3. 临界区:

(1)临界区资源:互斥共享变量所指的资源,临界区资源同时只能被一个进程占用;

(2)临界区:与互斥共享变量操作有关的程序段;

(3)临界区管理的三大要求:任意时候只能有一个相关进程处于临界区内;进程不可以一直处于临界区内;进程不可以一直处于等待某种临界区资源状态;

4. 临界区管理的实现:测试锁和建立锁两个锁会出现死锁情况或者结果错误

(1)测试并建立锁

(2)swap操作建立锁

5. 信号量:PV操作原语与进程互斥

(1)定义一种动态的软件资源,其核心数据结构是等待进程队列

(2)信号量申明:资源报道,等待进程队列建立

(3)请求资源的原语:若申请不得,则加入等待队列

(4)归还资源的原语:队列中有等待进程,需释放

(5)信号量撤销:资源注销,队列撤销

 

6. PV操作与进程同步

(1)基本思路:定义一个信号量,其数值代表可用消息数

等待消息进程:执行P操作,无消息则等待

发出消息进程:执行V操作,有等待消息进程则释放:

7. 管程

8. 进程直接通信与间接通信:

9. 高级进程通信