欢迎来到天天文库
浏览记录
ID:50045041
大小:99.50 KB
页数:8页
时间:2020-03-08
《操作系统 国家精品课程配套教材 教学课件 罗宇 文艳军 4.2同步与互斥实现方法.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第八讲同步与互斥高级实现方法目的与要求:掌握信号量机制及使用它解决进程同步互斥问题的方法。重点与难点:信号量实现及使用。作业:4,64.2.3信号量信号量机构:“信号量”、“P、V操作”。信号量s为一整型变量:P(s):Whiles≤0;空操作s=s-1;V(s):s=s+1;P、V操作是两条原语,即保证P、V操作对变量S的访问是互斥操作。一.原语概念与实现原语:指完成某种功能且不被分割或不被中断执行的操作序列。原语可通过硬件实现不可中断性;或通过实现临界段的元方法达到不被中断。实现临界段的元方法:屏蔽
2、中断(只用于单机)加硬锁。下面我们用屏蔽中断方法实现P(s)和V(s)的原子性。P(s){disableInterrupt();while(s≤0){enableInterrupt();disableInterrupt();};s=s-1;enableInterrupt();}V(s){disableInterrupt();s=s+1;enableInterrupt();}二、信号量的使用(互斥与同步)互斥:用于n个进程的临界段互斥,n进程共享一个信号量mutex,初值为1,任一进程Pi的结构为:P(m
3、utex)V(mutex)临界段非临界段do{}while(1)同步:有P1、P2两进程,必须在P1执行完S1语句后,P2才能执行S2。需同步的两进程共享信号量synch,初值为0。ParbeginP2():{P1():{……S1;V(synch);……};……P(synch);S2;……};Parend;操作系统实现信号量时与进程调度相结合,消除忙等待现象。原则是:在P操作循环等待的地方加入放弃处理机/挂入等待队列动作,在V操作时,从等待队列中摘取进程变为就绪态。(P、V原语本身的互斥操作通过屏敝中断
4、或为信号量加硬锁实现)三.信号量的具体实现1、信号量定义typedefstruct{intvalue;structprocess*L;}semaphore;2、P操作P(s):s.Value=s.value–1;Ifs.value<0then保存现场,将本进程挂入s.L队列,重新调度。3、V操作V(s):s.value:=value+1Ifs.value≤0then从s.L队列取一进程,挂入就绪队列。
此文档下载收益归作者所有