欢迎来到天天文库
浏览记录
ID:51499905
大小:406.50 KB
页数:31页
时间:2020-03-25
《《操作系统》第2章 进程管理2.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、操作系统原理PrinciplesofOperatingSystem12.4进程的同步机构2.4.1进程与资源资源是计算机系统的基本结构元素。资源可以分为软件资源和硬件资源,程序和数据属于软件资源;CPU、内存、外设则属于硬件资源。在操作系统中一般把资源分为临界资源和共享资源,所谓的临界资源是指在一段时间内仅允许一个进程使用资源。如打印机、输入机、磁带机、信号量和指针等,临界资源可以互斥共享;所谓的共享资源是指允许多个进程同时访问的资源。如处理机、内存和硬盘等。2⒉进程制约关系①间接相互制约。这种制约主要源于资源共享,这是
2、不相关的进程由于共享同一资源而引起的,即共享某类资源的进程之间由操作系统协调与控制使用该资源的次序而产生相互制约。这种制约是进程—资源—进程之间存在的约束,故称为间接制约。例如,有两个进程A和B,如果在进程A提出打印请求时,系统已将打印机分配给进程B,此时进程A阻塞。当进程B将打印机释放,进程A被唤醒,获得打印机,由阻塞状态转为就绪状态。3②直接相互制约。这是相关进程之间为完成同一任务,进程某些操作之间在次序上存在制约关系。如果协作进程的某个操作没有完成,那么进程就会在工作到某些点上等待这个动作的完成,之后才能继续执行下
3、去。我们称这些并发执行的进程间存在着制约关系。这种制约是进程—进程之间因共同目的而存在的直接约束,故称为直接制约。例如,输入进程A通过单缓冲向计算进程B提供数据。当缓冲区空时,计算进程B因不能获得所需数据而阻塞,当进程A把数据送入缓冲时,便唤醒进程B;反之,当缓冲区满时,进程A因不能再向缓冲中投放数据而阻塞,当进程B将缓冲内数据取走时,便唤醒进程A。4⒊进程与资源的关系从这样一个简单系统的管理中我们得出一个结论:操作系统的任务是控制与管理进程和资源,必须提供一些机制来协调进程与进程之间、进程与资源之间的复杂关系。54.临
4、界区设计原则我们对每个进程访问临界资源的那段程序从概念上分离出来,称之为临界区。临界区设计原则如下:①进入区(entrysection)。申请临界资源,为了进入临界区使用临界资源,在进入区要检查可否进入临界区,如果可以进入临界区,通常设置相应的“正在访问临界区”标志,以阻止其他进程同时进入临界区。②访问区(criticalsection)。进程中访问临界资源的一段代码。③退出区(exitsection)。将“正在访问临界区”的标志清除,释放临界资源。62.4.2进程同步机构⒈进程同步与互斥的概念在系统中有一些需要相互合
5、作、协同工作的进程,这些进程的某些操作存在某种次序上的制约关系,这种制约关系称为进程的同步。多个相关进程在访问临界资源在操作时间上相互排斥。这种相互排斥关系叫做进程的互斥。各个进程互斥使用临界资源,互斥的实质是互斥共享临界资源,也可以认为互斥是同步的一种特殊形式。72.同步机构应遵循的准则空闲让进忙则等待有限等待让权等待8⒊上锁原语与开锁原语实现的方法:设置锁变量w,w=1表示上锁,w=0表示开锁。上锁原语voidlock(w){while(w==1)no-operate;w=1;}开锁原语voidunlock(w){w
6、=0;}请读者思考上锁原语与开锁原语是否符合同步机构应遵循的准则?9⒋信号量与P、V操作信号量的值仅能由P操作、V操作改变的结构体变量。信号量的值大于等于零时代表一类可用资源个数,其值小于零时其绝对值代表被阻塞进程的个数。信号量的描述如下:structsemaphore{intvalue;queue*WQ[r];};10wait操作描述和定义如下:semaphoresvoidwait(s){s.value--;if(s.value<0)block(s.WQ[r]);/*阻塞该进程*/}V操作描述和定义如下:semapho
7、resvoidsignal(s){s.value++;if(s.value<=0)wakeup(s.WQ[r]);/*唤醒阻塞队列的对首进程*/}112.5经典进程同步问题2.5.1进程互斥利用wait操作、signal操作设计出三个进程共享一台打印机的并发程序描述如下:semaphoremutex=1;voidmain(){parbegin(P1(),P2(),P3());}voidPi()/*i=1,2,3*/;{……wait(mutex);使用打印机;signal(mutex);……}122.5.2生产者与消费者问
8、题设置信号量和变量如下:full:满缓冲区资源信号量,初值为0;empty:空缓冲区资源信号量,初值为n;in:生产者指针,初值均为0;out:消费者指针,初值均为0;mutex:缓冲区操作的互斥信号量,初值为1;13生产者与消费者问题描述如下:semaphoreempty=n;semaphorefull=0;sem
此文档下载收益归作者所有