
第4章 进程同步与通信
操作系统(第四版)

第4章 进程同步与通信
4.1 进程间的相互作用
4.2 进程通信
4.3 死锁
4.4 Linux进程间通信

4.1 进程间的相互作用
进程间的联系
-资源共享关系
-相互合作关系
临界资源
- 一种多个进程访问的资源。
- 属性:访问临界资源的进程必须互斥得访问它,也就
是说,同一时刻只允许一个进程访问的资源叫临界资源
思考:下面两个进程并发是否能正确执行?

4.1 进程间的相互作用
void Producer()
{ while (1)
{ …
produce an item in nextp;
while (counter==n)no-op;
buffer[in]=nextp;
in=(in+1)mod n;
counter++;
}
}
register1=counter;
resister1++;
counter=register1;
void Consumer()
{ while(1)
{ while (counter==0)no-op;
nextc=buffer[out];
out=(out+1)mod n;
counter--;
consume the item in nextc;
…
}
}
register2=counter;
resister1--;
counter=register2;

4.1 进程间的相互作用
临界区
不论是硬件临界资源,还是软件临界资源,多个进程必须
互斥地对它进行访问。我们把在每个进程中访问临界资源的
那段代码称为临界区(critical section)
同步机制应遵循的准则
- 空闲让进
- 忙则等待
- 有限等待
- 让权等待