信号量与PV操作.ppt

信号量与PV操作.ppt

ID:50248898

大小:159.00 KB

页数:47页

时间:2020-03-07

信号量与PV操作.ppt_第1页
信号量与PV操作.ppt_第2页
信号量与PV操作.ppt_第3页
信号量与PV操作.ppt_第4页
信号量与PV操作.ppt_第5页
资源描述:

《信号量与PV操作.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、主要内容:同步与同步机制信号量及其操作信号量的应用哲学家进餐问题生产者-消费者问题读者-写者问题理发师问题3.3信号量与PV操作13.1.1同步与同步机制著名的生产者--消费者问题是计算机操作系统中并发进程内在关系的一种抽象,是典型的进程同步问题。在操作系统中,生产者进程可以是计算进程、发送进程;而消费者进程可以是打印进程、接收进程等等。解决好生产者--消费者问题就解决好了一类并发进程的同步问题。生产者--消费者问题表述:有n个生产者和m个消费者,连接在k个单位缓冲区的有界环形缓冲池上,故又叫有界缓冲问题。其中pi和cj都是并发进程,只要缓冲区未满,生产者进程pi

2、所生产的产品就可以放入缓冲区;只要缓冲区非空,消费者进程cj就可以从缓冲区取走并消耗产品。..2..01k-1.....k-2...3intk;typedefanyitemitem;//item类型nextp,nextc:item;itembuffer[k];intin=0,out=0,counter=0;4processproducer(void){while(TRUE){{produceaniteminnextp;}if(counter==k)sleep(producer);buffer[in]=nextp;in=(in+1)%k;counter++;if(c

3、ounter==1)wakeup(consumer);}}5processconsumer(void){while(TRUE){if(counter==0)sleep(consumer);nextc=buffer[out];out=(out+1)%k;counter--;if(counter==k-1)wakeup(producer);{consumetheiteminnextc;}}}6生产者和消费者单独运行都是正确的,但是,如果并发执行(交替执行)就会产生错误:结果不唯一永远等待出现错误结果的原因在于各个进程访问缓冲区的速率不同,要得到正确结果,需要调整并发进

4、程的速度,这需要通过在进程间交换信号或消息来调整相互速率,达到进程协调运行的目的。这种协调过程称为进程同步。操作系统实现进程同步的机制称为同步机制,它通常由同步原语组成。常用的同步机制有:信号量与PV操作、管程和消息传递。73.3.2信号量与PV操作1.前节种种方法解决临界区调度问题的缺点1)对不能进入临界区的进程,采用忙式等待测试法,浪费CPU时间。2)将测试能否进入临界区的责任推给各个竞争的进程会削弱系统的可靠性,加重了用户编程负担。3)这些方案只能解决进程竞争,不能解决进程协作问题。2.信号量同步机制的提出1965年荷兰计算机科学家E.W.Dijkstra提

5、出了新的同步工具--信号量和P、V操作。他将交通管制中多种颜色的信号灯管理交通的方法引入操作系统,让两个或多个进程通过特殊变量展开交互。一个进程在某一特殊点上被迫停止执行直到接收到一个对应的特殊变量值,这种特殊变量就是信号量(Semaphore)。8进程可以使用P、V两个特殊操作来发送和接收信号,如果协作进程的相应信号仍未送到,则进程被挂起直到信号送达为止。(注意:这里的“挂起”并不是第二章里的被对换到硬盘上,而是转入等待状态!)操作系统中,信号量是用来表示物理资源的实体,用一个结构性变量表示,有两个分量:一个是信号量的值,另一个是指向信号量的队列的指针。除赋初值

6、外,信号量仅能由同步原语P和V对其进行操作,没有任何其他方法可以检查和操作信号量。原语是操作系统内核中执行时不可中断的过程,即原子操作。Dijkstra发明了两个信号量操作原语:P操作原语和V操作原语(荷兰语中“测试(Proberen)”和“增量(Verhogen)”的头字母)。常用的其他符号有:wait和signal;up和down;sleep和wakeup等。利用信号量和P、V操作既可以解决并发进程的竞争问题,又可以解决并发进程的协作问题。9信号量的分类信号量按其用途分为2种:公用信号量:初值常常为1,用来实现进程间的互斥。相关进程均可对其执行P、V操作。私有

7、信号量:初值常常为可用资源数,多用来实现进程同步。拥有该信号量的一类进程可以对其执行P操作,而另一类进程可以对其执行V操作,多用于并发进程的同步。信号量按照取值可以分为两种:二元信号量:仅允许取0和1,主要用于解决进程互斥;一般信号量(计数信号量):允许取任意整数值,主要用于解决进程同步问题。10一般信号量数据类型:s是结构性变量,其中成员value为整型变量,系统初始化时为其赋初值;成员list为等待使用此类资源的进程队列的头指针。P(s):将s的成员value的值减一;若结果小于0,则执行P操作的进程被阻塞,并且进入s的成员list指向的队列;否则,执行P操作

8、的进程继续

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。