- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统第8课
进程间的制约关系
今日内容
进程的互斥
进程的同步
信号量和P、V操作
内容回顾:进程间的制约关系
进程的并发,使一个进程何时占有处理机、占有多长时间、执行速度的快慢、以及外界对进程产生作用等都带有随机性。因此,一个进程对其他进程的影响无法预测。进程间存在制约关系。
间接制约
直接制约
共享变量修改引起的冲突
一个飞机售票系统,两个终端,运行两个进程:
例:对输入井文件目录的管理
为输出井设置一张 “输出井文件目录表”,它由若干目录项组成。每个目录项记录一个要打印输出的文件名以及该文件在磁盘的存放地址。
两个指针:out和in。
两个程序:
“井管理写程序”根据in的指点存放要求输出的文件目录信息,in总是指向下一个可用的目录项位置。
“缓输出程序”根据out的指点进行打印,out总是指向下一个被打印的文件。
例:通过双缓冲区复制文件
编写一个复制n个记录的程序,它把文件F中的每个记录依次读到输入缓冲区R,再从R拷贝到输出缓冲区T,最后写到文件G中。假定R和T正好存放一个记录。
写3个子程序作为进程来完成整个工作:
GET:从文件F按照顺序读出一个记录,然后送入输入缓冲区R;
COPY:把输入缓冲区R里的记录拷贝到输出缓冲区T里;
PUT:从输出缓冲区T里读出一个记录,然后依照顺序写入文件G。
记录1
记录2
记录n
GET
COPY
PUT
文件F
记录1
记录2
记录n
文件G
输入缓冲区R
输出缓冲区T
例:通过双缓冲区复制文件
在复制过程中,若COPY已把R里的记录拷贝到了T中,那么GET和PUT就可以并发执行了。即GET从F里读出下一个记录送到R中的操作,与PUT从T中取出里面的内容写入G的操作,谁先做谁后做都没有关系,不会影响到复制结果的正确性。由于利用了它们并发性,工作效率就会提高。
但是,如果不去顾及这三者之间执行顺序的这种关系,随意让GET、COPY、PUT去并发执行,那么就会产生错误。
记录1
记录2
记录n
GET
COPY
PUT
文件F
记录1
记录2
记录n
文件G
输入缓冲区R
输出缓冲区T
若不管GET、COPY、PUT的执行关系,那么可有六种执行可能:
1)COPY→PUT→GET;2)COPY→GET→PUT;3)PUT→COPY→GET
4)PUT→GET→COPY;5)GET→COPY→PUT;6)GET→PUT→COPY
.
记录3
记录4
记录n
文件F
记录2
记录1
文件G
R
T
记录1
GET
PUT
记录1
记录1
文件G
R
T
记录3
记录4
记录n
文件F
记录1
记录4
记录n
文件F
记录3
记录1
文件G
R
T
记录1
COPY
记录1
记录4
记录n
文件F
记录3
记录3
文件G
R
T
记录1
1
2
3
(2)
(3)
(1)
(4)
进程的互斥
共享变量
在操作系统中,把那些可以被进程共享的资源(如文件、队列、缓冲区、表格、变量等)统称为“共享变量”或“临界资源”。
互斥
与一个共享变量(或临界资源)交往的多个进程,为了保证它们各自运行结果的正确性,当其中的一个进程正在对该变量(或临界资源)进行操作时,就不允许其他进程同时对它进行操作。进程间的这种制约关系被称为“互斥”。
临界区
把进程程序中“真正需要保证互斥执行”的程序,称为该进程的“临界区(或临界段)”。
一个飞机售票系统,两个终端,运行两个进程:
临界区
a := a -1
print (a)
a := a +1
print (a)
进程的互斥
(间接作用)
使用临界区的原则:
(一组并发进程互斥执行时应满足的准则,保证使用共享数据的进程能够正确和高效地运行)
有空让进:当无进程在临界区时,任何有权使用临界区的进程之一可进入
无空等待:已有进程在临界区,其它欲进入临界区的进程需等待
有限等待:任何进入临界区的要求应在有限的时间内得到满足
让权等待:处于等待状态的进程应放弃占用CPU,以使其他进程有机会得到CPU的使用权
协同工作——进程同步
例:GET和COPY间的协调一致
GET读记录到R后,给COPY发送消息,告诉它R中已有记录,然后暂停下来,等待COPY发来 “拷贝结束”的消息,只有接到这个消息,GET才能去做下一步工作。
相对地,COPY也一直处于等待。只有接到GET发送来 “可以拷贝”的消息才能工作,将R里的记录拷贝到T里,然后向GET发“拷贝结束”的消息,随之又等待GET发消息。
同步、同步点、同步条件
一组并发进程因直接制约而互相发送消息,进行互相合作,互相等待,使得各进程按一定的速度执行的过程称为进程间的同步。
进程暂停等待以取得同步的那一点,称为“同步点”。
一个进程需要等待另一个进程完成的操作或发送的信息,称为“同
文档评论(0)