“操作系統”课程中进程同步互斥教学研究.doc

“操作系統”课程中进程同步互斥教学研究.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
“操作系統”课程中进程同步互斥教学研究

“操作系统”课程中进程同步互斥教学研究 摘要:“操作系统”是计算机专业的核心课程之一。由于涉及的学科多、知识点多、课程内容难理解等,该课程的教与学一直是学科难点。成人教育学生普遍起点较低,对纯理论性知识不太乐于接受。本文以该课程的一个核心知识点——进程同步与互斥为实例,探讨如何从学习者的角度设计循序渐进的教学内容,并通过编写程序验证书本理论,提高成教学生的兴趣和实践能力。br  关键词:进程;同步;互斥;信号量;多线程br  G642br  br  计算机专业中,“操作系统”课程非常重要。操作系统直接高效地管理着计算机的各种软硬件资源,为用户提供使用接口。操作系统是最复杂的系统软件,涉及了程序设计语言、计算机系统结构/硬件、软件设计、网络、算法等。由于该课程内容多而杂,普通高校学生特别是成人教育学生学习比较困难。传统教学方式下,只给学生讲解操作系统原理,学生感到抽象、难懂,近些年来,很多高校加大实验(实践)教学力度,在讲授理论的同时,加入操作系统内核代码分析,如一些学校让学生分析Linux内核。但这势必加大教学工作量,教师无法在五六十学时内完成课程教学。br  为了既让学生深入掌握理论知识,又能通过编码验证理论,本文根据实际教学经验,结合普通高校学生学习该课程的状况,以进程同步互斥为例,从以下四个方面讨论如何循序渐进地展开教学。br  br  1 “进程同步与互斥”的引入br  br  教学中,首先带领学生回忆在DOS环境下的C语言编程,使学生明白什么是单道程序环境。然后就提高系统的利用率,提出了程序并发执行的载体——进程。程序并发执行时,涉及到相同资源会引起一些问题,但抽象的理论并不利于学生的深入理解,笔者设计了一个银行存取款问题的案例:br  某一银行账户M,尚有存款100元;用户P、Q同时对该账户进行操作,可能会导致数据不一致,操作过程如图1所示:br  ① 时间T2T1T0;br  ② T0时刻,p0操作读出Mp0=100;br  ③ T0时刻,q0操作读出Mq0=100;br  ④ T1时刻,p1操作写入数据:存款100,M=Mp0+ 100=200;Q未能获得更新后的数据;br  ⑤ T2时刻,q1操作写入数据:存款100,M=Mq0+ 100=200;br  br  应该是300元的账户余额,由于操作的并发执行,造成只有200元余额。通过这一具体、直观的例子,让学生明白并发执行与顺序执行有很多不一样的地方,即并发环境中的共享资源,不能同时访问,只可互斥访问。然后带领学生学习并发操作的Bernstein条件、临界资源等知识。br  br  2信号量描述br  br  怎样才能做到在某一时刻,只有一个进程访问该资源呢,这就是临界资源的管理方法。在介绍了部分不成熟的管理方案后,引入Dijkstra提出的信号量和P、V操作机制。br  (1) 信号量定义br  信号量是进程在某一特殊点上被迫停止执行直到接收到一个对应的特殊变量值。进程使用P、V两个原语操作发送和接受信号,如信号没有送到,进程被挂起,直到信号到达。br  信号量按其用途可分为:用于进程互斥访问临界资源的公用信号量;用于进程同步时协调相互关系的私有信号量。br  信号量按其取值可分为:整型信号量、可用资源数目的记录型信号量。br  (2)P、V操作定义描述br  信号量结构中需要一个整型计数和一个等待对象。br  P操作表示现行进程向系统申请资源,将信号量值减1,如结果小于0,则调用进程被置成等待信号量的状态。br  V操作表示现行进程释放该类资源,信号量值加1,系统可用资源数也增加一个,如果s.value≤0,等待队列中有等待进程,则唤醒其中一个。br  信号量定义,PV操作算法C语言描述如下:br  br  typedef struct {br  int value;//信号量值br  QueueType waitQueue;//等待队列br  } semaphore;br  void P(semaphore s){ br  --s.value;br  if (s.value0){br  阻塞调用进程; br  进程进入等待队列s. waitQueue;br  }br  }br  void V(semaphores){ br  ++s.value;br  if(s.value=0){br   从等待队列s. waitQueue中取出一个进程;br   将该进程入就绪队列;br  }br  }br  (3) 关于信号量与PV操作的几个结论br  结论1:若信号量s为正值,则该值等于在封锁进程之前对信号量s可施行的P操作数,亦等于s所代表的实际还可以使用的物理资源数。br  结论2:若信号量s为负值,

文档评论(0)

fv45ffsjjI + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档