《2022年操作系统课程设计 2》由会员分享,可在线阅读,更多相关《2022年操作系统课程设计 2(17页珍藏版)》请在金锄头文库上搜索。
1、1 / 17计算机科学技术学院操作系统原理课程设计报告题目:进程管理系统专业:班级:姓名:学号:指导老师:年月日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 17 页 - - - - - - - - - 2 / 17操作系统原理课程设计任务书一、课程设计题目(任选一个题目)1. 模拟进程管理2. 模拟处理机调度3. 模拟存储器管理4. 模拟文件系统5. 模拟磁盘调度二、 设计目的和要求1.设计目的操作系统原理 课程设计是网络工程专业实践性环节之一,是学习完操作系统原理
2、课程后进行的一次较全面的综合练习。其目的在于加深对操作系统的理论、方法和基础知识的理解, 掌握操作系统结构、 实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,培养学生的系统设计能力, 并了解操作系统的发展动向和趋势。2.基本要求:(1) 选择课程设计题目中的一个课题,独立完成。(2) 良好的沟通和合作能力(3) 充分运用前序课所学的软件工程、程序设计、数据结构等相关知识(4) 充分运用调试和排错技术(5) 简单测试驱动模块和桩模块的编写(6) 查阅相关资料,自学具体课题中涉及到的新知识。(7) 课题完成后必须按要求提交课程设计报告,格式规范,内容详实。三、设计内容及步骤1.根据设计
3、题目的要求,充分地分析和理解问题,明确问题要求做什么。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 17 页 - - - - - - - - - 3 / 172.根据实现的功能,划分出合理的模块,明确模块间的关系。3.编程实现所设计的模块。4.程序调试与测试。采用自底向上,分模块进行,即先调试低层函数。能够熟练掌握调试工具的各种功能, 设计测试数据确定疑点, 通过修改程序来证实它或绕过它。 调试正确后, 认真整理源程序及其注释, 形成格式和风格良好的源程序清单和结果;5
4、.结果分析。 程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果。6.编写课程设计报告;设计报告要求: A4 纸,详细设计部分主要叙述本人的工作内容设计报告的格式:(1) 封面(题目、指导教师、专业、班级、姓名、学号)(2) 设计任务书(3) 目录(4) 需求分析(5) 概要设计(6) 详细设计(含主要代码)(7) 调试分析、测试结果(8) 用户使用说明(9) 附录或参考资料四、进度安排设计在学期的第 15、16周进行,时间安排如下:序号内容时间(天)1 系统分析1 2 设计3 3 编码、测试5 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - -
5、- - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 17 页 - - - - - - - - - 4 / 174 验收1 合计10 五、成绩评定办法成绩分为优( A) 、良( B) 、中( C) 、及格( D ) 、不及格( E)五个等级。其中设计表现占 30% ,验收 40% ,设计报告占 30% 。1.设计表现:教师可依据学生使用实验环境的能力、观察和分析实验现象的能力、实验结果和数据的正确性以及学生的课堂纪律、实验态度、 保持实验室卫生等方面的表现进行综合考核。2.验收:要求学生演示设计的程序, 讲解设计思路、 方法、解决的主要问题,教师根据具体情况
6、向每个学生提问2 至 3 个问题。3.设计报告:学生设计后应按时完成设计报告。要求:内容充实、 写作规范、项目填写正确完整、书面整洁等。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 17 页 - - - - - - - - - 5 / 17目录一、需求分析6 1. 进一步理解进程的基本概念6 2. 加强进程管理的设计及算法6 3. 观察和管理进程6 二、概要设计6 1实验原理6 2数据结构6 3. 算法描述6 4. 算法流程图7 三、详细设计8 1源程序代码8 四、调试
7、分析及测试结果15 五、用户及用说明17 六、附录或参考资料17 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 17 页 - - - - - - - - - 6 / 17一、需求分析1. 进一步理解进程的基本概念。2. 加强进程管理中主要数据结构的设计及进程调度算法。3. 观察和管理进程系统在运行过程中可显示或打印各进程的状态及有关参数的变化情况。二、概要设计1实验原理定义 PCB的数据结构, 用链表的形式管理进程, 采用多级反馈队列调度的算法模拟进程的控制,最终完成有
8、创建、撤销、调度、阻塞、唤醒进程等功能。2数据结构类:class queuenode class queue 函数:void enqueue( char &item); char dequeue(); void del(char item); void display(); int find(char item); int isempty() 3. 算法描述1-1、创建进程,根据进程的顺序依次放入就绪队列。2-1、执行进程管理系统将就绪队列中的第一个进程调入运行队列;2-2、将阻塞队列中进程调入就绪队列;2-3、封锁进程管理系统将就绪队列中的第一个进程调入阻塞队列;2-4、结束进程管理系统撤销
9、所选进程;2-5、结束程序。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 17 页 - - - - - - - - - 7 / 174. 算法流程图输入进程信息执行进程将 阻 塞队 列 的进 程 调入 就 绪队列封锁进程结束进程退出操作输 入 要 进 行 操作的功能选项1 2 3 4 5 进行所选进程操作选 1 且进程正在执行Y 操 作 不 能 执行选择 # N N N 选择 5 Y Y 开始结束名师资料总结 - - -精品资料欢迎下载 - - - - - - - -
10、- - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 17 页 - - - - - - - - - 8 / 17三、详细设计1源程序代码#include class queuenode friend class queue; private: char data; queuenode * link; queuenode (char d=0,queuenode * l=NULL): data(d),link(l) ; class queue public: queue():rear(NULL),front(NULL); queue(); void en
11、queue( char &item); char dequeue(); void del(char item); void display(); int find(char item); int isempty()return front=NULL; private: queuenode *front,*rear; ; queue:queue() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 17 页 - - - - - - - - - 9 / 17queuenode
12、* p; while(front!=NULL) p=front;front=front-link;delete p; void queue:enqueue(char &item) if(front=NULL)front=rear=new queuenode(item,NULL); else rear=rear-link=new queuenode(item,NULL); char queue:dequeue() queuenode *p=front; char f=p-data;front=front-link; delete p; return f; void queue:display()
13、 queuenode *p; p=front; while(p!=NULL) coutdata; p=p-link; coutdata) return 1;break; else w=w-link; goto M; if(w=NULL) return 0; void queue:del( char item) queuenode *q,*b; q=front; while(q-data!=item) b=q; q=q-link; if(q=front) front=front-link; delete q; else if(q=rear) rear=b;rear-link=NULL;delet
14、e q; else b-link=q-link; delete q; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 17 页 - - - - - - - - - 11 / 17void main() int n; char a; coutn-操作系统之进程管理模拟系统(先来先服务算法)-nendl; queue execute,ready,clog; /执行,就绪,阻塞coutn-请用户输入进程名及其到达cpu 的顺序 (结束进程数请输入 x)-nendl; char
15、 r; r=x; for(int i=0;i+) char e100; cout 输入进程名 :ei; if(ei!=r) ready.enqueue(ei); else break; A: coutn -请 (学号)用户 (姓名) 选择操作 -n; coutn 1 、执行进程 2、将阻塞队列中进程调入就绪队列n; coutn 3 、封锁进程4、结束进程 n; coutn; if(n=1) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 17 页 - - - - - -
16、 - - - 12 / 17 if(!execute.isempty () cout已经有进程在执行! , 此操作不能执行 n; char w; coutendl; cout如果要继续请输入 #;如果要退出按其它任意键endl; coutw; if(w=#)goto L; else goto E; else if(!ready.isempty() a=ready.dequeue(); if(a!=r) execute.enqueue(a); goto L; else goto L; else if(n=2) if(!clog.isempty() a=clog.dequeue (); if(a!
17、=r) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 17 页 - - - - - - - - - 13 / 17 ready.enqueue(a); goto L; else goto L; else if(n=3) if(!execute.isempty() a=execute.dequeue (); if(a!=r) clog.enqueue(a); goto L; else goto L; else if(n=4) couta; if(execute.find
18、 (a)|ready.find (a)|clog.find (a) if(execute.find(a) execute.del(a); else if(ready.find(a) ready.del(a); if(clog.find(a) clog.del(a); coutn结束进程成功! nendl; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 17 页 - - - - - - - - - 14 / 17 goto L; else cout没有此进程 endl;
19、 goto L; L: if(n=1|n=2|n=3|n=4) cout执行队列 endl; execute.display(); coutendl; cout就绪队列 endl; ready.display();coutendl; cout阻塞队列 endl; clog.display();coutendl; goto A; else if(n=5); else coutn你的输入错误! n; goto A; E:; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 1
20、7 页 - - - - - - - - - 15 / 17四、调试分析及测试结果名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 17 页 - - - - - - - - - 16 / 17名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 17 页 - - - - - - - - - 17 / 17五、用户使用说明用户通过VC+ 即可运行改程序。需说
21、明的是主函数是实现进程管理的入口,在入口处需输入进程名称,然后输入进程的状态选项,如果完毕后,则通过相应的调度算法进行进程机的调度,同时也将结果显示在屏幕上。本次实验通过模拟多个进程的同步运行,实现了进程就绪,运行,阻塞三个状态的转换,并可以根据用户要求改变进程的状态。六、附录及参考资料1王红 , 操作系统实训,中国水利水电出版社,2005 2张红光, UNIX 操作系统试验教程,机械工程出版社, 2006 3史美林, 操作系统教程,清华大学, 2006 4殷兆麟, 计算机操作系统,北京大学, 2007 5严蔚敏, 数据结构( C 语言版) ,清华大学, 2007 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 17 页 - - - - - - - - -