- 1、本文档共88页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8.1 进程的同步 在多道程序系统中,由于资源共享或进程合作,使进程间形成间接相互制约和直接相互制约关系,这需要用进程互斥与同步机制来协调两种制约关系。 进程同步的主要任务是使并发执行的进程间有效的共享资源和相互合作, 进程的同步机制──信号量及P.V操作(解决进程同步互斥问题) 直接作用(相互合作): 进程间的相互联系是有意识的安排的,直接作用只发生在相交进程间 间接作用(资源共享): 进程间要通过某种中介发生联系,是无意识安排的,可发生在相交进程之间,也可发生在无关进程之间 2. 进程的同步(直接作用) 指系统中多个进程中发生的事件存在某种时序关系,需要相互合作,共同完成一项任务。具体说,一个进程运行到某一点时要求另一伙伴进程为它提供消息,在未获得消息之前,该进程处于等待状态,获得消息后被唤醒进入就绪状态 3. 进程的互斥(间接作用) 由于各进程要求共享资源,而有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程的这种关系为进程的互斥。 临界资源: 系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源或共享变量 4. 基本概念 进程互斥:指在多道程序环境下,每次只允许一个进程对临界资源进行访问。 进程同步:指多个相关进程在执行次序上的协调。 临界资源:一次仅供一个进程使用的资源。 在进程中涉及到临界资源的程序段叫临界区 多个进程的临界区称为相关临界区 5.使用互斥区的原则 空闲让进:当无进程在互斥区时,任何有权使用互斥区的进程可进入 忙则等待:不允许两个以上的进程同时进入互斥区 有限等待:任何进入互斥区的要求应在有限的时间内得到满足 让权等待:处于等待状态的进程应放弃占用CPU,以使其他进程有机会得到CPU的使用权 5.使用互斥区的原则 前提:任何进程无权停止其它进程的运行 进程之间相对运行速度无硬性规定 进程互斥的解决有两种做法: 由竞争各方平等协商 引入进程管理者,由管理者来协调竞争各方对互斥资源的使用 具体方法: 硬件(当一个进程进入临界区,就屏蔽所有中断,但成本高) 软件(用编程解决,但常常忙等待) 6.进程互斥的软件方法 通过平等协商方式实现进程互斥的最初方法是软件方法 其基本思路是在进入区检查和设置一些标志,如果已有进程在临界区,则在进入区通过循环检查进行等待;在退出区修改标志 其中的主要问题是设置什么标志和如何检查标志 软件解法的缺点: 1. 忙等待 2. 实现过于复杂 3. 需要高的编程技巧 软件解法 (1) 1.方法1:考虑用标志位来实现判别和处理 用标志位flag[i]来标示进程i是否在临界段中执行,当flag[i]为真,则表示它正在执行临界段;反之不在临界段中执行。 那么我们的临界区就可以如下设计: 软件解法 (2) #define false 0 #define true 1 int flag[2]={0,0}; Pi: do{ | While(flag[j]) ; flag[i]=true; Pi的临界段代码CSi; flag[i]=false; | }while(true); 软件解法(3) 2.方法2 用一个指针turn来指示应该哪个进程进入临界段。若turn=i,则进程Pi进入临界段。 Pi: int turn=0; do{ | While (turn!=i); Pi的临界段代码Csi; turn=j; | }while{true}; 硬件解法(1) 实现功能的硬件指令: (1)TS指令,其功能描述如下: int TestandSet(int *flag) { int tmp; tmp=*flag; *flag=true; return (tmp); } 注意:其功能是由一条处理机指令完成的,其执 行过程是连续的。 用TS指令实现互斥的程序结构为:为临界资源设置一个锁变量lock,lock的值为true时表示临界资源正被访问,为false时空闲。 do{ … while (TS (*lock)); 进程的临界段代码CS; lock=false; … }while(true) 硬件解法 (2)“交换”指令 void SWAP(int *a, int *b) { int temp; temp = *a; *a = *b; *b = temp; } key = true; do { SWAP(lock
您可能关注的文档
- ch2-2.3费翔林操作系统第四版PPT.ppt
- 15-6波函数一维定态薛定谔方程.ppt
- (人教新课标)三年级语文上册课件_9_古诗两首.ppt
- (人教新课标)三年级语文上册课件 陶罐和铁罐.ppt
- ch2-2.3进程及其实现.ppt
- ch2-2.4线程及其实现(1).ppt
- (人教新课标)三年级语文上册课件_玩出了名堂_3.ppt
- ch2-2.5-2.9处理器调度.ppt
- ch2-2PL0编译程序的实现.ppt
- (人教新课标)三年级语文课件 我们的民族小学.ppt
- 书面表达之建议信(讲义)-中考英语一轮复习(含答案).pdf
- 中考历史复习小众题型类:填空题、改错题、判断题(70题).pdf
- 2024年吉林省县乡教师选调考试《教育学》真题汇编带解析必背【基础题】.pdf
- 2025年中考语文备考之《朝花夕拾》名著导读及考题.pdf
- 小说标题的含义和作用(模拟突破)-2025年中考语文考点突破之小说阅读(解析版).pdf
- 阅读理解之应用文(练习)-中考英语一轮复习(含答案).pdf
- 小说情节作用(模拟突破)-2025年中考语文考点突破之小说阅读(原卷版).pdf
- 小说段落作用(模拟突破)-2025年中考语文考点突破之小说阅读(解析版).pdf
- 小说段落作用(试题专练)-2025年中考语文考点突破之小说阅读(解析版).pdf
- 2025年上海市16区初三语文一模试题汇编之现代文阅读二(记叙文)学生版.pdf
文档评论(0)