欢迎来到天天文库
浏览记录
ID:52516576
大小:785.24 KB
页数:106页
时间:2020-03-28
《操作系统考研大纲解读2.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、二二、二、、进程管理、进程管理((三(三三)三))进程同步)进程同步1.进程同步的基本概念进程间的制约关系:直接制约::合作:合作间接制约::共享资源:共享资源二二、二、、进程管理、进程管理((三(三三)三))进程同步)进程同步1.进程同步的基本概念互斥(mutualexclusion)::当一个进程正在访问:当一个进程正在访问某共享资源时,,就不允许其他进程对其访问,就不允许其他进程对其访问,,这,这种相互制约关系称为互斥。同步(synchronism)::有协作关系的进程之间要:有协作关系的进程之间要
2、不断调整他们之间的相对速度。。即。即即多个相关进程即多个相关进程在执行次序上的协调。二二、二、、进程管理、进程管理((三(三三)三))进程同步)进程同步1.进程同步的基本概念临界资源::一段时间内仅允许一个进程使用的资源:一段时间内仅允许一个进程使用的资源称为临界资源。临界区::进程中访问临界资源的那段代码称为临界:进程中访问临界资源的那段代码称为临界区区,区,,又称临界段,又称临界段。同类临界区::所有与同一临界资源相关联的临界区:所有与同一临界资源相关联的临界区。二二、二、、进程管理、进程管理((三(三三)
3、三))进程同步)进程同步1.进程同步的基本概念进入临界区的基本准则空闲让进:若无进程处于临界区时,,应允许一个进程进入临界,应允许一个进程进入临界区区。区。忙则等待:当已有进程进入临界区,,其他进程必须等待,其他进程必须等待。有限等待:应保证要求进入临界区的进程在有限时间内进入临界区。让权等待:当进程不能进入自己的临界区时,,应释放处理机,应释放处理机。二二、二、、进程管理、进程管理((三(三三)三))进程同步)进程同步2.实现临界区互斥的基本方法软件实现方法访问临界资源的进程描述voidp(inti
4、)假设互斥在两个进程间进行,{两进程的并发执行表示如下:while(true)voidmain(){{公共变量说明;进入代码;临界区;cobegin退出代码;p0();非临界区;p1();}coend}}二二、二、、进程管理、进程管理((三(三三)三))进程同步)进程同步2.实现互斥的软件方法-算法1设一个公用整型变量turn,用来指示允许进入临界区的进程标识。此算法可以保证互斥访问临界资源,但两个进程必须以交替次序进入临界区。此算法不能保证实现空闲让进准则。intturn=0;p1:p0:while(true)w
5、hile(true){while(turn!=1);{while(turn!=0);进程p1的临界区代码cs1;进程p0的临界区代码cs0;turn=1;turn=0;进程p0的其他代码;}进程p1的其他代码;}二二、二、、进程管理、进程管理((三(三三)三))进程同步)进程同步2.实现互斥的软件方法-算法2设置标志数组flag[]表示进程是否在临界区中执行,初值均为假。此算法解决了空闲让进的问题,但有可能两个进程同时进入临界区。enumboolean{false,true};p1:booleanflag[2]={
6、false,while(true)false};p0:{while(flag[0]);while(true)flag[1]=true;{while(flag[1]);进程p1的临界区代码cs1;flag[0]=true;flag[1]=false;进程p0的临界区代码cs0;进程p1的其他代码;}flag[0]=false;进程p0的其他代码;}二二、二、、进程管理、进程管理((三(三三)三))进程同步)进程同步2.实现互斥的软件方法-算法3本算法仍然设置标志数组flag[],但标志用来表示进程是否希望进入临界区。
7、该算法可以有效地防止两个进程同时进入临界区,但存在两个进程都进不了临界区的问题。enumboolean{false,true};p1:booleanflag[2]={false,while(true)false};p0:{flag[1]=true;while(true)while(flag[0]);{flag[0]=true;进程p1的临界区代码cs1;while(flag[1]);flag[1]=false;进程p0的临界区代码cs0;进程p1的其他代码;}flag[0]=false;进程p0的其他代码;}二二、二、
8、、进程管理、进程管理((三(三三)三))进程同步)进程同步2.实现互斥的软件实现方法-算法4本算法的基本思想是算法3和算法1的结合,是一个正确的算法。标志数组flag[]表示进程是否希望进入临界区或是否正在临界区中执行。还设置了一个turn变量,用于指示允许进入临界区的进程标识。p1:enumboolean{false,tru
此文档下载收益归作者所有