进程同步的教学方法探讨

计算机时代2009年第9期

7l

进程同步的教学方法探讨

白秀玲.宋晓莉,邱涌,张营。张孝国。杨春蕾(河南科技大学电子信息工程学院,河南洛阳47l003)

摘要:在操作系统课程的教学中,进程同步是其中一个重点,也是难点。进程概念较抽象,所以进程同步成为老师难讲、学生难学的内容。该文探讨了进程同步的教学方法,从易到难,循序渐进,边分析边讲解。教学实践表明:该方法教学效果良好,能使学生很容易理解进程同步的概念和方法。关键词:操作系统;进程;同步;教学方法

Discussion

BAIXiu・ling,SONG

on

Teaching

Method

ofProcess

Synchronization

Xiao-li,QtUYong,ZHANGLei,ZHANGXiao—guo,YANGChun—lei

University

(CollegeofElectronicandInformationEngineering,ttenan

Abstract:Processsynchronizationisis

that

very

an

of&如,h∞and死如∞£ogy,Luoyang,Henan471003,China)

course.The

concept

emphasis

anddifficultyintheteachingofoperatingsystem

to

of

process

abstract,soprocess

easy

synchronization

to

ishard

teachandlearn.Teachingmethod

of

processsynchronizationis

that

discussed,

isteachingfrom

the

difficult,stepby

step,explainingwhileanalyzing.Thepracticeofteachingprovestheteaching

effectof

methodisgoodandthestudentscaneasilyunderstandtheconceptandmethodsofprocesssynchronization.

method

Keywords:operatingsystem;process;synchronization;teaching

0引言

操作系统是计算机系统中的核心软件之一,因此,操作系统基础知识是任何合格的计算机专业人员必须掌握的专业知识。基于此种原因,在计算机专业的课程体系中,“操作系统”向来被指定为计算机专业本专科生的核心和基础课程。毫无疑问,提高该门课程的教学质量对于培养合格的计算机专业人员是至关重要的;学生对它的掌握程度,也影响着他们的专业水平及发展方向。

在“操作系统”课程的教学中,进程管理是一个主要内容。其中如何有效地使用信号量机制来实现并发进程的互斥与同步是进程管理乃至整门课程教学中的重点和难点。进程管理、PV操作等概念比较抽象,学生很难理解,往往成为操作系统学习中的瓶颈。这类题型变化多、实例多,又与实际生活中的问题有着紧密联系。相对而言,进程互斥较容易理解,进程同步难理解。经典的进程同步问题有“生产者一消费者问题”、“哲学家进餐问题”和“读者一写者问题”等。“生产者一消费者问题”作为其中较为基础的问题。对帮助理解进程互斥同步具有重要意义,也对学生引申思考和解决其他进程同步问题有着重要作用,所以各类操作系统教材都将其作为主要例题。但大多都在介绍了wait、signal操作之后,就引入该例题,且只有伪代码表示,没有具体的分析过程。在学习过程中,学生经常对该部分内容理解不了,或能理解,但不会分析,更不会应用。遇到类似的题目,往往无从下手,更别说稍难一点的题目了。

在长期的教学经验中,笔者总结出进程同步问题的教学方法,即循序渐进的方法:先讲解较简单的例题,再逐渐加深难度,边分析边讲解算法;通过课堂讨论,让学生自己寻找解决问题的办法,自己发现算法中存在的I、uJ题;同时讲解更多例题,让学生课下练习大量题目。通过这样的方法,提高了学生学习的

兴趣,学生理解起来也觉得较为容易。

1临界区和wait(S)/signaI(S)操作

在多道程序环境下,由于进程共享资源和进程合作,使得并发执行的多个进程l’日J可能产生互斥或同步的相互制约关系,如果不采取措施来保证这种制约或依赖关系,则可能导致结果的不可再现性。这是多道程序设计带来的山J题,若解决不好,不仅影响系统效率,而且还可能导致系统崩溃。为此,现代操作系统都在内核中设有进程的互斥同步机制,以控制并发执行的诸进程问能有效地共享资源和相互合作,同时使并发程序的执行仍具有可再现性。信号量机制是操作系统中协调进程同步与互斥的一种常用的工具。

(1)临界区:l临界区是指并发进程中与共享变量有关的程序段。

(2)信号量s:可用临界资源数量。取值只允许为…0’和“l”

的信号量称为二元信号量,主要用作互斥变量(Mutex);取值允许为整数的信号量称为一般信号量(Semaphore),主要用于进程问的同步。

(3)wait(S)/signal(S)操作:最初由Dijkstra提出的两个原子操作概念,信号量除初始化外仅能通过这两个标准的原子操作Wait(S)和Signal(S)来访I’uJ。原子操作在执行时是不可中断的,即当一个进程在修改某信号量时,没有其他进程可同时对该信号量进行修改,以解决进程问同步和互斥的问题。

Wait(S)操作:又称作P操作。对某资源信号量s作wait操作,表示申请资源,可用资源数S=S—l;如果S<0,表示无资源可用,本进程挂起。变成等待资源s的“等待”状态。

Signal(S)操作:又称作V操作。对某资源信号量s作signal操作,表示释放资源,可用资源数S=S+I;如果S≤o,表示有进程在等待该资源,则释放该进程,即将等待该资源s的首进程

万方数据 

.72

ComputerEraNo.92009

的状态变为“就绪”状态,去等待CPU继续运行。

(4)进程互斥:在多种活动同时存在的系统中,要求在进行某一活动时,不允许进行其它活动,这种限制条件称作互斥。

(5)进程同步:指两个或多个进程为了合作完成同一任务,在执行速度或某个确定的时序点上必须相互协调,即一个进程依赖于另一个进程发送的消息,进程之I’日J体现了一种相互合作的关系。当用wait、signal操作实现进程的同步问题时,合作进程之间通过信号量进行互发消息,执行wait操作测试消息是否到达,即是否得到合作进程的通知可以执行该进程;而执行signal操作是向其合作进程发送消息,通知它进行下一步操作。

2进程同步问题

2.1单人单缓冲问题

在介绍了信号量的概念之后,先从最简单的同步问题开始讲解,即单人单缓冲问题。

问题:计算进程和打印进程共同使用同一缓冲区Buf。计算进程反复地把每次计算结果放入Buf中,而打印进程则把计算进程每次放入Buf中的数据通过打印机打印输出。Buf中每次可以存放—个数据。

在这个问题中,生产者有一个:计算进程;消费者有一个:打印进程;用以存放产品(数据)的缓冲区Buf容量也是1。所以这个问题被称作单人单缓冲I、UJ题。

要解决该问题,首先要明确两点要求:当计算进程还未把新数据放入Buf之前,要取数据的打印进程需等待;当打印进程还未把数据取走之前,要放数据的计算进程需等待。因此,在计算进程要往Buf中放数据前,先要检测一下Buf中的数据是否已被打印进程取走;在放完数据后.要通知打印进程:Buf中已有数据。相应地.打印进程在从Buf中取数据之前,要先检测一下Buf中是否有数据;在取走数据之后,还要通知计算进程:数据已被取走。经过分析,在该题中应设置两个信号量:empty代表可用的缓冲区资源,初值为l;full代表可用的数据资源(计算进程计算出的数据),初值为0。对该|’uJ题可描述如下:

Proceducer:(计算进程)

Consumer:(打印进程)computer

nextp;

wait(full);

wait(empty);

take

an

itemfromBuf;

putnextptoBuf;

signal(empty);

signal(full);

printtheitem;

这个问题是一个典型的进程同步问题:两个进程相互合作完成一个任务,一个进程的执行受到另一进程的影响。在该问题中也暗含有互斥的关系:一个进程在放(取)数据时,不允许另一进程同时进行。但在该|、UJ题中不需要设置互斥信号量,这是因为缓冲区或数据的数量最多是l,在执行wait操作时,已起到了互斥的作用。

在进程同步中,单人单缓冲问题有很多,如“黑白棋子问题”,“苹果橘子问题”等都可以归入该类型中。

黑白棋子I、口J题:生产围棋的工人不小心把相等数量的黑子和白子混装在一个箱子里,要求用自动分拣系统把黑子和白子分开。该系统由两个并发执行的进程组成,功能如下:①进程A专门拣黑子,进程B专fJ拣白子;②每个进程每次只拣—个棋

万 

方数据子,当一个进程在拣棋子时不允许另一进程去拣棋子;③当一个进程拣了一个棋子(黑子或白子)后,必须让另一个进程拣一个棋子(白子或黑子)。

苹果橘子|’口J题:桌上有一个空盘,每次只能放一个水果。爸爸可向盘内放苹果,妈妈可向盘内放橘子,儿子专等取苹果吃,女儿专等取橘子吃。要求:若盘中已有水果,放者必须等待;若盘中没有自己要吃的水果.吃者必须等待。2.2单人多缓冲问题

问题:类似单人单缓冲问题,但Buf中每次可以存放多个数据,假设为具有n个缓冲区的缓冲池。

可利用一个数组buffer来表示上述的具有n个(o,l,…,n—1)缓冲区的缓冲池。用输入指针in来指示下一个可投放产品的缓冲区,每当生产者进程生产并投放一个产品后,输入指针加l;用一个输出指针out来指示下一个可从中获取产品的缓冲区,每当消费者进程取走一个产品后,输出指针加l。in和OUt初值均为0。由于这里的缓冲池是组织成循环缓冲的,故应把输入指针加l表示成in:=(in+1)modn;输出指针加l表示成out:=(out+I)modn。当(in+1)modn=out时表示缓冲池满;而in=out则表示缓冲池空。在该题中同样应设置两个信号量:empty代表可用的缓冲区资源,初值为n;full代表可用的数据资源,初值为0。对该问题可描述如下:

Proceducer:(计算进程)

Consumer:(打印进程)computer

nextp;

wait(full);

wait(empty);nextc:=buffer(out);buffer(in):=nextp;out:=(out+1)modn:

in:=(in+1)modn:

signal(empty);

signal(full);

printtheitem;

2.3多人多缓冲问题(生产者一消费者问题)

问题:多个计算进程和多个打印进程共同使用同一缓冲区Buf。计算进程反复地把每次计算结果放入Buf中,而打印进程则把计算进程每次放入Buf中的数据通过打印机打印输出。Buf为具有n个缓冲区的缓冲池。对该问题稍加修改,计算进程称作“生产者”,打印进程称作“消费者”,计算的结果数据称作“产品”,这就是经典的生产者一消费者(producer--consumer)

问题。

在讲到这个问题时,不能简单地把算法写出,向学生一讲了事。那样会导致学生听完课之后仍然糊里糊涂,不知道怎样设置信号量。最好从上个问题着手,逐步分析,再得出算法。

在该问题中,尽管所有的生产者进程和消费者进程都是以异步方式运行的,但它们之I’BJ必须保持同步,即不允许消费者进程到一个空缓冲区去取产品,也不允许生产者进程向一个已装满产品且尚未被取走的缓冲区中投放产品。这个问题和上个问题类似:Buf都是n个缓冲区的缓冲池。同样应设置两个信号量:empty代表可用的缓冲区资源,初值为11;full代表可用的数据资源,初值为0。如果把上个问题的算法不加修改地拿到该问题中,大体上来说不会有太大问题,但仔细分析,却会有潜在的错误。比如:在起始条件下,empty值为n(假设n>1),第一个生产者生产了一件产品,先执行了wait(empty),empty减为n—l;接着执行buffer(in):=nextp,将生产的产品放在buffer(O)

计算机时代2009年第9期

中:这时,时』’日】片到了,系统调度其它进程。假没这次调度到的为另一生产者进程,第二个生产者生产了一件产品,先执行了wait(empty),empty减为n-2:接着执行buffer(in):=nextp,因为刚才in尚未增加,仍为0,所以第二个进程仍将生产的产品放在buffer(O)中。这样就导致了两个生产者进程将两件产品放在同一缓冲区中的错误。解决办法为:缓冲区为临界资源,下面的代码为访问临界资源的临界区:

buffer(in):=nextp;in:=(in+1)mod

n;

73

将算法加以修改,使生产者、消费者之间可以不互斥。为此,生

产者、消费者分别设置各自的互斥信号量,即生产者进程问使

用pmutex进行互斥,消费者进程间使用cmutex进行互斥,而生

产者进程与消费者进程问不互斥。pmutex

为1。问题可描述如下:

Proceducer:(生产者)

producer

an

cmutex的初值均

Consumer:(消费者)wait(full);wait(cmutex);nextc:=buffer(out);out:=(out+1)modsignal(cmutex);signal(empty);consumertheitem:

n:

itemnextp

wait(empty);wait(pmutex);buffer(in):=nextp;in:=(in+1)modsignal(pmutex);signal(full);

n:

对这段代码必须互斥访问。这时可利用互斥信号量mutex实现诸进程对缓冲池的互斥使用。在进入临界区之前,使用wait(mutex)申请进入;退出临界区之后,使用signal(mutex)进行退出。对于消费者进程也存在同样的问题,因此,也需要利用互

斥信号量mutex实现进程对缓冲池的互斥使用。生产者一消费

者问题可描述如下:

Pm∞ducer:(生产者)

producer

an

3结束语

进程管理是“操作系统”课程中非常重要的一部分内容,也是老师难讲、学生难学的内容。进程同步的概念较抽象.学生掌握起来有较大难度。在教学中,可采用本文所述的教学方法。经过一步步的分析,从最初最简单的进程同步问题,到复杂的同步、互斥混合问题,使学生在分析中逐渐掌握进程同步问题的描述方法。实践证明:采用该方法,教学效果良好.学生很容易理解进程同步问题的描述方法,也很有兴趣学习该部分内容;在遇到类似问题时,很容易就能解决。

参考文献:

【1l张尧学,史美林.计算机操作重统教程(第3版)【MJ.清华土学出版社,

2006.

Consumer:(消费者)wait(full);wait(mutex);nextc:=buffer(out);out:=(out+1)modsignal(mutex);signal(empty);

consumertheitern;

itemnextp

wait(empty);wait(mutex);buffer(in):=nextp;in:=(in+1)modsignal(mutex);signal(full);

n:

2.4改良的生产者一消费者问题

在上个I’u】题中,生产者、消费者在进入各自临界区时,使用相同的互斥信号量mutex。这样,在保证多个生产者互斥的同时,也限制了生产者必须与消费者之问互斥。但从算法上分析可知,生产者的临界区和消费者的临界区虽然使用了相同的数组,但使用却的是不同的指针,二者并无互斥的必要。因此,可

【2l汤子瀛,哲凤屏,汤小丹.计算机撼作系统(修订版)IMJ.由安电子科杖

土学出版社,2001.

【3JAndrewS.Tanenbaum.ModemOperatingSystemsfM】Second

Edition.机械工业出版社,2003.毯丑

・M一一_一一1・¨●¨-●一¨・.._-~W¨"¨・一-_..-●_¨_…・●~-一~~~一¨…・

(上接第70i)

思维和创新能力,难以达到实践教学的目标。

将科研课题引入教学过程后,教师将科研课题的部分科研内容节选下来,作为辅助该课程的实验内容。而在“数据库大

的数据库课程体系的教学新模式。能否选择合适的科研案例进入教学,是该教学模式成败的关键所在,这就要求教师要有目的地挖掘与科研环节相融合的教学内容.充分利用每个教学环节,帮助学生在实践过程中体验理论对实践的指导作用。实践表明,该教学模式对于为大学生参与科研提供了机会和条件,成为培养大学生创新能力的平台。

参考文献:

【1】王珊,萨师煊.量据库l统概论(第四版)【M】.高等教育出版社,2006.12l钱雪患.“矗据库原理反应甩”镰程教学实践与探讨IJ】.置龙江教育

(高教研究与评估),2008.7—8:107—109

【3l王动武.科研与教学王动并避的理论探索与实践【J】.西南农业人学学

报(社会科学版),2007.5(2):169~172

f4l知盛涛.上学生科研能力训侏与专业健程教学并犰问题振究【J】.一t岛

土学师范学院学报.2007.24(2):113~115

【5】首丹.案例教学法在鼻据库囊统概论中的应用【JI.勘喀大学学报(-兰

科学版),2006.27(2):172-175

型试验周”中,教师可以将实际的科研课题依据学生的能力进

行拆分,以替代自拟题目。在实践过程中,教师要和学生不断交流,对于学生设计过程中存在的问题,要及时反馈。在整个实践过程结束后,教师要向学生展示成功科研项目,帮助学生寻找设计中存在的差距。在实践过程的考核机制中,要避免以

往只注重结果,不注重过程的考核办法,教师要跟踪学生的整

个设计过程,从需求分析、概念结构设计、逻辑结构设计、数据库物理设计、到数据库的实施和维护,每个阶段都要和学生交流,及时反馈,并对该阶段学生的成果,包括设计文档和程序质

量,进行考核,最后给出综合成绩,以促使学生重视整个设计过

程,在真正的科研课题中将课本中学到的知识学以致用。

4结束语

鉴于数据库课程体系的特殊性,提出了与科研课题相结合

万方数据 

进程同步的教学方法探讨

作者:作者单位:刊名:英文刊名:年,卷(期):

白秀玲, 宋晓莉, 邱涌, 张营, 张孝国, 杨春蕾, BAI Xiu-ling, SONG Xiao-li,QIU Yong, ZHANG Lei, ZHANG Xiao-guo, YANG Chun-lei河南科技大学电子信息工程学院,河南,洛阳,471003计算机时代COMPUTER ERA2009(9)

参考文献(3条)

1. Andrew S Tanenbaum Modern Operating Systems 20032. 汤子瀛;哲凤屏;汤小丹 计算机操作系统 20013. 张尧学;史美林 计算机操作系统教程 2006

本文链接:http://d.g.wanfangdata.com.cn/Periodical_jsjsd200909028.aspx

计算机时代2009年第9期

7l

进程同步的教学方法探讨

白秀玲.宋晓莉,邱涌,张营。张孝国。杨春蕾(河南科技大学电子信息工程学院,河南洛阳47l003)

摘要:在操作系统课程的教学中,进程同步是其中一个重点,也是难点。进程概念较抽象,所以进程同步成为老师难讲、学生难学的内容。该文探讨了进程同步的教学方法,从易到难,循序渐进,边分析边讲解。教学实践表明:该方法教学效果良好,能使学生很容易理解进程同步的概念和方法。关键词:操作系统;进程;同步;教学方法

Discussion

BAIXiu・ling,SONG

on

Teaching

Method

ofProcess

Synchronization

Xiao-li,QtUYong,ZHANGLei,ZHANGXiao—guo,YANGChun—lei

University

(CollegeofElectronicandInformationEngineering,ttenan

Abstract:Processsynchronizationisis

that

very

an

of&如,h∞and死如∞£ogy,Luoyang,Henan471003,China)

course.The

concept

emphasis

anddifficultyintheteachingofoperatingsystem

to

of

process

abstract,soprocess

easy

synchronization

to

ishard

teachandlearn.Teachingmethod

of

processsynchronizationis

that

discussed,

isteachingfrom

the

difficult,stepby

step,explainingwhileanalyzing.Thepracticeofteachingprovestheteaching

effectof

methodisgoodandthestudentscaneasilyunderstandtheconceptandmethodsofprocesssynchronization.

method

Keywords:operatingsystem;process;synchronization;teaching

0引言

操作系统是计算机系统中的核心软件之一,因此,操作系统基础知识是任何合格的计算机专业人员必须掌握的专业知识。基于此种原因,在计算机专业的课程体系中,“操作系统”向来被指定为计算机专业本专科生的核心和基础课程。毫无疑问,提高该门课程的教学质量对于培养合格的计算机专业人员是至关重要的;学生对它的掌握程度,也影响着他们的专业水平及发展方向。

在“操作系统”课程的教学中,进程管理是一个主要内容。其中如何有效地使用信号量机制来实现并发进程的互斥与同步是进程管理乃至整门课程教学中的重点和难点。进程管理、PV操作等概念比较抽象,学生很难理解,往往成为操作系统学习中的瓶颈。这类题型变化多、实例多,又与实际生活中的问题有着紧密联系。相对而言,进程互斥较容易理解,进程同步难理解。经典的进程同步问题有“生产者一消费者问题”、“哲学家进餐问题”和“读者一写者问题”等。“生产者一消费者问题”作为其中较为基础的问题。对帮助理解进程互斥同步具有重要意义,也对学生引申思考和解决其他进程同步问题有着重要作用,所以各类操作系统教材都将其作为主要例题。但大多都在介绍了wait、signal操作之后,就引入该例题,且只有伪代码表示,没有具体的分析过程。在学习过程中,学生经常对该部分内容理解不了,或能理解,但不会分析,更不会应用。遇到类似的题目,往往无从下手,更别说稍难一点的题目了。

在长期的教学经验中,笔者总结出进程同步问题的教学方法,即循序渐进的方法:先讲解较简单的例题,再逐渐加深难度,边分析边讲解算法;通过课堂讨论,让学生自己寻找解决问题的办法,自己发现算法中存在的I、uJ题;同时讲解更多例题,让学生课下练习大量题目。通过这样的方法,提高了学生学习的

兴趣,学生理解起来也觉得较为容易。

1临界区和wait(S)/signaI(S)操作

在多道程序环境下,由于进程共享资源和进程合作,使得并发执行的多个进程l’日J可能产生互斥或同步的相互制约关系,如果不采取措施来保证这种制约或依赖关系,则可能导致结果的不可再现性。这是多道程序设计带来的山J题,若解决不好,不仅影响系统效率,而且还可能导致系统崩溃。为此,现代操作系统都在内核中设有进程的互斥同步机制,以控制并发执行的诸进程问能有效地共享资源和相互合作,同时使并发程序的执行仍具有可再现性。信号量机制是操作系统中协调进程同步与互斥的一种常用的工具。

(1)临界区:l临界区是指并发进程中与共享变量有关的程序段。

(2)信号量s:可用临界资源数量。取值只允许为…0’和“l”

的信号量称为二元信号量,主要用作互斥变量(Mutex);取值允许为整数的信号量称为一般信号量(Semaphore),主要用于进程问的同步。

(3)wait(S)/signal(S)操作:最初由Dijkstra提出的两个原子操作概念,信号量除初始化外仅能通过这两个标准的原子操作Wait(S)和Signal(S)来访I’uJ。原子操作在执行时是不可中断的,即当一个进程在修改某信号量时,没有其他进程可同时对该信号量进行修改,以解决进程问同步和互斥的问题。

Wait(S)操作:又称作P操作。对某资源信号量s作wait操作,表示申请资源,可用资源数S=S—l;如果S<0,表示无资源可用,本进程挂起。变成等待资源s的“等待”状态。

Signal(S)操作:又称作V操作。对某资源信号量s作signal操作,表示释放资源,可用资源数S=S+I;如果S≤o,表示有进程在等待该资源,则释放该进程,即将等待该资源s的首进程

万方数据 

.72

ComputerEraNo.92009

的状态变为“就绪”状态,去等待CPU继续运行。

(4)进程互斥:在多种活动同时存在的系统中,要求在进行某一活动时,不允许进行其它活动,这种限制条件称作互斥。

(5)进程同步:指两个或多个进程为了合作完成同一任务,在执行速度或某个确定的时序点上必须相互协调,即一个进程依赖于另一个进程发送的消息,进程之I’日J体现了一种相互合作的关系。当用wait、signal操作实现进程的同步问题时,合作进程之间通过信号量进行互发消息,执行wait操作测试消息是否到达,即是否得到合作进程的通知可以执行该进程;而执行signal操作是向其合作进程发送消息,通知它进行下一步操作。

2进程同步问题

2.1单人单缓冲问题

在介绍了信号量的概念之后,先从最简单的同步问题开始讲解,即单人单缓冲问题。

问题:计算进程和打印进程共同使用同一缓冲区Buf。计算进程反复地把每次计算结果放入Buf中,而打印进程则把计算进程每次放入Buf中的数据通过打印机打印输出。Buf中每次可以存放—个数据。

在这个问题中,生产者有一个:计算进程;消费者有一个:打印进程;用以存放产品(数据)的缓冲区Buf容量也是1。所以这个问题被称作单人单缓冲I、UJ题。

要解决该问题,首先要明确两点要求:当计算进程还未把新数据放入Buf之前,要取数据的打印进程需等待;当打印进程还未把数据取走之前,要放数据的计算进程需等待。因此,在计算进程要往Buf中放数据前,先要检测一下Buf中的数据是否已被打印进程取走;在放完数据后.要通知打印进程:Buf中已有数据。相应地.打印进程在从Buf中取数据之前,要先检测一下Buf中是否有数据;在取走数据之后,还要通知计算进程:数据已被取走。经过分析,在该题中应设置两个信号量:empty代表可用的缓冲区资源,初值为l;full代表可用的数据资源(计算进程计算出的数据),初值为0。对该|’uJ题可描述如下:

Proceducer:(计算进程)

Consumer:(打印进程)computer

nextp;

wait(full);

wait(empty);

take

an

itemfromBuf;

putnextptoBuf;

signal(empty);

signal(full);

printtheitem;

这个问题是一个典型的进程同步问题:两个进程相互合作完成一个任务,一个进程的执行受到另一进程的影响。在该问题中也暗含有互斥的关系:一个进程在放(取)数据时,不允许另一进程同时进行。但在该|、UJ题中不需要设置互斥信号量,这是因为缓冲区或数据的数量最多是l,在执行wait操作时,已起到了互斥的作用。

在进程同步中,单人单缓冲问题有很多,如“黑白棋子问题”,“苹果橘子问题”等都可以归入该类型中。

黑白棋子I、口J题:生产围棋的工人不小心把相等数量的黑子和白子混装在一个箱子里,要求用自动分拣系统把黑子和白子分开。该系统由两个并发执行的进程组成,功能如下:①进程A专门拣黑子,进程B专fJ拣白子;②每个进程每次只拣—个棋

万 

方数据子,当一个进程在拣棋子时不允许另一进程去拣棋子;③当一个进程拣了一个棋子(黑子或白子)后,必须让另一个进程拣一个棋子(白子或黑子)。

苹果橘子|’口J题:桌上有一个空盘,每次只能放一个水果。爸爸可向盘内放苹果,妈妈可向盘内放橘子,儿子专等取苹果吃,女儿专等取橘子吃。要求:若盘中已有水果,放者必须等待;若盘中没有自己要吃的水果.吃者必须等待。2.2单人多缓冲问题

问题:类似单人单缓冲问题,但Buf中每次可以存放多个数据,假设为具有n个缓冲区的缓冲池。

可利用一个数组buffer来表示上述的具有n个(o,l,…,n—1)缓冲区的缓冲池。用输入指针in来指示下一个可投放产品的缓冲区,每当生产者进程生产并投放一个产品后,输入指针加l;用一个输出指针out来指示下一个可从中获取产品的缓冲区,每当消费者进程取走一个产品后,输出指针加l。in和OUt初值均为0。由于这里的缓冲池是组织成循环缓冲的,故应把输入指针加l表示成in:=(in+1)modn;输出指针加l表示成out:=(out+I)modn。当(in+1)modn=out时表示缓冲池满;而in=out则表示缓冲池空。在该题中同样应设置两个信号量:empty代表可用的缓冲区资源,初值为n;full代表可用的数据资源,初值为0。对该问题可描述如下:

Proceducer:(计算进程)

Consumer:(打印进程)computer

nextp;

wait(full);

wait(empty);nextc:=buffer(out);buffer(in):=nextp;out:=(out+1)modn:

in:=(in+1)modn:

signal(empty);

signal(full);

printtheitem;

2.3多人多缓冲问题(生产者一消费者问题)

问题:多个计算进程和多个打印进程共同使用同一缓冲区Buf。计算进程反复地把每次计算结果放入Buf中,而打印进程则把计算进程每次放入Buf中的数据通过打印机打印输出。Buf为具有n个缓冲区的缓冲池。对该问题稍加修改,计算进程称作“生产者”,打印进程称作“消费者”,计算的结果数据称作“产品”,这就是经典的生产者一消费者(producer--consumer)

问题。

在讲到这个问题时,不能简单地把算法写出,向学生一讲了事。那样会导致学生听完课之后仍然糊里糊涂,不知道怎样设置信号量。最好从上个问题着手,逐步分析,再得出算法。

在该问题中,尽管所有的生产者进程和消费者进程都是以异步方式运行的,但它们之I’BJ必须保持同步,即不允许消费者进程到一个空缓冲区去取产品,也不允许生产者进程向一个已装满产品且尚未被取走的缓冲区中投放产品。这个问题和上个问题类似:Buf都是n个缓冲区的缓冲池。同样应设置两个信号量:empty代表可用的缓冲区资源,初值为11;full代表可用的数据资源,初值为0。如果把上个问题的算法不加修改地拿到该问题中,大体上来说不会有太大问题,但仔细分析,却会有潜在的错误。比如:在起始条件下,empty值为n(假设n>1),第一个生产者生产了一件产品,先执行了wait(empty),empty减为n—l;接着执行buffer(in):=nextp,将生产的产品放在buffer(O)

计算机时代2009年第9期

中:这时,时』’日】片到了,系统调度其它进程。假没这次调度到的为另一生产者进程,第二个生产者生产了一件产品,先执行了wait(empty),empty减为n-2:接着执行buffer(in):=nextp,因为刚才in尚未增加,仍为0,所以第二个进程仍将生产的产品放在buffer(O)中。这样就导致了两个生产者进程将两件产品放在同一缓冲区中的错误。解决办法为:缓冲区为临界资源,下面的代码为访问临界资源的临界区:

buffer(in):=nextp;in:=(in+1)mod

n;

73

将算法加以修改,使生产者、消费者之间可以不互斥。为此,生

产者、消费者分别设置各自的互斥信号量,即生产者进程问使

用pmutex进行互斥,消费者进程间使用cmutex进行互斥,而生

产者进程与消费者进程问不互斥。pmutex

为1。问题可描述如下:

Proceducer:(生产者)

producer

an

cmutex的初值均

Consumer:(消费者)wait(full);wait(cmutex);nextc:=buffer(out);out:=(out+1)modsignal(cmutex);signal(empty);consumertheitem:

n:

itemnextp

wait(empty);wait(pmutex);buffer(in):=nextp;in:=(in+1)modsignal(pmutex);signal(full);

n:

对这段代码必须互斥访问。这时可利用互斥信号量mutex实现诸进程对缓冲池的互斥使用。在进入临界区之前,使用wait(mutex)申请进入;退出临界区之后,使用signal(mutex)进行退出。对于消费者进程也存在同样的问题,因此,也需要利用互

斥信号量mutex实现进程对缓冲池的互斥使用。生产者一消费

者问题可描述如下:

Pm∞ducer:(生产者)

producer

an

3结束语

进程管理是“操作系统”课程中非常重要的一部分内容,也是老师难讲、学生难学的内容。进程同步的概念较抽象.学生掌握起来有较大难度。在教学中,可采用本文所述的教学方法。经过一步步的分析,从最初最简单的进程同步问题,到复杂的同步、互斥混合问题,使学生在分析中逐渐掌握进程同步问题的描述方法。实践证明:采用该方法,教学效果良好.学生很容易理解进程同步问题的描述方法,也很有兴趣学习该部分内容;在遇到类似问题时,很容易就能解决。

参考文献:

【1l张尧学,史美林.计算机操作重统教程(第3版)【MJ.清华土学出版社,

2006.

Consumer:(消费者)wait(full);wait(mutex);nextc:=buffer(out);out:=(out+1)modsignal(mutex);signal(empty);

consumertheitern;

itemnextp

wait(empty);wait(mutex);buffer(in):=nextp;in:=(in+1)modsignal(mutex);signal(full);

n:

2.4改良的生产者一消费者问题

在上个I’u】题中,生产者、消费者在进入各自临界区时,使用相同的互斥信号量mutex。这样,在保证多个生产者互斥的同时,也限制了生产者必须与消费者之问互斥。但从算法上分析可知,生产者的临界区和消费者的临界区虽然使用了相同的数组,但使用却的是不同的指针,二者并无互斥的必要。因此,可

【2l汤子瀛,哲凤屏,汤小丹.计算机撼作系统(修订版)IMJ.由安电子科杖

土学出版社,2001.

【3JAndrewS.Tanenbaum.ModemOperatingSystemsfM】Second

Edition.机械工业出版社,2003.毯丑

・M一一_一一1・¨●¨-●一¨・.._-~W¨"¨・一-_..-●_¨_…・●~-一~~~一¨…・

(上接第70i)

思维和创新能力,难以达到实践教学的目标。

将科研课题引入教学过程后,教师将科研课题的部分科研内容节选下来,作为辅助该课程的实验内容。而在“数据库大

的数据库课程体系的教学新模式。能否选择合适的科研案例进入教学,是该教学模式成败的关键所在,这就要求教师要有目的地挖掘与科研环节相融合的教学内容.充分利用每个教学环节,帮助学生在实践过程中体验理论对实践的指导作用。实践表明,该教学模式对于为大学生参与科研提供了机会和条件,成为培养大学生创新能力的平台。

参考文献:

【1】王珊,萨师煊.量据库l统概论(第四版)【M】.高等教育出版社,2006.12l钱雪患.“矗据库原理反应甩”镰程教学实践与探讨IJ】.置龙江教育

(高教研究与评估),2008.7—8:107—109

【3l王动武.科研与教学王动并避的理论探索与实践【J】.西南农业人学学

报(社会科学版),2007.5(2):169~172

f4l知盛涛.上学生科研能力训侏与专业健程教学并犰问题振究【J】.一t岛

土学师范学院学报.2007.24(2):113~115

【5】首丹.案例教学法在鼻据库囊统概论中的应用【JI.勘喀大学学报(-兰

科学版),2006.27(2):172-175

型试验周”中,教师可以将实际的科研课题依据学生的能力进

行拆分,以替代自拟题目。在实践过程中,教师要和学生不断交流,对于学生设计过程中存在的问题,要及时反馈。在整个实践过程结束后,教师要向学生展示成功科研项目,帮助学生寻找设计中存在的差距。在实践过程的考核机制中,要避免以

往只注重结果,不注重过程的考核办法,教师要跟踪学生的整

个设计过程,从需求分析、概念结构设计、逻辑结构设计、数据库物理设计、到数据库的实施和维护,每个阶段都要和学生交流,及时反馈,并对该阶段学生的成果,包括设计文档和程序质

量,进行考核,最后给出综合成绩,以促使学生重视整个设计过

程,在真正的科研课题中将课本中学到的知识学以致用。

4结束语

鉴于数据库课程体系的特殊性,提出了与科研课题相结合

万方数据 

进程同步的教学方法探讨

作者:作者单位:刊名:英文刊名:年,卷(期):

白秀玲, 宋晓莉, 邱涌, 张营, 张孝国, 杨春蕾, BAI Xiu-ling, SONG Xiao-li,QIU Yong, ZHANG Lei, ZHANG Xiao-guo, YANG Chun-lei河南科技大学电子信息工程学院,河南,洛阳,471003计算机时代COMPUTER ERA2009(9)

参考文献(3条)

1. Andrew S Tanenbaum Modern Operating Systems 20032. 汤子瀛;哲凤屏;汤小丹 计算机操作系统 20013. 张尧学;史美林 计算机操作系统教程 2006

本文链接:http://d.g.wanfangdata.com.cn/Periodical_jsjsd200909028.aspx


相关文章

  • 洒雨中学同步小康创建活动总结
  • 洒雨中学同步小康创建活动实施方案 根据上级文件精神,洒雨中学结合自身实际情况, 为了认真贯彻落实省委政府"帮县.联乡.驻村"相关文件精神,增强全心全意为人民服务的宗旨意识,深入农村砥砺品质.锤炼作风.增长才干,帮助扶持农 ...查看


  • 我国城市公共交通发展政策法规探讨
  • 交通政策法规结课论文 我国城市公共交通发展政策法规探讨 北京交通大学 公交学院 姓名: 窦晓美 年级:2015级 春高起专 学号:15636038 我国城市公共交通发展政策法规探讨 摘要:城市公共交通是城市建设的重要基础设施,是城市经济发展 ...查看


  • 现代化史观与近现代史教学内容的构建
  • 现代化史观与近现代史教学内容的构建 付玉成 摘要:现代化史观的确立是史学理论的重大发展,它是伴随着现代化进程的发展和现代化理论研究的深入而形成的.现代化史观又称"一元多线"发展观,其合理性对历史专业的近现代史教学有较大的 ...查看


  • 有效教学的实践与反思doc
  • (一)有效教学的含义什么是"有效",什么是"教学" 有效教学的核心就是教学的效益,即什么样的教学是有效的? 所谓"有效",主要是指通过教师在一段时间的教学之后,学生所获得的具体的进 ...查看


  • 初中音乐教学案例
  • 的姊妹艺术--影视音乐. 2.通过对本节课所接触的音乐进行了解与感知,激发学生 主动思考音乐在影视艺术中的作用,并乐于参和讨论相关话题. 3.在鉴赏影视音乐的过程中,能初步区分主题歌.插曲. 主题音乐及场景音乐:能简述出音画"对位 ...查看


  • 进程同步与互斥
  • 实验二 进程同步与互斥 一. 实验属性 实验性质: 验证性 实验学时: 4学时 实验要求: 必做 二.实验目的 1. 掌握基本的同步与互斥算法,理解生产者消费者模型. 2. 学习使用Linux中基本的同步对象,掌握相关使用方法. 3. 了解 ...查看


  • 进程同步和互斥
  • 进程同步和互斥 一.设计目的: 通过实现哲学家进餐问题的同步深入了解和掌握进程同步和互斥的原理. 二.设计内容: 哲学家有N个,也定全体到达后开始讨论:在讨论的间隙哲学家进餐,每人进餐时都需使用刀.叉各一把,所有哲学家刀和叉都拿到后才能进餐 ...查看


  • 洋葱细胞核仁结构与rDNA复制的动态关系
  • http://www.paper.edu.cn 洋葱细胞核仁结构与rDNA 复制的动态关系 尚广彬 王爽 王丽丽 焦明大* 东北师范大学细胞与遗传研究所 吉林 长春 130024 E-mail: [email protected] ...查看


  • 探讨进城务工人员随迁子女教育问题
  • 随着社会经济的迅速发展.农村劳动力的流动和迁移已成为当今中国社会的常态.城乡二元制的存在.使得进城务工人员难以享受城市基本公共服务,也使得其子女难以平等接受义务教育.为确保义务教育的全面巩固和提高,<国家中长期教育改革和发展规划纲要( ...查看


热门内容