《操作系统课程设计教学大纲(2007级).pdf》由会员分享,可在线阅读,更多相关《操作系统课程设计教学大纲(2007级).pdf(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 操作系统课程设计操作系统课程设计操作系统课程设计操作系统课程设计教学大纲教学大纲教学大纲教学大纲 一、课程设计基本信息 课程设计环节代码:230027 课程设计环节名称:操作系统课程设计 英文名称:Course Design of Operating System 课程设计周数:2 周 学分:2.0 适用对象:计算机科学与技术专业、网络工程专业 先修课程与环节:高级语言程序设计、数据结构和操作系统 二、课程设计目的和任务 本课程是计算机专业的学生在学习了操作系统课程之后,为了加深和巩固学生对所学操作系统各个理论和算法知识的理解,同时提高学生利用操作系统知识综合运用的能力和分析问题、解决的问
2、题的能力而开设的一门实践课程。通过本环节学生能够充分把学到的知识应用到实际的编程实践中,有可以进一步巩固操作系统中学习的理论。通过算法实现各种控制应用进一步体会操作系统中基本功能模块的结构和实现方法的实质,建立深入了解现有操作系统的评价和比较的方法,加深体会利用操作系统的原理能够解决实际问题的在计算机系统编程和普通编程中解决实际问题的思路;通过对程序编写规范,可以培养学生良好的编程风格,包括程序结构形式,行文格式和程序正文格式等;并培养学生的上机调试能力。三、课程设计方式 1、课程设计题目的选定 采用指导教师提供参考题目与学生自主命题相结合的办法选定课程设计题目。一人一题,不得重复。其中学生自
3、主命题需要指导教师严格的审核,看是否满足课程要求,检查是否为重复课题。2、课程设计任务的完成 在指导教师的指导下,各个学生独立完成课题分析、设计、代码编写和调试,独立撰写课程设计报告。所有工作任务主要在微机实验室完成。四、课程设计教学方法与要求 课程设计教学方法:主要以学生上机操作为主,教师指导为辅 课程设计要求:1、对系统进行功能分解、模块分析、控制模块分析正确 2、选择合适的操作系统原理所需要数据结构以及相应的算法 3、程序规模适中,着重于内核修订功能,也可以编写外围的程序驱动、文件系统的辅助工具和网络工具等。尽可能的使系统的功能更加完善和全面 4、掌握程序调试的方法 5、说明书、流程图要
4、清楚,阐明设计思路。6、撰写课程设计报告。按格式要求写出完整、规范的报告并打印。其中模块图、流程图要清楚、规范。特别要求学生自己独立完成。2 五、课程设计内容和时间安排(一)(一)(一)(一)动员、准备动员、准备动员、准备动员、准备及及及及规划规划规划规划(0.50.50.50.5 天)天)天)天)实习具体内容:动员、选题、系统功能和需求的分析 时间分配:上午动员、选题及规划 实习地点:机房(二)(二)(二)(二)课程设计实课程设计实课程设计实课程设计实施、施、施、施、检查检查检查检查(0.50.50.50.5 天)天)天)天)实习具体内容:需求分析说明书和任务规划,设计出每个功能 时间分配:
5、下午上机、初期检查 实习地点:机房(三三三三)课程设计实施课程设计实施课程设计实施课程设计实施(8 8 8 8 天)天)天)天)实习具体内容:具体功能的实现及系统的完善工作、中期检查 时间分配:8 天上机,1 小时中期检查 实习地点:机房(四四四四)整理报告整理报告整理报告整理报告(1 1 1 1 天)天)天)天)实习具体内容:文档整理、设计报告的完成 时间分配:全部时间写报告 实习地点:机房或图书馆 六、课程设计基本要求(一)(一)(一)(一)动员、准备动员、准备动员、准备动员、准备及及及及规划规划规划规划 1、要求:通过学习,使学生了解所选择开发环境的程序运行环境中的调试功能,掌握跟踪、修
6、改错误的技巧。2、重点:题目的选定和结合操作系统原理的各个部分确定实现的功能以及和原理的结合,难点:对于程序运行环境学会断点设置以及中间结果的检查。3、说明:题目自选也可以参考教师提供的题目,选题要紧密结合课堂教学内容;并建立一个可行的工作计划;熟悉程序运行环境。(二)(二)(二)(二)课程设计实施、课程设计实施、课程设计实施、课程设计实施、检查检查检查检查 1、要求:领会按照实际的结构,使学生能根据实际问题选择数据结构,清晰的描述算法 2、重点和难点:算法分析和设计 3、说明:学生自检和指导教师检查相结合,严格按照拟订计划完成任务(三)(三)(三)(三)课程设计实施课程设计实施课程设计实施课
7、程设计实施 1、要求:培养良好的编程风格,掌握所选编程语言 2、重点和难点:算法分析和设计 3、说明:学生自检和指导教师检查相结合,严格按照拟订计划完成任务(四)(四)(四)(四)整理报告整理报告整理报告整理报告 1、要求:通过学习,使学生掌握报告书写规范 2、重点:格式的规范 3、说明:指导教师检查 七、课程设计的考核方式和成绩评定标准(一)(一)(一)(一)课程设计考核方式课程设计考核方式课程设计考核方式课程设计考核方式 点名、各个环节的考核及程序检查、设计报告的综合评定。(二)(二)(二)(二)课程设计成绩评定标准课程设计成绩评定标准课程设计成绩评定标准课程设计成绩评定标准 3 课程设计
8、成绩=点名*10%+程序检查*30%+设计报告*60%由指导教师根据学生完成任务的情况、课程设计报告的质量和课程设计过程中的工作态度等综合打分。成绩评定实行优、良、中、及格和不及格五个等级。不及格者不能得到相应的学分,需重新做课程设计,经指导教师考核及格后,方可取得相应学分。优:有完整的符合标准的文档,文档有条理、文笔通顺,格式正确,其中有总体设计思想的论述;程序完全实现设计方案,设计方案先进,软件可靠性好;良:有完整的符合标准的文档,文档有条理、文笔通顺,格式正确;有完全实现设计方案的软件,设计方案较先进;中:有完整的符合标准的文档,有基本实现设计方案的软件,设计方案正确;及格:有完整的符合
9、标准的文档,有基本实现设计方案的软件,设计方案基本正确;不及格:没有完整符合标准的文档,软件没有基本实现设计方案,设计方案不正确。提交的电子文档和软件必须是由学生自己独立完成,雷同者教师有权视其情况扣分或记零分。八、课程设计指导书指导书指导书指导书 孙钟秀编操作系统教程(高等教育出版社)九、其他说明其他说明其他说明其他说明(一)课程设计报告要求:总结报告按如下内容顺序用 A4 纸进行撰写并打印装订成册:1、统一的封面;2、内容摘要;3、目录;4、课程设计正文包含以下内容:(1)需求分析(2)概要设计:每个部分的算法设计说明可以是描述算法的流程图,说明每个程序中使用的存储结构设计(如果指定存储结
10、构请写出该存储结构的定义)。(3)详细设计:各个算法实现的源程序,源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。(4)调试分析:测试数据,测试输出的结果,算法时间复杂度分析 E结论和展望:每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),和算法的改进设想。课程设计过程的收获、遇到问题解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对数据结构课程的认识等内容。(5)按统一格式列出主要参考文献。(二)学生上交材料:1、程序源代码和一组较完备的测试数据(打包上传,发送到各个指导老师的邮箱中,文件名格
11、式为“姓名-班级-学号”);2、上交程序的说明文件:(保存在.txt 中)在说明文档中应该写明上交程序所在的目录,上交程序的主程序文件名,如果需要安装,要有程序的安装使用说明;3、课程设计报告 大纲修订人:修订日期:2009 年 8 月 20 大纲审定人:吴家培 审定日期:4 附件 1:指导教师推荐题目(供参考)选题:题目大小适中 课题一课题一课题一课题一、编制银行家算法通用程序,并检测所给状态的系统安全性。编制银行家算法通用程序,并检测所给状态的系统安全性。编制银行家算法通用程序,并检测所给状态的系统安全性。编制银行家算法通用程序,并检测所给状态的系统安全性。设计目的:主要是解决多种资源的被
12、多个独立执行的程序使用的安全算法。银行家算法就是采用矩阵存储资源的数据进行处理的方法。设计的要求:1)资源的种类和数目可以变化的 2)进程可以的任意的顺序创建和变化 3)采用保守的方法来分配资源。课题二课题二课题二课题二、处理机调度程序:选择一个调度算法,实现处理机调度。、处理机调度程序:选择一个调度算法,实现处理机调度。、处理机调度程序:选择一个调度算法,实现处理机调度。、处理机调度程序:选择一个调度算法,实现处理机调度。设计目的:在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个。也就是说能运行的进程数大于处理机个数。为了使系统中的进程能有条不紊地工作,必须选用某种调度策略
13、,选择一进程占用处理机。要求学生设计一个模拟处理机调度算法,以巩固和加深处理机调度的概念。设计要求:1)进程调度算法包括:时间片轮转法,短作业优先算法,动态优先级算法。2)可选择进程数量 3)本程序包括三种算法,用 C 语言实现,执行时在主界面选择算法(可用函数实现),进入子页面后输入进程数,(运行时间,优先数由随机函数产生),执行,显示结果。课题三课题三课题三课题三、用多进程同步方法解决生产者、用多进程同步方法解决生产者、用多进程同步方法解决生产者、用多进程同步方法解决生产者-消费者问题消费者问题消费者问题消费者问题 设计目的:通过研究 Linux 的进程机制和信号量实现生产者消费者问题的并
14、发控制.说明:有界缓冲区内设有 20 个存储单元,放入/取出的数据项设定为 1-20 这 20 个整型数.设计要求:1)每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容,当前指针位置和生产者/消费者县城的标识符.2)生产者和消费者各有两个以上.3)多个生产者或多个消费者之间须有共享对缓冲区进行操作的函数代码.课题四、课题四、课题四、课题四、设计虚拟存储区和内存工作区设计虚拟存储区和内存工作区设计虚拟存储区和内存工作区设计虚拟存储区和内存工作区,编程序演示下述算法的具体实现过程编程序演示下述算法的具体实现过程编程序演示下述算法的具体实现过程编程序演示下述算法的具体实现过程,
15、并计算访问命中率:并计算访问命中率:并计算访问命中率:并计算访问命中率:要求设计主界面以灵活选择某算法,且以下算法都要实现 1)先进先出算法(FIFO)2)最近最久未使用算法(LRU)3)最佳置换算法(OPT)课题五课题五课题五课题五、编程序实现下述磁盘调度算法、编程序实现下述磁盘调度算法、编程序实现下述磁盘调度算法、编程序实现下述磁盘调度算法,并求出每种算法的平均寻道长度:并求出每种算法的平均寻道长度:并求出每种算法的平均寻道长度:并求出每种算法的平均寻道长度:要求设计主界面以灵活选择某算法,且以下算法都要实现 1)先来先服务算法(FCFS)2)最短寻道时间优先算法(SSTF)3)扫描算法(
16、SCAN)4)循环扫描算法(CSCAN)课题六、编程课题六、编程课题六、编程课题六、编程模拟多进程共享临界资源:模拟多进程共享临界资源:模拟多进程共享临界资源:模拟多进程共享临界资源:要求产生 3 个进程:5 1)两个进程模拟需要进入临界区的用户进程,当需要进入临界区时,显示:“进程 x 请求进入临界区”,同时向管理进程提出申请;申请返回,表示进入了临界区。在临界区中等待一段随机时间,并显示:“进程 x 正在临界区”;当时间结束,显示:“进程 x 退出临界区”,同时向管理进程提出退出申请;当申请返回,显示:“进程 x 已退出临界区。”2)一个进程作为原语的管理进程,接受其他进程的临界区进入请求
17、:如果允许进入,则设置相应变量,然后返回;如果不允许进入,则进入循环等待,直到允许为止;3)对临界区的访问应遵循空闲让进、忙则等待、有限等待、让权等待的准则。4)进程间通信可以采用信号、消息传递、管道或网络通信方式。课题课题课题课题七七七七:为为为为 LINUXLINUXLINUXLINUX 设计一个简单的二级文件系统。要求做到以下几点:设计一个简单的二级文件系统。要求做到以下几点:设计一个简单的二级文件系统。要求做到以下几点:设计一个简单的二级文件系统。要求做到以下几点:1)可以实现下列几条命令(至少 4 条)。Login 用户登录 Dir 列文件目录 Create 创建文件 Delete
18、删除文件 Open 打开文件 Close 关闭文件 Read 读文件 Write 写文件 2)列目录时要列出文件名、物理地址、保护码和文件长度。3)源文件可以进行读写保护。课题八课题八课题八课题八:存储管理存储管理存储管理存储管理-动态分区动态分区动态分区动态分区分配算法的模拟:分配算法的模拟:分配算法的模拟:分配算法的模拟:要求设计主界面以灵活选择某算法,且以下算法都要实现:首次适应算法、循环首次适应算法、最佳适应算法;课题九课题九课题九课题九:编程演示三种编程演示三种编程演示三种编程演示三种存储管理存储管理存储管理存储管理方式的方式的方式的方式的地址换算地址换算地址换算地址换算过程:过程:
19、过程:过程:1)分页方式的地址换算 分段方式的地址换算 3)段页式的地址换算 要求演示正确、清晰,编程所用工具不限。课题十课题十课题十课题十、编写一个简单的端口扫描程序、编写一个简单的端口扫描程序、编写一个简单的端口扫描程序、编写一个简单的端口扫描程序 目的:熟悉 linux 下 socket、网络编程的基本方法;任务:编写一个简单的程序,该程序可扫描局域网的某计算机开放了哪些端口;课题十一课题十一课题十一课题十一、编写一个基于、编写一个基于、编写一个基于、编写一个基于 TCP 协议的客户协议的客户协议的客户协议的客户/服务器程序服务器程序服务器程序服务器程序 目的:熟悉 linux 下 so
20、cket、网络编程的基本方法,掌握实现客户/服务器程序的编写方法;任务:编写一个简单的程序,该程序可实现基于 TCP 协议的简单的客户/服务器方式。课题十二课题十二课题十二课题十二、编写一个使用数据报套接字的客户、编写一个使用数据报套接字的客户、编写一个使用数据报套接字的客户、编写一个使用数据报套接字的客户/服务器程序服务器程序服务器程序服务器程序 目的:熟悉 linux 下 socket、网络编程的基本方法,掌握客户/服务器程序的编写方法;任务:编写一个简单的程序,该程序使用数据报套接字实现简单的客户/服务器方式。6 课题十三课题十三课题十三课题十三、在、在、在、在 linux 平台编写一个
21、简单的网络监听程序平台编写一个简单的网络监听程序平台编写一个简单的网络监听程序平台编写一个简单的网络监听程序 目的:熟悉网络数据包格式,熟悉捕获网络数据包的基本方法 任务:在 linux 平台编写一个简单的网络监听程序,该程序能捕获网络数据包,并根据需要分析相应的数据包。课题十四课题十四课题十四课题十四、编写一个简单的内核模块。、编写一个简单的内核模块。、编写一个简单的内核模块。、编写一个简单的内核模块。目的:动态可加载内核模块是我们动态扩展内核功能的一种方便灵活的方式,可用来实现一种文件系统、一个驱动程序、或其它内核上层的功能。基本要求:1)该模块至少需要有两个函数:一个是 init_mod
22、ule()函数,在把模块装载到内核时被调用,向内核注册模块所提供的新功能;另一个是 cleanup module()函数,在卸载模块时被调用,其任务是清除init_module()函数所注册的功能。编写完成后进行该模块的编译、装载和卸载操作。编写一个用户空间的程序来测试是否成功。2)进一步的要求:向上面模块中再添加一些自己设计实现的新函数新功能;编写一个用户空间的程序来测试你的模块能否实现自己添加的功能。课题十五课题十五课题十五课题十五、编写一个简单的命令解释器、编写一个简单的命令解释器、编写一个简单的命令解释器、编写一个简单的命令解释器模拟模拟模拟模拟 shell 功能功能功能功能 基本要求
23、 1)可打开提示符,并获取用户输入的指令可解析指令 3)可寻找命令文件 4)可执行基本的命令 课题十六课题十六课题十六课题十六、实现系统状态监测工具、实现系统状态监测工具、实现系统状态监测工具、实现系统状态监测工具 目的:实现程序,通过获取/proc 文件系统所提供的系统信息,检查系统当前的各种状态信息。要求:通过在命令行运行该程序,可获取以下信息:1)CPU 类型、型号、内核版本等信息从系统启动至今的时间等 3)内存总容量及当前可用内存量 4)系统平均负载 5)支持的文件系统类型 6)系统正在使用的 module 信息 附件附件附件附件 2 2 2 2:课程设计题目课程设计题目课程设计题目课
24、程设计题目 1.中文输入法程序 2.文件管理系统 3.线程管理 4.Windows 进程多种同步案例演示 5.各种 Window 或 Linux 驱动程序编程 6.基于共享内存的进程之间的通信 7.文件加密 8.PE 文件结构解析 9.异常处理系统 10.作业管理 11.中断驱动程序 12.可执行程序的加壳和脱壳 7 13.LRU 动态内存管理模拟 14.注册表管理程序 15.内存管理程序 16.多系统启动程序 17.CPU 的保护运行模式切换操作 18.扫描病毒算法模拟 19.木马扫描算法 20.硬盘碎片清理程序 21.程序卸载工具 22.文件系统 FAT、NTFS、光盘、U 盘分析程序 2
25、3.程序补丁 24.程序插件 25.文件压缩程序 26.文件备份系统 27.文件切割和组合 28.CPU 参数监控程序 29.进程监控工具 30.文件系统搜索 31.系统监控软件 32.计算机看门狗 33.文件同步软件 34.个人信息同步软件 35.DLL 文件创建和安装 36.小型操作系统编写 37.虚拟光驱软件 38.网络端口监测 39.内存管理页面置换算法 附录 3:课程设计封皮 8 仲恺农业工程学仛 课程设计报告 课程名称:操作系统课程名称:操作系统课程名称:操作系统课程名称:操作系统 实验题目:实验题目:实验题目:实验题目:TCP/IPTCP/IPTCP/IPTCP/IP 编程编程编
26、程编程-网络聊天网络聊天网络聊天网络聊天 院院院院 系:系:系:系:计算机科学与工程学院计算机科学与工程学院计算机科学与工程学院计算机科学与工程学院 班班班班 级:级:级:级:2004 2004 2004 2004 级级级级 04 04 04 042 2 2 2 班班班班 姓姓姓姓 名:名:名:名:张幸平张幸平张幸平张幸平 学学学学 号:号:号:号:200410714216 200410714216 200410714216 200410714216 二二二二一一一一年年年年七七七七月二日月二日月二日月二日 9 目目目目 录录录录 1 绪论_ 1 1.1 课题内容 _ 1 1.2 依据的操作系
27、统原理 _ 1 2 需求分析_ 1 3 系统设计_ 1 3.1 系统框架 _ 1 3.2 各模块的基本算法描述 _ 2 3.2.1 动态优先级基本算法_ 2 3.2.2 时间片轮转基本算法_ 2 3.2.3 短作业优先基本算法_ 2 4 系统实现_ 3 4.1 数据结构 _ 3 4.2 算法思想 _ 3 4.3 流程图描述 _ 4 4.4 特色代码分析 _ 4 5 系统测试_ 6 5.1 系统主界面 _ 6 5.2 子系统功能测试 _ 6 5.2.1 子系统的进入方式_ 6 5.2.2 进程数量和名称的输入_ 6 5.2.3 进程调度的演示过程_ 7 6 课程设计总结_ 8 7 参考文献_ 9
28、 1 1 绪论 1.1 课题内容 本设计主要是用 C 语言编写,设计一个模拟处理机调度算法,演示处理机时间片轮转法,短作业优先算法,动态优先级算法的实现。1.2 依据的操作系统原理 处理机调度的主要目的就是为了分配处理机。在计算机系统中,可能有很多批处理作业同时存放在磁盘的后备作业队列中,或者有很多终端与主机相连,交互型作业不断地进入系统,这样主存和处理及等资源便供不应求。按照何种原则挑选批处理作业进入主存运行、能否继续接纳分时用户、如何在进程之间分配处理器资源,无疑是操作系统进行资源管理所要面对的重要问题,由处理器调度完成涉及处理器调度和资源分配的工作。2 需求分析 该设计主要达到使用界面进
29、入处理机调度算法选择的主界面,然后通过输入不同的提示字符,选择不同的调度算法;实现输入处理机调度用的进程数量和相应的进程名称,根据不同的处理调度算法思想,对输入的进程实现调度处理。所以需要在程序里面设置时间片轮转法,短作业优先算法,动态优先级算法三个主要的功能模块,分别实现对进程的调度处理。3 系统设计 3.1 系统框架 这个模拟处理机调度算法主要由动态优先级算法,时间片轮转法,短作业优先算法功能模块组合而成,其整体框架主要由一个主函数中的主界面控制实现。2 3.2 各模块的基本算法描述 3.2.1 动态优先级基本算法 动态优先权是指在创建进程时所赋予的优先权,可以随进程的推进或随其等待时间的
30、增加而改变的,以便获得更好的调度性能。例如,我们可以规定,在就绪队列中的进程,随其等待时间的增长,其优先权以速率 a提高。若所有的进程都具有相同的优先权初值,则显然是最先进入就绪队列的进程,将因其动态优先权变得最高而优先获得处理机,此即 FCFS 算法。3.2.2 时间片轮转基本算法 时间片轮转法中,系统将所有的就绪进程按先来先服务的原则,排成一个队列,每次调度时,把 CPU 分配给队首进程,并令其执行一个时间片。时间片的大小从几毫秒到几百毫秒。当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新
31、的队首进程,同时也让它执行一个时间片。这样就可以保证就绪队列中的所有进程,在一个给定的时间内,均能获得一时间片的处理机执行时间。3.2.3 短作业优先基本算法 最短作业优先算法以进入系统的作业所要求的 CPU 运行时间的长短为标准,总是选取预计计算时间最短的作业投入运行。这是一种非剥夺式调度算法,能够克服 FCFS 算法偏爱长作业的缺点,易于实现,但执行效率也不高。SJF 算法的主要弱点:一是要预先知道作业所需要的 CPU 运行时间,很难精确估算,如果估值过低,系统可能提前终止此作业;二是忽视作业的等待时间,由于系统不断地接受新作业,作业调度程序总是选择计算时间短的作业投入运行,因此,进入系统
32、时间早,但计算时间长的作业的等待时间会过长,出现饥饿现象:三是尽管能克服对长作业的偏爱,但由于缺少剥夺机制,对于分时、实时处理仍然不理想。3 4 系统实现 4.1 数据结构 调度程序每次把 CPU 分配给就绪队列首进程使用一个时间片,就绪队列中的每个进程轮流地运行一个时间片。当这个时间片结束时,强迫一个进程让出处理器,让它排列到就绪队列的尾部,等候下一轮调度 4.2 算法思想 在程序中声明几个变量:name(进程标识符)、round(进程时间轮转时间片)、cputime(进程占用 CPU 时间)、needtime(进程到完成还需要的时间)、count(计数器)、state(进程的状态)在主界面
33、中选择 R 进入时间片轮转算法,输入进程个数、进程名称、时间片大小等数据后,系统将所有的就绪进程按先来先服务的原则,排成一个队列,所有进程处于等待状态。调度程序每次把 CPU 分配给就绪队列首进程使用一个时间片。当进程处于运行队列中,其状态为 R(运行状态),每运行一毫秒,count 会自动加一,当 count等于 round 时,时间片用完,count 自动清零,该进程被强迫让出处理器,排到就绪队列的尾部,其状态变为 W(等待状态),处理器处理下一个进程。重复以上过程,直到进程运行完毕,退出队列,其状态变为 F(完成状态)。4 4.3 流程图描述 开始输入进程数、进程名以及时间片大小进入就绪
34、队列进程在队首?进入运行队列needtime=0?count=round?结束YNYNYN 图 1.系统流程图 4.4 特色代码分析/*时间片轮转调度算法*/void create2(char alg)PCB*p;int i,roundtime;char na10;ready=NULL;srand(int)time(0);finish=NULL;run=NULL;5 printf(Enter name of round process and round timen);for(i=1;iname,na);p-runtime=0;p-needtime=1+(int)(10.0*rand()/(R
35、AND_MAX+1.0);p-count=0;p-state=w;p-round=roundtime;if(ready!=NULL)insert2(p);else p-next=ready;ready=p;tail=p;clrscr();printf(output of roundn);printf(*n);prt(alg);run=ready;ready=ready-next;run-state=r;/*在主函数添加的代码*/if(algo=R|algo=r)create2(algo);/*时间片轮转*/roundrun(algo);6 5 系统测试 5.1 系统主界面 图 2 系统主界面
36、由于使用 C 语言编写程序,所以界面相对比较简单。在主界面中有三个选择,P 为优先数算法、R 为时间片轮转算法、S 为最短作业优先算法。选择不同的算法将进入该算法所对应的子系统 5.2 子系统功能测试 5.2.1 子系统的进入方式 图 3 子系统选择 因为在主程序中已使用了一个函数来自动将输入的小写字母变换为大写字母,所以无论输入的是 R 还是 r,都能被系统所识别。5.2.2 进程数量和名称的输入 输入 3 个进程,分别是:a(时间片为 2)、b(时间片为 3)、c(时间片为 4)7 图 4 创建进程 5.2.3 进程调度的演示过程 所有进程进入就绪队列:图 5 就绪队列 开始进行处理器高度
37、:图 6 运行队列 8 图 7 运行队列 所有进程执行完毕:图 8 执行队列 6 课程设计总结 整个程序用到三种处理机调度算法:动态优先数算法、时间片轮转算法、短作业优先算法,我负责的是时间片轮转算法这一模块。对于时间片轮转算法,最关键就是时间片的选取。如果时间片取值太小,将导致大多数进程/线程都不可能在一个时间片内运行完毕,就会频繁切换,开销显著增大,所以,从系统效率的角度来看,时间片取得大一点好;另一方面,时间片的长度较大,那么,随着就绪队列中进程/线程数目的增加,轮转一次所耗费的总时间加长,即对每个进程/线程的响应速度均放慢,甚至时间片大到让进程/线程足以完成其所有任务,RR 调度算法便退化成 FCFS 算法。在程序设计之初,由于进程所需时间是由系统自动产生随机数的,又没有对随机数做出限制,所以有时产生的进程时间太大,有时太小,这样就很难选取合适的时间片了。而且刚开始是在程序里面设置时间片大小,后来经过老师的指点,发觉9 这样真的很不科学。所以就设置成时间片大小由用户手动输入,而且再对随机数的产生加上个限制条件,使产生的随机数在 10 以内。这样一来,整个程序的使用起来比较科学化、人性化。7 参考文献 1.孙钟秀等编著.操作系统教程M.北京:高等教育出版社.2008.2.张丽芬,刘利雄,王全玉编著.操作系统实验教程M.北京:清华大学出版社.2006.
限制150内