第四章 进程同步与互斥
1.进程间的相互作用
识记
与时间有关的错误
进程同步互斥举例
2.进程互斥
领会
临界区
使用临界资源的程序
临界区的使用规则
有空让进
无空等待
多中择一
有限等待
让权等待
3.进程同步
领会
典型的进程同步例子
进程A从硬盘上读记录,每读出一个记录就存入缓冲器。进程B从缓冲器中取出记录加工,直至所有的记录都处理结束
解决进程同步问题遇到的问题
进程A的执行速度超过进程B的执行速度,进程A可能在进程B还没有取走一个记录前,又把新读出的一个记录送人缓冲器,于是后一个记录把上一个尚未取走的记录覆盖了
4.信号量机制
综合应用
信号量和P、V操作的物理含义
信号量表示某类可用的临界资源
每次P操作意味着请求的进程分配到一个资源;每次V操作,意味着进程释放了一个资源
用P、V操作解决进程间同步互斥问题
进程A
P(S);
临界区操作;
V(S);
进程B
P(S);
临界区操作;
V(S);
5.经典的同步互斥问题
生产者——消费者问题
P
while(true){
P(empty);
生产一个产品;
送产品到缓冲区;
V(full);
};
Q
while(true){
P(full);
从缓冲区取产品;
V(empty);
消费产品;
};
读者——写者问题
读者进程
while(true){
P(mutex);
read_count = read_count + 1;
if(read_count = 1) P(write);
V(mutex);
读文件;
P(mutex);
read_count = read_count - 1;
if(read_count = 0) V(write);
V(mutex);
}
写者进程
while(true){
P(write);
写文件;
V(write);
}
6.管程机制
识记
管程的概念
管程是一个由过程、变量及数据结构等组成的一个集合,它们组成一个特殊的模块或软件包
管程的组成
管程名称
共享数据的说明
对数据进行操作的一组过程
对共享变量赋初值的语句
7.进程通信
领会
共享内存
在相互通信的进程之间设有一个公共内存区,一组进程向该公共内存中写,另一组进程从公共区中读
消息队列
进程间的数据交换,是以格式化的消息为单位的。程序员直接利用操作系统提供的一组通信命令,实现大量数据的传递,通信过程对用户是透明的
信箱机制
以发送信件以及接受回答信件为进程间通信的基本方式
管道
连接两个进程之间的一个打开的共享文件,专用于进程之间进行数据通信。发送进程可以源源不断地从管道一端写入数据流,接收进程在需要时可以从管道的另一端读出数据,写入和读出的信息长度都是可变的
第四章 进程同步与互斥
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.