1、1专业课程设计 I 学生班级:B090402任课教师:黄海平专业课程:操作系统 、 微机原理与接口技术(含汇编语言) 、Java 语言程序设计 、 编译原理 、 计算机图形学 、 数据结构与算法课题考察形式:第一题为必做题+(在二、三、四、五、六、七题中)选做 1 题(选做规则:每题选择人数不能多于 8 人,不能少于 4 人)上机时间地点:第 9-10 周(2012.4.16-2012.4.26),每周一周四下午 13:4516:10,教五楼 501 室,不得缺席一、必做题:1、课题名称教师对学生的项目评分进程的同步与互斥2、课题描述在一个班上有 S 个学生。每个学生都要做一个项目,每一个项目
2、由 K 个老师一起评分。总共有 M 个老师。每个老师最多给 N 个项目评分。其中,S*KD。每一个学生的项目由 K 个老师共同来检查。在 T 分钟的时间段内,学生可以在任何时间进入教室(random) ,除了在最后的 D 分钟内。所有的老师一直保持工作状态直到他检查完 N 个项目或者是T 分钟过去后。 T 分钟过去后,所有的老师和同学都必须离开教室。另外,在T 分钟结束前的 D 分钟内(即在最后的 D 分钟内),如果有任何老师或者是学生都处在没有任务的状态下,都必须离开教室,因为已经没有时间让他完成任务了(因为一个项目检查的时间是整整 D 分钟)。该课题主要考察操作系统中 PV 操作知识点,涉
3、及到多进程管理和死锁的2相关知识。3、具体过程当一个学生进入教室后,他立即开始找 K 个没有任务的老师(一次找一个老师,假如没有空闲的老师,则等到有老师为止),找齐 K 个老师之后给老师检查,然后离开教室。刚开始每一个老师都是处于空闲状态直到他被学生找到,被学生找到后只能等待,直到学生找齐 K 个老师(在等待学生找其他老师的时间里,他是不能接受其他同学检查作业的请求的),当学生找齐 K 个老师后,老师们执行完检查任务,然后重新变成空闲状态。每个老师在总共检查了 N 个学生的作业后,离开教室。注意,并不保证所有的学生都在 T 分钟的时间段内完成了检查,还要注意不能发生死锁问题。4、基本要求用一个
4、程序来模拟上面描述的作业检查过程。每一个学生和每一个老师应该用不同的线程来完成。可以选用 C、C+和 Java 作为开发语言,但是考虑到专业课程设计 I 的实验大纲,请尽可能使用 Java 语言。5、提高要求(1) 考虑到跨平台的特性,请尽量使用 posix 线程标准(采用该标准有额外的加分) ;(2) 实现良好的图形用户界面;(3) 在程序演示过程中能清晰的展示多个学生线程和多个老师线程的同步和互斥流程。6、作答提示(1) 学生线程和老师线程一个学生线程执行下面的步骤:(1) 选择一个进入的时间 (random()%(T-D)minutes ;(2) 进入教室;(3) 选择 K 个空闲的老师
5、,若找不齐,则等待;(4) 找齐后,做 D 分钟的检查;(5) 检查完毕离开教室。3一个老师线程执行下面的步骤:(1) 在教室中空闲;(2) 直到被一个学生选择后等待(所有 K 个老师聚集);(3) 等待结束项目检查开始;(4) 做 D 分钟的项目检查;(1)(4)步骤重复 N 次(5) N 次检查完毕或者 T 分钟时间到,离开教室。(2) 注意事项(1) 在剩余时间小于 D 时,一个已创建的学生线程只能执行第(5)步,不能再创建新的学生线程;(2) 在剩余时间小于 D 时,一个老师进程只能在执行(3)(4)步或者直接执行第(5) 步; (3) 对于所有合理的 S, M, K, N, T, D
6、 数值(这些数必须都是正整数并且满足条件:S*K D),你的程序都能够运行成功;(4) 你的程序对所有的时间安排策略都必须运行成功。例如不管线程的相对速度,例如要把握好 sleep 的毫秒数;(5) 在每一个线程的生命周期内,每一步都要有一个合理的说明信息,来表明这个线程中包括哪个老师,哪个学生,进行到什么程度了;(6) 要特别注意防范死锁问题的发生。以上六点都是最后评分的要点。7、测试用例(注:仅供参考,不作为程序实现的标准格式)说明信息的格式提供如下:S=5 M=3 K=2 N=3 T=150 D=200 student 0: starts panicking0 student 1: st
7、arts panicking0 student 2: starts panicking0 student 3: starts panicking0 student 4: starts panicking0 marker 0: enters lab0 marker 1: enters lab0 marker 2: enters lab14 student 0: enters lab14 marker 0: grabbed by student 0 (job 0)14 marker 1: grabbed by student 0 (job 0)414 student 0: starts demo3
8、5 student 0: ends demo35 student 0: exits lab (finished)35 marker 1: finished with student 0 (job 0)35 marker 0: finished with student 0 (job 0)38 student 2: enters lab38 marker 2: grabbed by student 2 (job 2)38 marker 1: grabbed by student 2 (job 2)38 student 2: starts demo54 student 4: enters lab5
9、4 marker 0: grabbed by student 4 (job 4)59 student 2: ends demo59 student 2: exits lab (finished)59 marker 2: finished with student 2 (job 2)59 marker 2: grabbed by student 4 (job 4)59 marker 1: finished with student 2 (job 2)59 student 4: starts demo80 student 4: ends demo80 student 4: exits lab (f
10、inished)80 marker 2: finished with student 4 (job 4)80 marker 0: finished with student 4 (job 4)96 student 3: enters lab96 marker 1: grabbed by student 3 (job 3)96 marker 2: grabbed by student 3 (job 3)96 student 3: starts demo117 student 3: ends demo117 student 3: exits lab (finished)117 marker 1:
11、finished with student 3 (job 3)117 marker 1: exits lab (finished 3 jobs)117 marker 2: finished with student 3 (job 3)117 marker 2: exits lab (finished 3 jobs)127 student 1: enters lab127 marker 0: grabbed by student 1 (job 1)131 student 1: exits lab (timeout, time2基本要求:(1) 计算结果正确;(2) 程序运行良好,演示清晰。提高要
12、求:能实现图形化的显示。3、参考书目1 孙力娟等 . 微型计算机原理与接口技术M. 北京: 清华大学出版社, 2008.2 徐建民等 . 汇编语言程序设计M. 北京: 电子工业出版社, 2005.四、选做题3:1、课题名称Java 语言实现一个嵌入网页执行的小 Applet2、课题内容和要求实现一个有声音、图像和文字的小 Applet 嵌入网页中执行。基本要求:(1) 该 Applet 必须是个性化的,包含了你个人的信息(例如姓名、学号),能体现个人的兴趣爱好等主题,与你自身主题无关的 Applet 一律认为是抄袭;(2) 该 Applet 能够实现丰富的图文素材,而不是单一的枯燥的简单例子;
13、(3) 程序运行良好,界面清晰。提高要求:(1) 在 Applet 中实现个性化小游戏或者动画功能;(2) 封装成为 JSP (Java Server Page)。73、参考书目1 王汝传. Java 语言程序设计基础M. 成都: 成都科技大学出版社, 1998.2 张孝祥. Java 就业培训教程M. 北京: 清华大学出版社, 2003.五、选做题4:1、课题名称图形动画制作2、课题内容和要求用图形函数设计动画,一个人在公路上奔跑,这时从屏幕右端开出一辆卡车,最终将人撞倒了。基本要求:(1) 编程实现该动画;(2) 实物演示时要求讲出程序原理;(3) 程序操作友好、界面清晰。提高要求:(1)
14、 人和卡车的图形设计轮廓明晰,动画显示清楚、逼真;(2) 能够给动画赋予色彩,甚至实现三维效果。3、参考书目1 王汝传 黄海平 林巧民. 计算机图形学M. 北京: 人民邮电出版社, 2009.2 孙家广 编著 . 计算机图形学M. 北京: 清华大学出版社, 2002.六、选做题5:1、课题名称词法分析程序的构造2、课题内容和要求选取语言,例如选取了 C 语言,选取其中一个子集,例如包含了部分关键字 main、float、if、for 等等,特殊符号( 、 、=、+等等,特殊定义的标识符8变量以及部分常量等,采用编译原理词法分析中有穷自动机的思想构建出该语言子集的状态转换图,并编码实现。基本要求
15、:(1) 将选取的语言子集编写一个简单程序,放在一个文本文件中; (2) 编程时采用 C 语言或者 C+语言实现该词法分析程序;(3) 要将一个个单词区分清楚并归类(例如 for 属于关键字 )。提高要求:(1) 能做出好的图形化界面,便于人机交互;(2) 能够实现实时的词法编译。3、参考书目1 王汝传. 编译技术原理及其实现方法. 成都: 成都科技大学出版社, 1998.2 吕映芝 等编著 . 编译原理. 北京: 清华大学出版社, 1998.3 陈火旺 等编著 . 程序设计语言编译原理. 北京: 国防工业出版社, 2000.4 王 雷 等编著 . 编译原理课程设计. 北京: 机械工业出版社,
16、 2004.七、选做题6:1、课题名称最短路径算法2、课题内容和要求该最短路径算法主要以南京市的道路交通为模板(具体见附录图 1) ,简单实现任意两个地点之间最短路径查询(例如三牌楼新街口) ,该最短路径剔除了那些由于某些原因堵塞不通的路径。基本要求:(1) 编程实现,数据结构选用邻接矩阵或邻接表来实现;(2) 实物演示时要求讲出程序原理;(3) 程序操作友好、界面清晰。提高要求:(1) 有很好的图形界面便于人机交互,路径长度和道路编号明晰;(2) 高效先进的算法 。93、参考书目1 陈慧南. 数据结构使用 C+描述(第 2 版)(普通高等教育“ 十一五”国家级规划教材) M. 北京: 人民邮
17、电出版社, 20082 殷人昆, 陶永雷等著. 数据结构(用面向对象方法与 C+描述) M. 清华大学出版社, 2007.10附 录:具体的需求分析见图 1、表 1 和表 2:山西路三牌楼紫金山中央门南邮仙林长江大桥莫愁湖珠江路鼓 楼江 宁南京西站草场门月牙湖四牌楼雨花台夫子庙新街口杨公井长途东站总统府(1#, 7)(10#, 5)(2#, 2)(24#, 3)(22#, 3)(20#, 4)(23#, 2)(15#, 3)(19#, 3)(21#, 2)(17#, 3)(16#, 7)(14#, 6)(7#, ) (12#, 4)(13#, 7)(11#, 7)(8#, )(9#, 4)(5
18、#, 3)(4#, 1)(3#, 5)(25#, 3)(26#, 4)(27#, 5)(6#, 3)(18#, 2)(28#, )图 1 南京市道路交通图说明:虚线部分表明堵塞,(i#, j)中前者 i 标识路编号,后者 j 标识路径长度11三牌楼 山西路 鼓楼 草场门 中央门 南京西站 长途东站 南邮仙林 紫金山 珠江路 月牙湖 新街口 莫愁湖 总统府 杨公井 夫子庙 雨花台 江宁 长江大桥 四牌楼三牌楼 0 1 3 5 2 7 3 山西路 1 0 2 7 3鼓楼 3 2 0 3 4草场门 5 0中央门 2 0南京西站 7 0 5 4长途东站 5 0 7 4 南邮仙林 7 0 7紫金山 3
19、4 7 0 6珠江路 3 6 0 3月牙湖 3 0新街口 4 0 3 3莫愁湖 7 0 总统府 0 2 2杨公井 3 2 0 3 4夫子庙 3 0雨花台 4 0 5江宁 5 0长江大桥 4 0 四牌楼 3 3 2 0表 1 道路交通矩阵说明: 标识没有直接路径到达或者堵塞12三牌楼 山西路 鼓楼 草场门 中央门 南京西站 长途东站 南邮仙林 紫金山 珠江路 月牙湖 新街口 莫愁湖 总统府 杨公井 夫子庙 雨花台 江宁 长江大桥 四牌楼三牌楼 4# 5# 3# 2# 1# 7# 6#山西路 4# 18# 16# 17#鼓楼 5# 18# 19# 20#草场门 3#中央门 2# 8#南京西站 1# 10# 9#长途东站 7# 10# 11# 12#南邮仙林 11# 13#紫金山 6# 12# 13# 14#珠江路 19# 14# 15# 28#月牙湖 15#新街口 20# 28# 24# 22#莫愁湖 16#总统府 23# 21#杨公井 24# 23# 25# 26#夫子庙 25#雨花台 26# 27#江宁 27#长江大桥 8# 9#四牌楼 17# 22# 21#表 2 道路交通路编号矩阵说明:空格表示没有直接通路