第三章 进程的同步与互斥
第三章进程管理4(同步和互斥1)
![第三章进程管理4(同步和互斥1)](https://img.taocdn.com/s3/m/05054946b307e87101f6962d.png)
1
进 程 管 理
执行
挂起
激活 活动就绪 挂起 释放 激活 活动阻塞 静止阻塞 释放 静止就绪
挂起
2
进 程 管 理
创建和撤销 阻塞和唤醒 挂起和激活
3
进 程 管 理
3.5 进程的同步与互斥
进程的同步和互斥机制的主要任务:控 制并发执行的诸进程之间能有效地共享 和相互协作,同时使并发执行的程序仍 具有可再现性。 进程互斥 进程同步 利用信号量机制解决具体问题
9
进 程 管 理
一种简便的实现方法是: 一种简便的实现方法是:
lock(x)= begin local v repeat v x until v=1 (临界资源成为可用) 临界资源成为可用) 临界资源成为可用 x 0 end
10
进 程 管 理
不过,这种方法是不能保证并发进程互斥执 不过,这种方法是不能保证并发进程互斥执 行所要求的准则( 行所要求的准则(3)的(只允许一个进程进入 临界区)。为了解决这个问题, )。为了解决这个问题 临界区)。为了解决这个问题,有些机器在硬件 中设置了“测试与设置(test set)指令 指令” 中设置了“测试与设置(test and set)指令”。 此外,有一点需要注意的是: 此外,有一点需要注意的是:在系统试验时锁定 key[S]总是设置在公有资源所对应的数据结构 为key[S]总是设置在公有资源所对应的数据结构 中的。 中的。
23
进 程 管 理
s.value的物理含义
当s.value>0数值时,表示某类可用资源的数量。 而当s.value<0数值时,表示该类资源已分配完。 若有进程请求该类资源,则被阻塞,其绝对值 等于等待该类资源的进程数。 每次的P(s)操作,意味着进程请求分配该类资 源的一个单位资源。相反,执行一次V(s) 操作 意味着进程释放相应资源的一个单位资源。当 值小于等于0时,表明有进程被阻塞,需要唤 醒。
实验、进程的同步与互斥——生产者消费者
![实验、进程的同步与互斥——生产者消费者](https://img.taocdn.com/s3/m/5525dd85dc88d0d233d4b14e852458fb770b38b1.png)
实验、进程的同步与互斥——⽣产者消费者1. 1. 实验⽬的两个或两个以上的进程,不能同时进⼊关于同⼀组共享变量的临界区域,否则可能发⽣与时间有关的错误,这种现象被称作进程互斥。
对CPU的速度和数⽬不做出任何假设的前提下,并发进程互斥访问临界资源,是⼀个较好的解决⽅案。
另外,还需要解决异步环境下的进程同步问题。
所谓异步环境是指:相互合作的⼀组并发进程,其中每⼀个进程都以各⾃独⽴的、不可预知的速度向前推进;但它们⼜需要密切合作,以实现⼀个共同的任务,即彼此“知道”相互的存在和作⽤。
实验⽬的:分析进程争⽤资源的现象,学习解决进程同步与互斥的⽅法。
本实验属于设计型实验,实验者可根据⾃⾝情况选⽤合适的开发环境和程序架构。
1. 2. 实验原理信号量的PV操作与处理相关,P表⽰通过的意思,V表⽰释放的意思。
1962年,狄克斯特拉离开数学中⼼进⼊位于荷兰南部的艾恩德霍芬技术⼤学(Eindhoven Technical University)任数学教授。
在这⾥,他参加了X8计算机的开发,设计与实现了具有多道程序运⾏能⼒的操作系统——THE Multiprogramming System。
THE是艾恩德霍芬技术⼤学的荷兰⽂Tchnische Hoogeschool Eindhov –en的词头缩写。
狄克斯特拉在THE这个系统中所提出的⼀系统⽅法和技术奠定了计算机现代操作系统的基础,尤其是关于多层体系结构,顺序进程之间的同步和互斥机制这样⼀些重要的思想和概念都是狄克斯特拉在THE中⾸先提出并为以后的操作系统如UNIX等所采⽤的。
为了在单处理机的情况下确定进程(process)能否占有处理机,狄克斯特拉将每个进程分为“就绪”(ready)、“运⾏”(running)和“阻塞”(blocking)三个⼯作状态。
由于在任⼀时刻最多只有⼀个进程可以使⽤处理机,正占⽤着处理机的进程称为“运⾏”进程。
当某进程已具备了使⽤处理机的条件,⽽当前⼜没有处理机供其使⽤,则使该进程处于“就绪”状态。
第三章 进程 习题
![第三章 进程 习题](https://img.taocdn.com/s3/m/c8827c3487c24028915fc313.png)
G,若系统中并发运行的进程和资源之间满足互斥使用,保持和等待,非剥夺性和循环等待,则可判定系统中发生了死锁;
H,在对付死锁的策略中,解除死锁通常都是和检测死锁配套使用;
I,产生死锁的原因可归结为竞争资源和进程推进顺序不当;
J,在死锁的解决方法中,由于避免死锁采用静态分配资源策略,所以对资源的利用率不高.
如果某一进程获得除CPU外的所有所需运行资源,经调度,分配给它CPU,该进程将进入( ).
A,就绪状态B,运行状态
C,等待状态D,活动状态
如果某一进程在运行时,因某种原因暂停,此时将脱离运行状态,而进入( ).
A,自由状态B,停止状态
C,等待状态D,静止状态
进程从运行状态变为等待状态的原因是( ).
A,共享资源B,临界区
C,临界资源D,共享区
答案-1:C
临界区是指( ).
A,并发进程中用于实现进程互斥的程序段
B,并发程序中用于实现进程同步的程序段
C,并发程序中用于实现进程通信的程序段
D,并发程序中与共享变量有关的程序段
答案-6:D
进程是( ).
A,与程序等效的概念B,并发环境中程序的执行过程
C,一个系统软件D,存放在内存中的程序
在进程通信中,使用信箱方式交换信息的是( ).
A,低级通信B,高级通信C,共享存储器通信D,管道通信
答案:B(普通)
关于进程,下列叙述不正确的是( ).
A,进程包含了数据和运行其上的程序
B,同一个程序运行在不同的数据集合上时,构成了不同的进程
C,一个被创建了的进程,在它消亡之前,总是处于3种基本状态之一
(×)2,具有多道功能的操作系统一定是多用户操作系统.
(完整版)第三章进程同步与通信作业习题与答案
![(完整版)第三章进程同步与通信作业习题与答案](https://img.taocdn.com/s3/m/9f8e21ca7fd5360cba1adbee.png)
第三章一.选择题(50题)1.以下_B__操作系统中的技术是用来解决进程同步的。
A.管道B.管程C.通道D.DMA2.以下_B__不是操作系统的进程通信手段。
A.管道B.原语C.套接字D.文件映射3.如果有3个进程共享同一程序段,而且每次最多允许两个进程进入该程序段,则信号量的初值应设置为_B__。
A.3B.2C.1D.04.设有4个进程共享一个资源,如果每次只允许一个进程使用该资源,则用P、V 操作管理时信号量S的可能取值是_C__。
A.3,2,1,0,-1B.2,1,0,-1,-2C. 1,0,-1,-2,-3D.4,3,2,1,05.下面有关进程的描述,是正确的__A__。
A.进程执行的相对速度不能由进程自己来控制B.进程利用信号量的P、V 操作可以交换大量的信息C.并发进程在访问共享资源时,不可能出现与时间有关的错误D.P、V操作不是原语操作6.信号灯可以用来实现进程之间的_B__。
A.调度B.同步与互斥C.同步D.互斥7.对于两个并发进程都想进入临界区,设互斥信号量为S,若某时S=0,表示_B_ _。
A.没有进程进入临界区B.有1个进程进入了临界区C. 有2个进程进入了临界区D. 有1个进程进入了临界区并且另一个进程正等待进入8. 信箱通信是一种_B__方式A.直接通信B.间接通信C.低级通信D.信号量9.以下关于临界区的说法,是正确的_C__。
A.对于临界区,最重要的是判断哪个进程先进入B.若进程A已进入临界区,而进程B的优先级高于进程A,则进程B可以打断进程A而自己进入临界区C. 信号量的初值非负,在其上只能做PV操作D.两个互斥进程在临界区内,对共享变量的操作是相同的10. 并发是指_C__。
A.可平行执行的进程B.可先后执行的进程C.可同时执行的进程D.不可中断的进程11. 临界区是_C__。
A.一个缓冲区B.一段数据区C.一段程序D.栈12.进程在处理机上执行,它们的关系是_C__。
进程同步与互斥总结
![进程同步与互斥总结](https://img.taocdn.com/s3/m/7b6b30424a35eefdc8d376eeaeaad1f347931170.png)
进程同步与互斥总结进程同步与互斥,这可是操作系统里超级有趣又很重要的部分呢!咱们先来说说进程同步吧。
想象一下,进程就像是一群小伙伴,大家都在做自己的事情,但是有时候呢,这些小伙伴之间需要互相配合。
比如说,一个小伙伴负责生产东西,另一个小伙伴负责把生产出来的东西拿走。
那生产的小伙伴如果生产得太快,拿走的小伙伴还没来得及拿,就会出问题啦。
这时候就需要进程同步来协调他们。
进程同步就像是一个小指挥家,告诉每个进程什么时候该做什么事情,这样大家就能有条不紊地工作了。
那进程互斥又是什么呢?这就像是小伙伴们抢一个玩具一样。
比如说,有一个资源,就像那个玩具,很多进程都想要用。
但是这个资源一次只能被一个进程使用啊。
如果两个进程同时去用这个资源,那就乱套了,就像两个小伙伴同时抢一个玩具,可能会把玩具弄坏一样。
所以进程互斥就是要保证在某个时刻,只有一个进程能够访问这个特定的资源。
在实现进程同步和互斥的时候呢,有很多方法。
比如说信号量。
信号量就像是一个小信号灯。
如果信号灯是绿的,那就表示这个资源可以被使用,进程就可以进去做自己的事情。
如果信号灯是红的,那就表示这个资源已经被占用了,其他进程就得等着。
这就像我们过马路的时候,绿灯行,红灯停一样。
还有管程。
管程就像是一个小房子,里面有一些资源和一些管理这些资源的规则。
进程要使用这些资源,就得按照管程里的规则来。
这就好比是去一个特定的地方玩,那个地方有它自己的玩法,你得遵守才能玩得开心。
进程同步和互斥在很多地方都有应用呢。
就拿打印机来说吧。
很多人都可能想要用打印机打印东西,如果没有进程同步和互斥的管理,那就可能会出现混乱的情况。
可能一个文档打印到一半,另一个文档又开始打印了,那最后打印出来的东西就完全乱了。
在多线程编程的时候,进程同步和互斥也特别重要。
如果多个线程同时对一个共享变量进行操作,那结果可能就不是我们想要的了。
比如说,一个线程在给一个变量加1,另一个线程在给这个变量减1,如果没有协调好,那这个变量的值可能就变得乱七八糟的。
北大操作系统第三章:操作系统习题课(三)
![北大操作系统第三章:操作系统习题课(三)](https://img.taocdn.com/s3/m/254d1fc6aa00b52acfc7ca81.png)
操作系统习题讲解进程的同步与互斥(三)赵俊峰P 、V 题的一般分析过程1问题的分析确定有哪些进程y1.问题的分析,确定有哪些进程;2y2.确定各个进程之间的同步互斥关系;y3.信号量的设计(初值以及用来实现哪些进程间的同步互斥、是否需要一般变量的辅助)辅助);y4、实现(避免出现不公平现象比如饥饿、避免出现死锁如P 操作的次序问题)。
同学们的问题1有几个进程进程的划分?y:有几个进程,进程的划分?y 2:if 判断语句与P/V 之间的区别?多余的判断?y 3:每个进程的行为划分?对于行为的控制?该谁去控制?触发行为的条件及被触发的行为?y 5:触发行为的条件及被触发的行为?y 6:需要全面考虑题目要求需要全面考虑题目要求y 7:什么时候需要计数?共享变量需要互斥使用y 8:共享变量需要互斥使用进程同步与互斥习题(四)请用信号量解决以下问题y 把学生和监考老师都看作进程, 学生有N 人, 考场门口每次只能进出个人教师1人. 考场门口每次只能进出一个人, 进考场原则是先来先进. 当N 个学生都进入考场后, 教师才能发卷子. 学生交卷后可以离开考场. 教师要等收上来全部卷子并封装卷子后才能离开考场.(1)(1)问共需设置几个进程?(2) 试用P 、V 操作解决上述问题中的同步和互斥关系.进程同步与互斥习题(四)共享资源:考场门口请用信号量解决以下问题y 把学生和监考老师都看作进程, 学生有N 人, 考场门口每次只能进出个人教师1人. 考场门口每次只能进出一个人, 进考场原则是先来先进.c 当N 个学生都进入考场后, 教师才能发卷子. 学生交卷后可以离开考场. d 教师要等收上来全部卷子并封离同步行为:c d 装卷子后才能离开考场.(1) ?()问共需设置几个进程(2) 试用P 、V 操作解决上述问题中的同步和互斥关系.信号量及其他变量的设置需设置以下的信号量S_Door = 1//能否进出门;S St d tR d 0学生是否到齐S_StudentReady = 0//学生是否到齐;S_Mutex1 = 1//互斥信号量;S M t 21互斥信号量S_Mutex2 = 1//互斥信号量;S_ExamBegin = 0//开始考试;S E O 0考试结束所有试卷S_ExamOver = 0//考试结束,所有试卷已交;int nStudentNum 0;int nStudentNum = 0;int nPaperNum = 0;student(){学生进程P(S_Door);进门;V(S Door);V(S_Door);P(S_Mutex1);// 增加学生的个数nStudentNum ++;if(nStudentNum N)V(S StudentReady);if(nStudentNum == N) V(S_StudentReady);V(S_Mutex1);P(S_ExamBegin);//等老师宣布考试开始考试;交卷;P(S Mutex2);P(S_Mutex2);//增加试卷的份数nPaperNum ++;if(nPaperNum == N) V(S_ExamOver);V(S Mutex2);V(S_Mutex2);P(S_Door);出门;V(S_Door);}Teacher()教师进程(){P(S_Door);进门进门;V(S_Door);P(S StudentReady);//P(S_StudentReady); 最后一个进来学生把老师唤醒;发卷子;for(i=1; i <= N; i++)(;;)V(S_ExamBegin);//开始考试;P(S_ExamOver);//等待考试结束;封装卷子P(S_Door);出门;V(S_Door);}进程同步与互斥习题(五)某商店有两种食品B A 和B, 最大数量各为m 个.该商店将A,B 两种食品搭配出售, 每次各取一个. 为避免食品变质, 遵循先到食品先出售的原则, 有两个食品公司分别不断地供应A,B 两)种食品(每次一个). 为保证正常销售, 当某种食品的数量比另一种的数量超过k(k<m)个时, 暂停对数量大的食品进货, 补充数量少的食品.◦(1)(1) 问共需设置几个进程?◦(2) 试用P ,V 操作解决上述问题中的同步和互斥关系.生产者-消费者中的消费者行为进程同步与互斥习题(五)某商店有两种食品B A 和B, 最大数量各为m 个. 该商店将A,B 两种食品搭配出售, 每次各取一个. 为避免食品变质, 遵循先到食品先出售的原则, 有两个食品公司分别不断地供应A,B 两)种食品(每次一个).为保证正常销售, 当某种食品的数量比另一种的数量超过k(k<m)个生产者-消费者中的生产者行为生产者之间时, 暂停对数量大的食品进货, 补充数量少的食品.的同步行为◦(1) 问共需设置几个进程?(2)PV ◦(2) 试用P ,V 操作解决上述问题中的同步和互斥关系.信号量及其他变量的设置设置以下的信号量 S_Mutex = 1 S Wait A = 0; S_Wait_A = 0; S_Num_A = 0; S BuffNum A = m; S_BuffNum_A = m; S_Wait_B = 0; S Num B 0; S_Num_B = 0 S_BuffNum_B = m; i t N int nNum_A = 0; A 0 int nNum_B = 0; //用于互斥访问的信号量 //A太多了,要等一等 太多了 要等一等B //食品A的空闲缓冲区个数; //B太多了,要等一等A //食品B的空闲缓冲区个数;Producer_A() A进程 { int b_TooMuch; while(1) { 生产产品; P(S_Mutex); if((nNum A nNum_B) == k) b_TooMuch = 1; if((nNum_A nNum B) == k) b TooMuch = 1; else b_TooMuch = 0; V(S_Mutex); if(b T M h) P(S W i A) //A太多了 if(b_TooMuch) P(S_Wait_A); 太多 P(S_BuffNum_A); 向商店提供一个 向商店提供 个A商品; V(S_Num_A); P(S_Mutex); nNum A ++; nNum_A ++; if(nNum_B - nNum_A == k-1) V(S_Wait_B); //可以进B了}}V(S Mutex); V(S_Mutex);Producer_B() B进程 { int b_TooMuch; while(1) { 生产产品; P(S_Mutex); if((nNum B nNum_A) == k) b_TooMuch = 1; if((nNum_B nNum A) == k) b TooMuch = 1; else b_TooMuch = 0; V(S_Mutex); if(b T M h) P(S W i B) //B太多了 if(b_TooMuch) P(S_Wait_B); 太多 P(S_BuffNum_B); 向商店提供一个 向商店提供 个B商品; V(S_Num_B); P(S_Mutex); nNum B ++; nNum_B ++; if(nNum_A - nNum_B == k-1) V(S_Wait_A); //可以进A了}}V(S Mutex); V(S_Mutex);Shop() Sh () { while(1) { P(S_Num_A); ( _Num_B); ); P(S 出售A、B食品各一个; V(S BuffNum A); V(S_BuffNum_A); V(S_BuffNum_B); } }Shop进程信号量和P、V原语的小结对信号量和P、V原语的使用可以归纳为三种情形: 第一,把信号量视为一个加锁标志位,其目的是为了 实现对某个唯一 实现对某个唯 唯一的共享数据 唯 的共享数据 共享数据的互斥访问 互斥访问,如数据库中 的某个记录,各个进程间的某个共享变量。
计算机操作系统03进程的同步与通信
![计算机操作系统03进程的同步与通信](https://img.taocdn.com/s3/m/91719369998fcc22bcd10dd3.png)
用TS实现进程互斥: repeat while TS(lock) do skip; critical section lock:=false; remainder section until false;
第三章 进程的同步与通信
2. 利用Swap指令实现互斥 Swap指令: procedure (var a,b:Boolean) var temp:Boolean; begin temp:=a; a:=b; b:=temp end
计算机操作系统
第三章 进程的同步与通信
教学目的与要求: 1.掌握进程同步、进程通信、资源、信号量等
基本概念 2.了解解决进程同步问题的软件方法和硬件方
法 3.能用信号量和管程解决简单进程同步问题 4.了解OS/2操作系统的进程同步与通信机制
第三章 进程的同步与通信
重点与难点:
1. 同步、通信、资源、信号量等基本概念
第三章 进程的同步与通信
2 临界资源的定义 临界资源是指并发进程之间在某段时间内同
时提出访问请求的互斥型资源。 例:在A进程正在访问打印机的时候,B进程也提
出对打印机的访问请求,则打印机为临界资源。应 互斥使用临界资源。
三.临界区 1 临界区的定义 是指进程中访问临界资源的那段代码
第三章 进程的同步与通信
第三章 进程的同步与通信
算法3:与算法2相似,只是在flag[i]=ture时表示进 程P[i]要求进入临界区,若此时无其它进程有此要求, 则进程P[i]可进入临界区。对于进程Pi repeat flag[i]:=true; while flag[j] do no_op critical section flag[i]:=false; remainder section until false 该算法的缺点:违背了空闲让进和有限等待原则
操作系统考点整理
![操作系统考点整理](https://img.taocdn.com/s3/m/7335c55c7dd184254b35eefdc8d376eeaeaa1725.png)
操作系统考点第一章:1,操作系统的定义(简述):操作系统是一组用于控制和管理计算机系统中所有资源的程序的集合,其任务是合理的组织计算机的工作流程,有效的组织诸资源协调一致的工作以完成各种任务,从何达到充分发挥资源效率方便用户使用计算机的目的。
2,操作系统的功能:<六大点要记得,下面的小点只要记得部分>(1)处理机管理,包括a 进程控制和管理b进程的同步和互斥c进程通信d进程死锁e线程控制和管理f处理器调度(2)存储管理,包括a存储分配b存储共享c地址转换与存储保护d存储扩充(3)设备管理,包括a提供I/O设备的控制与管理b提供缓冲区的管理c提供设备的独立性d外围设备的分配和去配e实现共享性I/O设备的驱动调度f实现虚拟设备(4)文件管理a提供文件逻辑组织方法b提供文件物理组织方法c提供文件存取方法d提供文件使用方法e实现文件的目录管理f实现文件的共享和存取控制g实现文件的存储空间管理(5)网络管理a网上资源管理功能b数据通信管理功能c网络管理功能(6)提供的良好的用户界面,她是直接关系到操作系统能否得到用户认可的一个关键问题。
3,操作系统的特性:(1)并发性(2)共享性(3)不确定性(4)虚拟性(区别并发与并行)4,通道是一种专用处理部件,它能控制一台或者多台外设工作,负责外部设备和内存之间的信息传输。
(注;主机与I/O之间并行程度最高的方式就是通道)第二章:1,操作系统可以通过程序接口和操作接口两种方式把它的服务和功能提供给用户。
程序接口也称应用程序接口(API)2,系统调用他是用户程序或者其他系统程序获得操作系统服务的唯一途径。
第三章:1,中断的概念:中断是指CPU对系统中或系统外发生异步事件的响应。
2,进程是为了描述程序在并发执行时对系统资源的共享,所需的一个描述程序执行时动态特征的概念。
进程是具有独立功能的程序关于某个数据集合上的一个运动活动,是系统进行资源分配,调度和保护的独立单位3,(注意:七状态转换的条件,例如激活是将什么状态转换为什么状态4,PCB(进程控制块)是系统感知进程存在的唯一标志。
第三章Operating_System进程管理
![第三章Operating_System进程管理](https://img.taocdn.com/s3/m/19ea70ed4afe04a1b071dead.png)
作业的概念主要用于批处理操作系统;而进程 的概念几乎用于所有的多道系统中。
5. 进程的组成
程序:描述进程要完成的功能。 数据:程序执行时需要的数据。 进程控制块(PCB):存储有关进程的
各种信息,操作系统根据它来控制和管 理进程。
6 进程控制块 (PCB, process control block)
进程控制信息:
– 当前状态; – 优先级(priority); – 代码执行入口地址; – 程序的外存地址; – 运行统计信息(执行时间、页面调度); – 进程间同步和通信信息;阻塞原因
资源管理信息:虚拟地址空间的现状、打开文件列 表
CPU现场保护结构:寄存器值(通用、程序计数器 PC、状态PSW)
进程与程序的组成不同:进程的组成包括程序、数据和 进程控制块(即进程状态信息)。
进程具有并发特征(独立性和异步性) ;而程序没有。 进程与程序的对应关系:通过多次执行,一个程序可对
应多个进程;通过调用关系,一个进程可包括多个程序。
4.作业与进程的区别
作业是用户向计算机提交任务的实体,被提交 后进入外存的作业等待队列。而进程是完成用 户任务的执行实体,被创建后,总有相应部分 常驻内存;
分配处理机资源;
2. 转换
进程创建(Enter):系统创建进程,形成 PCB,分配所需资源,排入暂停进程表 (可为一个队列);
调度运行(Dispatch):从暂停进程表中选 择一个进程(要求已完成I/O操作),进入 运行状态;
暂停运行(Pause):用完时间片或启动I/O 操作后,放弃处理机,进入暂停进程表;
顺序执行的特征
– 顺序性:按照程序结构所指定的次序(可能有分支或循环)
死锁知识题及答案解析
![死锁知识题及答案解析](https://img.taocdn.com/s3/m/d373da58fab069dc502201ba.png)
第三章死锁习题一、填空题1.进程的“同步”和“互斥”反映了进程间①和②的关系。
【答案】①直接制约、②间接制约【解析】进程的同步是指在异步环境下的并发进程因直接制约而互相发送消息,进行相互合作、相互等待,使得各进程按一定的速度执行的过程;而进程的互斥是由并发进程同时共享公有资源而造成的对并发进程执行速度的间接制约。
2.死锁产生的原因是①和②。
【答案】①系统资源不足、②进程推进路径非法【解析】死锁产生的根本原因是系统的资源不足而引发了并发进程之间的资源竞争。
由于资源总是有限的,我们不可能为所有要求资源的进程无限地提供资源。
而另一个原因是操作系统应用的动态分配系统各种资源的策略不当,造成并发进程联合推进的路径进入进程相互封锁的危险区。
所以,采用适当的资源分配算法,来达到消除死锁的目的是操作系统主要研究的课题之一。
3.产生死锁的四个必要条件是①、②、③、④。
【答案】①互斥条件、②非抢占条件、③占有且等待资源条件、④循环等待条件【解析】互斥条件:进程对它所需的资源进行排它性控制,即在一段时间内,某资源为一进程所独占。
非抢占条件:进程所获得的资源在未使用完毕之前,不能被其它进程强行夺走,即只能由获得资源的进程自己释放。
占有且等待资源条件:进程每次申请它所需的一部分资源,在等待新资源的同时,继续占有已分配到的资源,循环等待条件:存在一进程循环链,链中每一个进程已获得的资源同时被下一个进程所请求。
4.在操作系统中,信号量是表示①的物理实体,它是一个与②有关的整型变量,其值仅能由③原语来改变。
【答案】①资源,②队列,③P-V【解析】信号量的概念和P-V原语是荷兰科学家E.W.Dijkstra提出来的。
信号量是一个特殊的整型量,它与一个初始状态为空的队列相联系。
信号量代表了资源的实体,操作系统利用它的状态对并发进程共享资源进行管理。
信号量的值只能由P-V原语来改变。
5.每执行一次P原语,信号量的数值S减1。
如果S>=0,该进程①;若S<0,则②该进程,并把它插入该③对应的④队列中。
第3章 进程同步与死锁
![第3章 进程同步与死锁](https://img.taocdn.com/s3/m/c06204ce89eb172ded63b757.png)
内容提要
本章主要阐述了进程的同步与互斥及其相关的算法,介绍 了进程通信,并分析了死锁产生的原因以及处理死锁的相关策 略。本章是操作系统课程的核心内容。
教学目标
1.理解并掌握临界资源和临界区、进程同步和互斥的概念。 2.掌握进程同步与互斥的解决方法。 3.了解管程的概念和实现。 4.了解进程通信的方式。 5.理解死锁的概念、死锁产生原因和必要条件。 6.了解预防和避免死锁的方法,了解死锁的检测和解除方 法。
3.1 进程的互斥与同步
3.1.2 进程互斥的实现
4.利用Exchange(或Swap)指令实现进程互斥利用指令 利用XCHG实现进程的P1和P2互斥的描述如下: 进程P1 进程P2 …… …… L1: MOV CX,1 L1: MOV CX,1 XCHG CX,W XCHG CX,W CMP CX,1 CMP CX,1 JZ L1 JZ L2 临界区; 临界区; MOV CX,0 MOV CX,0 XCHG CX,W XCHG CX,W …… …… 变量W的初值为0。
利用BTS和BTC这两条指令实现两个并发进程P1、P2 互斥使用临界资源的描述如下: 进程P1 进程P2 …… …… L1: BTS W,0;变量W的第0位 L2: BTS W,0 JC L1 JC L2 临界区; 临界区; BTC W,0 BTC W,0 …… ……
3.1 进程的互斥与同步
3.1.2 进程互斥的实现 4.利用Exchange(或Swap)指令实现进 程互斥 例:在80x86 CPU 中提供的指令是XCHG, 其格式是:XCHG OPRD1,OPRD2 其中OPRD1是寄存器,OPRD2可以是寄存器, 也可以是存储器,执行该指令后两个操作数的值进 行了交换。
操作系统实验报告——进程同步与互斥
![操作系统实验报告——进程同步与互斥](https://img.taocdn.com/s3/m/47f4f367b5daa58da0116c175f0e7cd185251871.png)
操作系统实验报告——进程同步与互斥一、实验内容本实验主要内容是通过编写程序来实现进程的同步与互斥。
具体来说,是通过使用信号量来实现不同进程之间的同步和互斥。
我们将编写两个进程,一个进程负责打印奇数,另一个进程负责打印偶数,两个进程交替打印,要求打印的数字从1开始,直到100结束。
二、实验原理进程的同步是指多个进程之间按照一定的顺序执行,进程之间互相等待的关系。
而进程的互斥是指多个进程竞争同一个资源,需要通过其中一种方式来避免同时访问共享资源,以免造成数据错乱。
在本实验中,我们使用信号量来实现进程的同步与互斥。
信号量是一个计数器,用于表示一些共享资源的可用数量。
进程在访问共享资源时,需要先对信号量进行操作,当信号量大于0时,表示资源可用,进程可以访问;当信号量等于0时,表示资源不可用,进程需要等待。
进程同步的实现可以通过信号量的P操作与V操作来完成。
P操作用于申请资源,当资源可用时,将计数器减一,并进入临界区;V操作用于释放资源,当资源使用完毕时,将计数器加一,使等待资源的进程能够申请。
进程互斥的实现可以通过信号量的P操作与V操作结合临界区来完成。
当多个进程需要访问共享资源时,需要先进行P操作,进入临界区,访问完毕后进行V操作,离开临界区。
三、实验步骤1.首先,我们需要创建两个进程,一个进程负责打印奇数,另一个进程负责打印偶数。
2. 然后,我们创建一个共享变量count,用来记录打印的数字。
3. 接着,我们创建两个信号量odd和even,用来控制进程的同步与互斥。
odd信号量初始值为1,表示打印奇数的进程可以访问;even信号量初始值为0,表示打印偶数的进程需要等待。
4.编写奇数打印进程的代码,首先进行P操作,判断奇数信号量是否大于0,如果大于0,表示可以打印奇数。
5. 如果可以打印奇数,将count加一,并输出当前的奇数,然后进行V操作,释放偶数打印进程的等待。
6.同样的,编写偶数打印进程的代码,首先进行P操作,判断偶数信号量是否大于0,如果大于0,表示可以打印偶数。
第3章进程并发控制作业题参考答案
![第3章进程并发控制作业题参考答案](https://img.taocdn.com/s3/m/09b01ff477eeaeaad1f34693daef5ef7ba0d1224.png)
第3章进程并发控制作业题参考答案作业题题1进程间的互斥与同步表示了各进程间的______。
A.竞争与协作B. 相互独立与相互制约C .临界区调度原则 D. 动态性与并发性题2 若执行信号量S操作的进程数为3,信号量S初值为2,当前值为-1,表示有____个等待相关临界资源的进程。
A 0B 1C 2D 3题 3 由于并发进程执行的随机性,一个进程对另一个进程的影响是不可预测的,甚至造成结果的不正确,_________。
A.造成不正确的因素与时间有关B. 造成不正确的因素只与进程占用的处理机有关C.造成不正确的因素与执行速度无关D. 造成不正确的因素只与外界的影响有关题4 下列机构中不能用于进程间数据通信的是____________。
A.消息B.共享存储区C. 信号量D.管道题5 下面有关管程的说法,不正确的是________A.管程是种进程同步机制B. 管程是一种编程语言成分C. 管程是一种系统调用D.管程比信号量更容易保证并行编程的正确性题6 什么是临界资源和临界区?一个进程进人临界区的调度原则是什么?题7 进程之间存在哪几种制约关系?各是什么原因引起的?下列活动分别属于哪种制约关系?(1)图书馆借书。
属于互斥关系。
(2)两队举行篮球赛。
既有互斥关系,又有同步关系。
(3)流水生产线。
属于同步关系。
(4)乐队演奏。
属于同步关系。
(5)购买火车票。
属于互斥关系。
题8 在生产者消费者问题中,如果将两个P操作即生产者程序流程中的P(buffers)和P(mutex)互换位置.结果会如何? 形成死锁。
题9 试用P、V操作描述下列理发师和顾客之间的同步问题。
某个理发师当没有顾客时,去睡觉;当有顾客来理发,若理发师正在睡觉时,这个顾客会叫醒他,理发师给该顾客理发,理发期间若还有顾客到达则等待理发师依次理发,直到没有顾客到来,理发师又去睡觉。
wakeup,wait,mutex:semaphore;wakeup:=0;wait:=0;mutex:=1;cobegin顾客进程:{p(mutex);rc=rc+1;if(rc==1) v(wakeup);else p(wait);v(mutex);理发;}理发师进程:{P(wakeup);While(rc!=0){理发;p(mutex);rc=rc-1;if(rc!=0)v(wait);v(mutex);}}coend自测题一、选择题1.并发性是指若干事件在______发生。
进程同步与互斥_哲学家进餐问题
![进程同步与互斥_哲学家进餐问题](https://img.taocdn.com/s3/m/53e41a40ba0d4a7302763ac7.png)
2.1总体设计思想
哲学家的生活就是思考和吃饭,即思考,饿了就吃,吃饱了再思考,循环往复。要求是:每一个哲学家只有在拿到位于他左右两侧的筷子后,才能够就餐;哲学家不能拿着一只筷子不放手,也不能从其他哲学家手中抢夺筷子;哲学家每次吃饱后必须放下他手中的两只筷子恢复思考,不能强抓住筷子不放。
设计一个程序,能够显示当前各哲学家的状态和桌上筷子的使用情况,并能无死锁的推算出下一状态各哲学家的状态和桌上筷子的使用情况。即设计一个能安排哲学家正常生活的程序。
4
using System;
using System.Collections.Generic;
using ponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
3.退出区:清除临界区被占用的标志
4.剩余区:进程与临界区不相关部分的代码
2.2系,是为完成某种任务而建立的两个或多个线程,这个线程需要在某些位置上协调他们的工作次序而等待、传递信息所产生的制约关系。进程间的直接制约关系来源于他们之间的合作。
比如说进程A需要从缓冲区读取进程B产生的信息,当缓冲区为空时,进程B因为读取不到信息而被阻塞。而当进程A产生信息放入缓冲区时,进程B才会被唤醒。概念如下图所示。
for (int i = 0; i < 5; i++)
{
pts = new ParameterizedThreadStart(Eating);
m_thread[i] = new Thread(pts);
}
Philospher ph = new Philospher();
操作系统讲稿2012(第三章)
![操作系统讲稿2012(第三章)](https://img.taocdn.com/s3/m/4503c76b1eb91a37f1115c4c.png)
例:程序A的起始地址为51200,共12条指令;程序B 的起始地址为81920,共4条指令,其中第4条指令包 括I/O指令;程序C的起始地址为194560,共12条指 令;分派程序的起始地址为20480,共6条指令;三个 程序以及分派程序均在内存,操作系统每次执行6条 用 户程序指令后就会自动终止当前用户程序,转去执行 分派程序。每条指令需要一个指令周期,则程序的执 行过程如下:
1. 51200 2. 51201 3. 51202 4. 51203 5. 51204 6. 51205 超时
7 20480 8 20481 9 20482 10 20483 11 20484 12 20485 13 81920 14 81921 15 81922 16 81923 I/O请求
17 20480 18 20481 19 20482 20 20483 21 20484 22 20485 23 194560 24 194561 25 194562 26 194563 27 194564 28 194565 超时
3.程序的顺序执行:一个具有独立功能的程序独占处理机 直至最终结束的过程称为程序的顺序执行。
4.程序顺序执行的特征: (1)顺序性:每一个操作都必须在上一个操作完成 之后开始 内:语句之间、指令之间 外:程序之间 (2)封闭性:资源独占,只有运行的程序能够改变资 源状态,每个程序的执行不会受到外部因素的影响。
就绪 阻塞
× ×
被分派程序 选中
×
事件发生
× ×
被父进程终止 被父进程终止
×
说明:一般的操作系统为了管理方便,根据等待的事件设置多个 阻塞队列,将等待不同事件的进程放在不同的等待队列中。
3.4进程控制
进程控制:系统使用一些具有特定功能的程序来创建、撤 消进程以及完成进程各状态间的转换,从而达到多进程、 高效率、并发执行和协调、实现资源共享的目的。 进程控制是通过原语来实现。 原语:用于完成某种特定功能的不可分割的一段程序。 原语的实现是通过关中断来实现的。 实现进程控制的程序段被称作进程控制原语。
操作系统实验报告-进程同步与互斥
![操作系统实验报告-进程同步与互斥](https://img.taocdn.com/s3/m/02677ae9763231126fdb118f.png)
操作系统实验报告-进程同步与互斥(总12页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--《进程同步与互斥》实验报告学号姓名专业、班实验地点指导教师时间一、实验目的1、掌握基本的进程同步与互斥算法,理解生产者-消费者问题。
2、学习使用Windows 2000/XP中基本的同步对象,掌握相关API的使用方法。
3、了解Windows 2000/XP中多线程的并发执行机制,实现进程的同步与互斥。
4、设计程序,实现生产者-消费者进程(线程)的同步与互斥;二、实验环境Windows 2000/XP + Visual C++三、实验内容以生产者-消费者模型为依据,在Windows 2000/XP环境下创建一个控制台进程,在该进程中创建n个线程模拟生产者和消费者,实现进程(线程)的同步与互斥。
四、设计思路和流程框图生产者进程的功能:生产东西,供消费者消费;消费者进程的功能:消费生产者生产的东西。
生产者生产产品并存入缓冲区供消费者取走使用,消费者从缓冲器内取出产品去消费。
在生产者和消费者同时工作时,必须禁止生产者将产品放入已装满的缓冲器内,禁止消费者从空缓冲器内取产品。
五、源程序(含注释)清单六、测试结果以及实验总结1、通过实验进一步了解了基本的进程同步与互斥算法,理解生产者-消费者问题2、掌握了相关API的使用方法。
3、了解到进程是一个可以拥有资源的基本单位,是一个可以独立调度和分派的基本单位。
而线程是进程中的一个实体,是被系统独立调度和分配的基本单位,故又称为轻权(轻型)进程(Light Weight Process)。
4、了解到同步对象是指Windows中用于实现同步与互斥的实体,包括信号量(Semaphore)、互斥量(Mutex)、临界区(Critical Section)和事件(Events)等。
本实验中使用到信号量、互斥量和临界区三个同步对象。
成绩备注:实验报告文档的名称:姓名_实验编号(例如:张三_1、张三_2);实验报告发送到。
第三章 进程同步问题习题答案
![第三章 进程同步问题习题答案](https://img.taocdn.com/s3/m/0966ecbbb0717fd5360cdcb6.png)
进程同步练习1.有一阅览室,共有100个座位。
读者进入时必须先在一张登记表上登记,该表为每一座位列一表目,包括座号和读者姓名。
读者离开时要消掉登记内容。
试用P、V操作描述读者进程的同步结构。
varmutex : semaphere;信号量,用于互斥full : semaphere; 信号量,用于同步table : array 0..n-1 of item; 登记表procedure reader;读者进程beginP(full);P(mutex);Register_name(table);V(mutex);Reading;P(mutex);Delet_name(table);V(mutex);V(full)end;beginseminitsal(mutex.v,1; full.v,100);初始化cobeginreader;reader;...coendend.2.设公共汽车上有一位司机和一位售票员,它们的活动如下:售票员:动车辆售票正常行车开车门到站停车关车门请分析司机与售票员之间的同步关系,如何用PV操作实现。
答:为了安全起见,显然要求:关车门后才能启动车辆;到站停车后才能开车门。
所以司机和售票员在到站、开门、关门、启动车辆这几个活动之间存在着同步关系。
用两个信号量S1、S2分别表示可以开车和可以开门,S1的初值为1,S2的初值为0。
用PV操作实现司机进程和售票员进程同步的算法描述如下:售票员:(S1)售票动车辆P(S2)正常行车开车门到站停车关车门V(S2)V(S1)另外,程序中PV操作出现的顺序与信号量的初值设置有关,以本题为例,算法如下描述时,S1、S2的初值均应为0。
售票员:常行车售票站停车P(S2)V(S2)开车门P(S1)关车门启动车辆V(S1)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
互斥问题举例
对于例2,可以采用下列方法解决“与时间有关的错误”: 针对临界资源机票库设置一个信号量mutex,初值为1。每个 终端进程中的程序描述如下: P(mutex); 在机票数据库中取出当前剩余票数X; 判断X>0(有票吗)? 如果有, X≥N(票够吗)? 如果够,则出票(打印票据); X=X-N(修改剩余票数); 将X回写到数据库中; V(mutex); 如果终端A先来,对mutex进行P操作后,进入临界区,此时 mutex为0。当它还没有处理完毕时,其它任何终端到来都因 其执行P(mutex)后被阻塞,直到终端A执行了V(mutex)后 将它们唤醒后才能进入其临界区对x进行操作,从而保证了只有 一个进程进入临界区,避免了“与时间有关的错误” 的发生。
哲学家就餐问题
• 容易导致死锁 如果所有的哲 学家在同一时刻都 感到饥饿,他们都 坐下,都拿起左边 的叉子,都伸手拿 右边的叉子,但都 没拿到。则所有的 哲学家都会饿死
哲学家就餐问题
为防止死锁发生可采取的措施: • 最多允许4个哲学家同时坐在桌子周围 • 仅当一个哲学家左右两边的筷子都可用时,才允 许他拿筷子 • 给所有哲学家编号,奇数号的哲学家必须首先拿 左边的筷子,偶数号的哲学家则反之 • 为了避免死锁,把哲学家分为三种状态,思考, 饥饿,进食,并且一次拿到两只筷子,否则不拿
售票员 P2 while (true) { 关门; 售票; 开门; }
进程的互斥(间接作用)
进程的互斥:mutual exclusion 由于各进程要求共享资源,而有些资源需要互斥 使用,因此各进程间竞争使用这些资源,进程的 这种关系为进程的互斥 临界资源:critical resource 系统中某些资源一次只允许一个进程使用,称 这样的资源为临界资源或互斥资源或共享变量 临界区(互斥区):critical section 在进程中涉及到临界资源的程序段叫临界区 多个进程的临界区称为相关临界区
进程的同步(直接作用)
进程的同步:synchronism 指系统中多个进程中发生的事件存在某种 时序关系,需要相互合作,共同完成一项 任务。具体说,一个进程运行到某一点时 要求另一伙伴进程为它提供消息,在未获 得消息之前,该进程处于等待状态,获得 消息后被唤醒进入就绪态
例
•
司机 P1 while (true) { 启动车辆; 正常运行; 到站停车; }
临界资源与临界区
为了讨论进程互斥问题,必须先定义两个基本概念: 临界 资源与临界区。 1.临界资源 临界资源指的是一次只允许一个进程使用的独占资源。诸进程 对它的访问必须互斥。 这样的临界资源通常包括共享的系统资源或用户资源,例 如:字符设备或其它只允许一个进程使用的设备,共享的 数据结构如表格、队列,共享变量或共享内存等等。 2ቤተ መጻሕፍቲ ባይዱ临界区 临界区是指包含了访问临界资源的那段程序。我们将临界区作 为特殊的程序段进行如下处理: 诸进程在进入临界区之前必须先申请,当且仅当临界区中涉 及的临界资源没有其它进程使用时才能进入临界区;而在 出临界区后要立即释放临界资源,让其它共享同一临界资 源的进程能够进入其临界区
第三章 进程的同步与互斥
问题的提出
• 单处理机多道程序并发执行的系统中,多 个进程并发执行过程可能会有互相协作、 互相等待、共享某些系统资源等问题发生。 操作系统必须保证这些并发的进程能够在 有限时间内获得它们所需要的资源,并保 证共享环境下资源的完整性,同时对于互 相协作的进程还要保证其能够按照正常的 时序执行。
互斥问题与同步问题
1.互斥问题 判断诸进程之间是否存在互斥,可以根据是否同时满足以下两个 互斥必要条件来判断: ⑴.诸进程共享同一个临界资源; ⑵.共享的方式是先来者先使用的异步方式。 同时满足以上两个必要条件的多进程共享临界资源的问题就是互 斥问题。 这两点是判断互斥问题的重要依据,其中第⑵点尤其容易被忽视, 从而造成互斥与同步问题的混淆,从而导致解决问题的方法错 误。 由于临界资源是多进程共享的公共资源,所以称解决互斥问题 的信号量为公用信号量; 这些共享同一个临界资源的进程之间的关联属于间接关联; 诸进程对于临界资源以异步的方式共享。 因此,这类问题属于互斥问题,需要使用操作系统提供的互斥机 制来解决。
同步问题
协作进程之间一般有以下几种不同的同步问 题: 前驱与后继同步问题 单缓冲与多缓冲读写同步问题 生产者消费者同步问题
信号量及其P、V操作
信号量机制作为操作系统提供的一种进程通信方式,主要用 于实现进程之间的同步和互斥。 每个信号量是一个2元组,由信号量s和s的等待队列q组成: s是一个具有非负初值的整型变量; q是一个初始状态为空的等待队列。 信号量s是个特殊的整型变量,信号s的值描述了可用资源的 数量或等待该资源的进程个数:当s≥0时表示可用资源数; 当s<0时其绝对值|s|表示等待该资源的进程数。对s值 的修改只能通过操作系统提供的系统调用进行,而不能使 用一般的赋值语句。 通过执行信号量的P操作或V操作来申请或释放信号量: P操作表示申请资源; V操作表示释放资源。 P、V操作过程涉及信号量值的修改,而信号量是共享变量, 因此P、V操作用原语实现,不允许中断。
用P、V操作实现进程同步
用P、V操作实现进程同步的算法可以简单归纳如下: ⑴.分析每个进程的执行条件和释放条件,针对每个执行条 件设置一个信号量,其初值根据初始情况确定; ⑵.对每个进程做如下处理: 在请求条件处执行P(执行条件信号量); 在释放条件处执行V(释放条件信号量)。 同步问题与互斥问题的区别: 互斥问题中各进程涉及共同的临界资源,因此每个进程中 涉及同一个临界资源的临界区中所执行的P、V操作的信 号量是相同的; 而同步问题中每个进程由于执行条件和释放条件的不同因 而其P、V操作涉及的信号量也不同。 这是解决这两类问题算法的不同之处。
互斥问题
• 解决互斥问题,最简单 的方法是为每个临界资 源设置一个锁位,锁位 为0或1分别表示临界区 可用或已被占用,类似 于将家门上锁、开锁, 将临界区用上锁原语和 开锁原语括起来。如右 图所示:
上锁原语; 临界区; 开锁原语;
互斥问题
上锁原语算法lock
输入:锁变量w 输出:无 { /*检测锁位为0吗?不为0继续检测*/ while(w==1); w=1; //进入临界区前先上锁 }
进程进入临界区前,先执行上锁原语,判断锁 位是否为开启状态,是则置其为关闭状态 (随手关门),然后进入临界区。随后到 来的进程由于先到先进入的进程已将锁位 置为关闭状态而不能进入临界区,直到先 进入的进程出临界区时,执行开锁原语, 将锁位置为开启状态后,后续进程才能够 进入临界区。
开锁原语算法 unlock
理发店问题
• 存在时间安排问题,可能导致对顾客的不 公平待遇。 • 假设当前有三位顾客坐在三把理发椅上, 这时,顾客可能被阻塞在P(finished);并 且,由于队列的组织结构,他们将按照进 入理发椅的顺序被释放。但是,如果有一 位理发师速度比较快,或者一位顾客头发 比较短,这时怎么办? • 解决方法呢?
理发店问题
• 我们给每位顾客指定一个唯一的顾客号,这等同 于让每个顾客在进入理发点时领取一个编号。信 号量mutex1保护对全局变量count的访问,使 得每位顾客都可以获得一个唯一的编号。信号量 finished被重新定义成一个包含50个信号量的 数组,当一个顾客坐到一个理发椅上时,他执行 P(finished[count])操作,等待自己唯一的信 号量;当理发师结束该顾客的理发后,理发师执 行V(finished[count])释放正确的顾客
理发店问题
• 场景:理发店有三个椅子、三位理发师,等待区 中有可容纳4位顾客的沙发,更多的顾客还可以 在站席区等候,理发店中的顾客总数被限制在20 以内。在这个例子中,我们假设理发店最终接待 了50位顾客。 • 要求:如果理发店顾客已满,新来的顾客就不能 再进入。顾客一旦进入理发店,可以坐在沙发上 等待,如果沙发已满就站着。当有一位理发师空 闲时,在沙发上坐的时间最久的顾客得到服务, 而且如果还有顾客站着,进入理发店站的时间最 久的顾客可以坐在沙发上。当一位顾客理发结束 后,任何理发师都可以接受付款,但由于只有一 台收银机,因此一次只能有一位顾客付款。理发 师从事理发、接受付款、在他们自己的椅子上睡 眠以等待顾客这三种工作。
经典问题
哲学家就餐问题 理发师问题
哲学家就餐问题
• 有五个哲学家围坐在一圆桌旁,桌中央 有一盘粉条,每人面前有一只空盘子, 每两人之间放一只叉子 • 每个哲学家的行为是思考,感到饥饿, 然后吃通心粉 • 为了吃通心粉,每个哲学家必须拿 到两只叉子,并且每个人只能直接从自 己的左边或右边去取叉子
输入:锁变量w 输出:无 { w=0; //开锁 }
同步问题
同步问题是指诸进程的执行有先后顺序的限制。
如果诸进程涉及对于临界资源的共享,若共享方式为同步 方式则为同步问题;若共享方式为异步方式则为互斥问题。 当然还有可能是同步与互斥的混合问题。 总之,只要多个进程在执行时间的先后上具有某种限制, 就不再是单纯的互斥问题,一定有同步问题需要解决。 由于产生同步操作的协作进程之间其执行顺序已知、或者 互相制约的条件已知,即协作进程间相互知道对方,所以 称解决同步问题的信号量为私有信号量,局限于需要同步 的协作进程之间使用。协作进程之间的关联属于直接关联。 互斥可以看成是同步的一种特殊情况,广义上的同步包含 了互斥在内,我们将两者统称为进程的同步问题。广义上 的同步可以定义为诸进程之间在执行时间上所加的某种约 束,如果这种约束是因为共享临界资源,而且约束的方式 是异步的则为互斥约束;否则就是同步约束。
进程间的联系
相交进程与无关进程 相交进程:指多个并发进程在逻辑上有 某种联系 无关进程(不相交进程):在逻辑上无 任何联系的进程
进程间的联系
直接作用和间接作用 直接作用: 进程间的相互联系是有意识的安排的, 直接作用只发生在相交进程间 间接作用: 进程间要通过某种中介发生联系,是 无意识安排的,可发生在相交进程之间, 也可发生在无关进程之间