0引言
操作系统作为计算机专业学生的必修课程,是非常重要的一门核心课程。 笔者在操作系统教学过程中发现在所有的章节中,进程的互斥与同步是学生最难掌握的部分。本文详细分析了学生在进程互斥与同步学习过程中遇到的常见问题,并提出解决方法。
1进程互斥与同步概念
现代操作系统的三个主要特征是并发性、资源共享和异步性。 所谓并发性是指两个或多个活动在同一时间间隔内发生,在多道程序环境下是指在一段时间内可有多道程序同时运行。正是由于并发机制才导致了程序的执行不可预测,并发性又是系统能够实现资源共享的必要条件。系统中的多个并发进程之间因为共享资源而形成两种相互制约关系:间接制约关系———互斥,直接制约关系———同步。
1.1 进程互斥
是进程间的一种间接制约关系, 他们并不知道其他进程的存在。例如,在批处理系统中,系统分别为各个作业建立了进程;在分时系统中,系统分别为每个用户建立了一个进程。 这些进程同处于一个系统中,必然存在资源共享的关系。 由于某些资源的属性要求一次只能有一个进程访问,我们称这样的资源为临界资源。
由于系统不能允许多个进程同时访问临界资源,所以进程间必然产生对资源的竞争。因此,互斥直观理解就是一种竞争关系。例如一个学生宿舍房间内的洗漱间使用问题;显然,洗漱间在没有人使用时(可以看成初始状态),对于任何一个同学都是可用的,其洗漱间的信号量初值应当为 1(表达一种状态,也可以看成资源的数目,不过作为一种状态更恰当),见图 1。
1.2 进程同步
多个进程知道彼此的存在,更多的表现出一种合作关系。 此时要保证相互合作的多个进程在执行次序上的协调,不能出现与时间有关的错我。 系统中多个进程间发生的时间存在某种时序关系,需要相互合作,共同完成一项任务。进程间的这种关系称为进程同步。例如学校运动会中接力竞赛问题;见图 2.,显然,任何一组由 4 人组成的参赛队只有在发令员发令(看成初始状态)之后,第 1 个人才能跑,其他 3 人是顺序接力的, 不可能是 4 个人都可以同时跑,4 个人之间是同步关系,即在初始状态(各就位)只有第 1 个人可以跑,其他人是不可以的,要等待(“通知”)。
2信号量的概念和含义
信号量是一个记录型的数据结构,它有两个数据项。
Struc semaphore
{
int value;
pointer_PCB queue;
}S;
信号量的物理含义:在进程互斥的情况下,信号量可以看成是一把锁;在进程同步的情况下,信号量可以代表一种资源的使用权,信号量的值大于 0 时表示系统中某类可用的资源的数目, 当其值小于 0时,其绝对值表示系统中因请求该类资源而被阻塞的进程数目。 除了初始化外,对信号量只能有两个操作:P(S)操作和 V(S)操作。 这两操作定义为:
其中 P 操作物理含义为申请资源的操作, 每执行一次 P 操作,信号量的值就会减一, 表明可用的资源少了一个;V 操作的物理含义为释放资源的操作,每执行一次 V 操作,信号量的值就会加一,表明可用的资源数增加了一个。
3学生在运用信号量解决问题时常见问题
3.1 分不清楚进程之间的关系
进程之间的关系是要解决的根本问题,如果前期进程之间的关系分析不清楚,后续解题过程一定的错误的。
例题 1:某条河上只有一座独木桥,以便行人过桥。 现在河的两边都有人要过桥,过桥规则:同一方向的可以连续过桥;一方有人过桥另一方的人要等待。 该问题是非常明显的读者写着问题的同类例题。 桥两边的人是一种竞争关系,竞争的是桥这个临界资源。同理,同一方向的人之间也是竞争关系,竞争修改“人数”这个变量。 在此要让学生明白多个竞争的进程之间是没有固定的先后顺序的,可能一面的人先过桥,也可能另一面的人先过桥。
例题 2:有一仓库可以存放 A,B 两种物品,每次只能存入一物品(A 或 B)存储空间无限大, 只是要求-n <count(A)- count(B) <m 其中n,m 是正整数,试用存入 A,存入 B,和 P,V 操作 描述物品 A 和物 品 B的入库过程。该问题大部分同学的分析成互斥,因为看到了“每次只能存入一物品”,确实他们在放物品的时候是互斥的,但是这两个进程的主要关系是合作。体现在一旦 A 放入了一个物品,B 也可以放入一个;一旦 B 放入一个物品,A 也可以放入一个。 所以这是非典型的生产者和消费者问题。
3.2 对信号量的概念及意义不清楚
在信号量概念学习过程中首先要让学生清楚信号量和整型变量的根本区别。整型变量在内存中占有 4 个字节,仅能存放数值;而信号量类型不仅能表示资源数量,更重要在于为申请资源而得不到满足的进程提供阻塞链接队头指针 。 其次要不断强化信号量类型数据仅仅能够进行 P,V 操作,不可以进行除了 P,V 之外的任何操作。 例如上面例题 2:有同学写出如下代码:
Semophere counta=countb=0,mutex=1;
存入 A:
{
A 生产产品;
P(mutex);
If(counta-countb<m && counta-countb>-n)
存入 A;
V(mutex);
}
在这段代码中,第一个问题是没有搞清楚信号量的基本操作只能是 P,V,不能有其他的加减及判断;第二个问题是没有搞清楚信号量的含义,当申请存入 A 而得不到满足的时候,进程是要阻塞的。 按照上述程序,如果不符合判断条件,则产品抛弃,继续下一个进程。 这明显是错误的。 本题目正确的做法是:
Semophere counta=m-1,//当 B 产品一个都不放,A 最多可以放
m-1 个产品;
countb=n-1,//当 A 产品一个都不放,B 最多可以放 N-1 个产品;
mutex=1;
存入 A: 存入 B:
{ {
A 生产产品; B 生 产
产品;
P(counta) ;
p(countb);
P(mutex); p
(mutex);
存入 A;
存入 B;
V(countb);
V(counta);
} }
3.3 信号量命名不清楚,不明确
这个问题是从教科书上生产者消费者问题延续而来。在生产者消费者问题中设置的 full,empty 信号量其实含义不是特别清楚明了。 如果改成 buffer 和 product 则明了很多, 无论从资源的角度看还是从前驱关系的角度看都特别清楚明了。学生们在计算机基础中学过变量的命名规则,作者认为变量的命名规则同样适用信号量的命名规则。
4结束语
操作系统设计的目标之一就是资源的充分利用, 进程的并发是实现这一目标的重要方法,而并发又离不开进程的同步和互斥。 信号量是实现进程间的互斥与同步既方便又高效的工具。 在操作系统课程的教学中, 利用信号量实现进程同步与互斥的问题还将继续研究下去。
【参考文献】
[1][美]William Stallings.操作系统-精髓与设计原理[M].5 版.陈 渝 ,等 ,译.北 京 :电子工业出版社,2006.
[2]汤子瀛,哲风屏,汤小丹,编.计算机操作系统(修订版)[M].西安:西安电子科技大学出版社,2002.
[3]范策,许宪成,黄红桃,李畅.计算机操作系统教程 :核心与设计原理[M].北京:清华大学出版社.
[4]李芳,夏宇.简析操作系统中进程间的相互制约关系[J].湖北 :黄 石理工学院2007-8.
[5]李畅,范策.进程互斥与同步解析[J].广州:现代计算机,2010,12.
随着信息化时代的发展,计算机对生活的影响力日渐增加,高校学生作为社会人才培养的重点对象,掌握一定的计算机技术是必不可少的。高校应加强对计算机技术教学的改革与创新,提高学生在各个方面的综合素质能力,提高计算机的教学质量,培养出更多对社会对国...
1教学目标高等中医药院校计算机教学的目标,即高等中医药院校计算机教学的根本任务,主要包括:1.1传授现代信息技术发展和社会进步的基本知识及技能离开了知识的传授,教学无法发生和展开,一切教学活动就成无源之水,无本之木,高等教育的教学目的和目...
1分析高等院校计算机教学改革的必要性随着科技信息的蓬勃发展,计算机技术已经成为当前一种必备的应用性技术,为满足这一社会需求,我国大部分高校都开设了计算机相关课程,并将其设置为必修课。在进行计算机课程教学过程中,经常出现计算机教学与其他课程...
随着社会信息化的纵深发展,各行各业的信息化进程都在不断加速。用人单位对大学毕业生的计算机应用能力要求也随之提高,计算机水平已经成为衡量大学生专业素质与能力的突出标志。但高校的计算机教学效果并不理想,与社会的需求仍存在不小的差距。1高校计算...
一、调查背景与目的随着我国社会经济的发展,我国高等教育的教学水平也在不断提高,对外交流日益频繁。基于比较完善的医学教育体制、低于英美等西方国家的留学费用、入学手续简单等优惠条件,越来越多的外国学生来我国学习医学[1]。于是,面向留学生的教学...
信息社会以高速发展的经济和科技为基础,并且以信息的生产和传播为主要特征。在现代信息社会背景下,信息的传输速度加快,而且信息内容十分繁琐,在科技不断进步的同时,也使得传统的通信方式发生了巨大的改变,这对于新时期的计算机人才素质提出了更高的要...
本文主要研究“互联网+”对高校计算机基础教育和研究的影响, 对目前计算机基础教育教学现状进行了分析, 提出了高校计算机基础教育的改革策略, 以满足“互联网+”的需求和发展。...
程序设计类课程包括理论教学和实践教学两个部分,实践教学结合理论教学内容,组织学生独立完成一定量的编程任务,以提高学生动手能力.而在教学实施过程中,发现学生实践环节抄袭现象严重,有时一个教学班就两三个版本.由于实践教学任务重、学生人数多,仅靠教师人...
以就业为导向的教学模式要求高校计算机教学不断创新,构建以学生职业需求为目标的全新的教学理论体系与实践体系,及时调整课程设置和教学内容,按照实际的工作任务、过程和情境组织教学,形成围绕工作需求的教学与训练项目。计算机是一门实践性极强的学科,...
21世纪,是信息化的时代,是网络化的时代,各行各业的发展都不可避免地需要在网络环境中进行,大学计算机基础教学也应当而且非常有必要在网络环境中开展。基于此,在网络环境中如何做好大学计算机基础教学工作,进而使学生掌握更多实用的、先进的计算机知识...