一、课堂笔记
第二章 、进程管理
2-1 进程与PCB
2.1进程的基本概念
要点
1.分析程序执行顺序、以及并发的特征
2.进程的概念、特征与状态
3.进程控制块及其组织
程序顺序执行时的特征
进程
经典同步问题
1. 生产者—消费者问题:
多个生产者和消费者对n个缓 冲区的使用。
1. 无论生产者、消费者使用缓冲池时应保证 互斥使用(互斥信号量mutex )
2. 生产者和消费者间交叉有序:
⚫ 有序的控制最根源在产品数量上。
⚫ 设置两个信号量: 分别针对生产者、消费者设置不同 的信号量,empty和full分别表示缓冲 池中空缓冲池和满缓冲池(即产品)的 数量。
分析:互斥信号量mutex用来保证对缓冲池的互斥使用,即在放一个产品的同时不能同时去拿。 empty和full用来控制 “空”和“产品”。初始时空为n,产品为0,当生产者生产一个产品后空-1,产品+1;这就可以用记录型信号量来控制。
buffer: array [ 0, …, n-1] of item; in, out: integer :=0, 0;
Var mutex, empty, full: semaphore :=1, n, 0;
生产者 :
repeat … produce an item in nexp; …
buffer(in):=nexp; in:=(in+1) mod n;
until false;
wait(mutex);
signal(mutex);
wait(empty);
signal(full);
消费者 :
repeat
nextc:=buffer(out); out:=(out+1) mod n;
consume the item in nexc;
wait(mutex);
signal(mutex);
wait(full);
signal(empty);
until false;
1. 每个程序中用于实现互斥的wait(mutex)和 signal(mutex)必须成对地出现。
2. 控制顺序的信号量empty和full的wait和 signal操作,成对地出现在不同的进程中。
3. 在每个程序中的多个wait操作顺序不能颠倒。 且应先执行对资源信号量的wait操作,再执行 对互斥信号量的wait操作,否则可能引起进程 死锁。
4. 模拟交替执行过程,检查控制是否正确。