操作系统进程互斥与同步教学难点突破2600字
操作系统进程互斥与同步教学难点突破2600字 操作系统进程互斥与同步教学难点突破 1 序言 操作系统是专业的核心课程,操作系统的教学主要是让学生理解并掌握操作 系统的功能及实现原理,理论性很强,知识点多,教学难度大,学生不易掌握, 特别是对于高职院校的学生。为了让学生能很好地学习操作系统的理论知识,老 师们进行的了很多的探讨与教学尝试,下面就将我多年来在操作系统教中,对进 程同步与互斥这个教学难点的教学方法作一个简单的论述。2 相关概念的突破 教学时以小型体育运动会实例来解释相关的概念。
实例描述:一个在半天内完成的小型体育运动会。比赛项目有:100米,200 米,4*100米接力。而这三个项目又分为预赛和决赛两个阶段进行,预赛先于决 赛进行。因此总的比赛项目有:100米预赛,200米预赛,4*100米接力预赛,100 米决赛,200米决赛,4*100米接力决赛六个子项目。因为运动场地只有一块,所 以某一时刻只能有一项体育比赛可以进行。某项比赛一旦开始,就必须全部比赛 完成,但不同的比赛可以穿插进行。
1)进程:具有一定独立功能的程序关于某个数据集合上的一次运行活动。
因为每一个项目都是可以独立进行的,所以可以将每一个项目看成是一个具 有独立功能的程序,而将每一项比赛看成是每一个项目在裁判、计时员等支持下 的一次独立运行活动。因此六个项目的比赛过程可以看成六个进程的运行。
2)并发:同一个时间段内几个进程都处于已经开始运行和运行完毕之间, 且这几个进程都是在同一个处理机上运行,但在任一时刻,只能有一个进程在处 理机上运行。我们就说这几个进程处于并发状态。
运动会的三个项目是交替进行的,我们认为这三个项目都处于进行当中,因 为他们都没有结束。这种状态就称之为并发状态。因为运动场地只有一个,所以 同一时刻只能有一个项目在进行当中,我们就说比赛并行为1,若有两个场地可 以同时比赛,我们就说并行为2。3)临界资源:操作系统把一次仅允许一个进程使用的资源称为临界资源。
由于竞赛场地某一时刻只能进行一场比赛,所以场地是临界资源。
4)临界区:一个进程中访问临界资源的那段程序。
由于每场比赛都要使用场地,因此每场比赛都是临界区。
5)互斥:是指多个进程不能同时使用同一个资源。
由于比赛场地只能轮流使用而不能同时使用,所以使用场地的过程就称为互 斥过程。
6)同步:指多个进程之间存在着某种时序关系,必须协同动作、相互配合。
4*100接力比赛是4个人协同完成的,每人跑一棒,而且是第一棒跑完才能跑 第二棒,第二棒跑完才能跑第三棒,第三棒跑完才能跑第四棒。这种有严格时序 关系的协同过程就称为同步,四个人之间的先后关系就是同步关系。
运动场地是一个封闭的空间,入口有一道门,要想进入运动场,必须获得打 开门的钥匙,而钥匙只有一把,所以一开始时的Value的初值为1,获得钥匙的运 动项目可以进入运动场比赛,而没有获得钥匙的运动项目则在门外排队等待。
8)原语:通常由若干条指令组成,用来实现某个特定的操作。通过一段不 可分割的或不可中断的程序实现其功能。
信号量只能通过P原语和V原语访问。
P操作用于申请资源,value值减1,如果资源数量不够,则进程需要阻塞等 待。
V操作用于释放资源, value值加1,如果此时value<0,表示有其他进程等 待该资源,则唤醒。
当value<0时,| value|表示等待队列的进程数。
拿到钥匙,打开门,进入场地这三个动作必须一次性完成,中间不可以被中 止,这就是原语操作。
3 进程互斥的实现 由于运动场地是临界资源,所以哪一个项目可以使用运动场地进行比赛是需 要竞争的,那么如何保证进入运动场比赛的项目只能是一个呢?我们使用信号量来控制互斥地使用运动场地。
信号量就是一把钥匙,而且钥匙只有一把,因此设信号量S的初值为1。
由于100米预赛,200米预赛和4*100接力预赛是可以并发进行的,因此,我 们设计三个并发程序控制使用运动场地进行比赛(临界区)。而哪个项目能够进 行(进入临界区),就看哪个项目获得了运动场地(临界资源)的使用权,而对 使用权的控制就是看谁能够进入运动场地,最终则是谁能获得入门的钥匙(信号 量),因此只要控制住钥匙,就能实现互斥进入。
结论:使用信号量实现互斥的方法是在临界区前放置一个P原语操作,临界 区后面放置一个V原语操作。含义为:P原语申请钥匙,如果成功则获得资源(运 动场地),进行比赛,比赛结束后,V原语操作,交出钥匙(信号量),唤醒等 待比赛的项目。
4 进程同步的实现 进程之间的关系除了竞争关系以外,可能还存在时间上的制约关系,这种关 系就是同步关系。比如运动会中,运动项目之间就存在时序上的先后关系,100 米预赛必须先于100米决赛之前进行,而200米决赛则不能早于200米预赛之前进 行。4*100米接力赛中的四个人之间也存在着先后关系。那么如何通过信号量来 实现这个同步关系呢? 我们以100米预赛和100米决赛之间的时序关系为例说明如何实现同步。
100米预赛和100米决赛为两个并发程序,100米预赛早于100米决赛进行。则 可以将它们之间的时序关系通过有向图来表示,图1说明了100米预赛先于100米 决赛进行。
} 说明:由于信号量初值为0,因此只有当【100米预赛】并发程序执行结束以 后,s的值才能为1,也只有当s的值为1后,【100米决赛】并发程序才能够执行, 从而实现了两个并发程序之间的时序关系。
综上所述,我们总结出进程同步中并发程序的书写规则:
1)将问题中的所有有时序关系的并发程序找出,用有向图画出他们之间的时序关系;
2)有向图中有几个结点,则写几个并发程序;
3)有向图中有几个有向箭头,则设置几个信号量,同时将所有信号量的初 值设为0;
4)对于有向图中的每个结点,如果有一个出向箭头,则在并发程序的后面 加一个V操作;
5)对于有向图中的每个结点,如果有一个入向箭头,则在并发程序的前面 加一个P操作。
举例说明:如图2所示的有向图,请写出所有进程的并发程序。
} 5 结论