操作系统课程设计进程管理.docx

上传人:scccc 文档编号:12978999 上传时间:2021-12-09 格式:DOCX 页数:18 大小:86.77KB
返回 下载 相关 举报
操作系统课程设计进程管理.docx_第1页
第1页 / 共18页
操作系统课程设计进程管理.docx_第2页
第2页 / 共18页
操作系统课程设计进程管理.docx_第3页
第3页 / 共18页
操作系统课程设计进程管理.docx_第4页
第4页 / 共18页
操作系统课程设计进程管理.docx_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《操作系统课程设计进程管理.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计进程管理.docx(18页珍藏版)》请在三一文库上搜索。

1、操作系统课程设计报告题 目:专 业:班 级:姓 名:学 号:指导老师:年 月 日12 / 18操作系统课程设计任务书、课程设计题目(任选一个题目)1. 模拟进程管理2. 模拟处理机调度3. 模拟存储器管理4. 模拟文件系统5. 模拟磁盘调度二、设计目的和要求1. 设计目的操作系统原理课程设计是计算机科学与技术专业实践性环节之一,是学 习完操作系统原理课程后进行的一次较全面的综合练习。 其目的在丁加深对 操作系统的理论、方法和基础知识的理解,掌握操作系统结构、实现机理和各种 典型算法,系统地了解操作系统的设计和实现思路,培养学生的系统设计能力, 并了解操作系统的发展动向和趋势。2. 基本要求:(

2、1)选择课程设计题目中的一个课题,独立完成。良好的沟通和合作能力(3) 充分运用前序课所学的软件工程、程序设计、数据结构等相关知识(4) 充分运用调试和排错技术(5) 简单测试驱动模块和桩模块的编写(6) 查阅相关资料,自学具体课题中涉及到的新知识。(7) 课题完成后必须按要求提交课程设计报告,格式规范,内容详实。三、设计内容及步骤1. 根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么。2. 根据实现的功能,划分出合理的模块,明确模块间的关系。3. 编程实现所设计的模块。4. 程序调试与测试。采用自底向上,分模块进行,即先调试低层函数。能够熟练掌握调试工具的各种功能,设计测试数据确

3、定疑点,通过修改程序来证实它 或绕过它。调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程 序活单和结果;5. 结果分析。程序运行结果包括正确的输入及其输出结果和含有错误的输入 及其输出结果。6. 编写课程设计报告;设计报告和实验报告要求:A4纸和实验报告册,详细设计部分主要叙述本 人的工作内容设计报告的格式:(1) 封面(题目、指导教师、专业、班级、姓名、学号)(2) 设计任务书(3) 目录(4) 需求分析(5) 概要设计(6) 详细设计(含主要代码)(7) 调试分析、测试结果(8) 用户使用说明(9) 附录或参考资料四、进度安排设计在第四学期的第1-18周(共18课时)进行,时间

4、安排如下:序号内容时间(课时)1系统分析22设计43编码、测试104验收2合计18五、成绩评定办法成绩分为优(A)、良(B)、中(C)、及格(D)、不及格(E)五个等级。其 中设计表现占30%验收40%设计报告占30%1. 设计表现:教师可依据学生使用实验环境的能力、观察和分析实验现象的 能力、实验结果和数据的正确性以及学生的课堂纪律、实验态度、保持实验室卫 生等方面的表现进行综合考核。2. 验收:要求学生演示设计的程序,讲解设计思路、方法、解决的主要问题, 教师根据具体情况向每个学生提问2至3个问题。3. 设计报告:学生设计后应按时完成设计报告和实验报告。要求:内容充实、 写作规范、项目填写

5、正确完整、书面整洁等。目录一、需求分析 61. 进一步理解进程的基本概念 62. 加强进程管理的设计及算法 63. 观察和管理进程 6二、概要设计 61. 实验原理 62. 数据结构 63. 算法描述 64. 算法流程图 7三、详细设计 81.源程序代码 8四、调试分析及测试结果 15五、用户及用说明 17六、附录或参考资料 17一、需求分析1. 进一步理解进程的基本概念。2. 加强进程管理中主要数据结构的设计及进程调度算法。3. 观察和管理进程一一系统在运行过程中可显示或打印各进程的状态及有 关参数的变化情况。二、概要设计1. 实验原理定义PCB的数据结构,用链表的形式管理进程,采用多级反馈

6、队列调度的算 法模拟进程的控制,最终完成有创建、撤销、调度、阻塞、唤醒进程等功能。2. 数据结构类:class queuenodeclass 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、封锁进程一一管理系统将就绪队列中的第

7、一个进程调入阻塞队列;2-4、结束进程一一管理系统撤销所选进程;2-5、结束程序4. 算法流程图三、详细设计1.源程序代码#include<iostream.h>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 enqueue( char &it

8、em);char dequeue();void del(char item);void display();int find(char item);int isempty()(return front=NULL;private:queuenode *front,*rear;queue:queue()(queuenode * p;while(front!=NULL)(p=front;front=front->link;delete p;void queue:enqueue(char &item)(if(front=NULL)front=rear=new queuenode(item

9、,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()(queuenode *p;p=front;while(p!=NULL)(cout<<p->data<<"->"p=p->link;cout<<"NULL"qu

10、eue:find(char item)( queuenode *w;w=front;M:while(w!=NULL)(if(item=w->data)( 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;

11、rear->link=NULL;delete q;else b->link=q->link; delete q; void main()int n;char a;cout<<"n 操作系统之进程管理模拟系统(先来先服务算法)n"<<endl;queue execute,ready,clog; / 执行,就绪,阻塞cout<<"n 请用户输入进程名及其到达 cpu的顺序(结束进程数请输入 x) n"<<endl;char r;r='x'for(int i=0;i+)(char

12、 e100;cout<<"输入进程名:"<<""cin>>ei;if(ei!=r)ready.enqueue(ei);elsebreak;A: cout<<"n 请(学号)用户(姓名)选择操作n"cout<<"n 1、执行进程2、将阻塞队歹0中进程调入就绪队歹U n"cout<<"n 3、封锁进程4、结束进程 n"cout<<"n 5 、退出程序 n选项:"cin>>n;if(n=

13、1)(if(!execute.isempty ()(cout<<"已经有进程在执行!,此操作不能执行n"char w;cout<<endl;cout<<"如果要继续请输入#;如果要退出按其它任意键"<<endl;cout<<" 要选择的操作:"cin>>w;if(w='#')goto L;else goto E;else(if(!ready.isempty()(a=ready.dequeue();if(a!=r)execute.enqueue(a)

14、;goto L;else goto L;else if(n=2)(if(!clog.isempty()(a=clog.dequeue ();if(a!=r)ready.enqueue(a);13 / 18goto 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)(cout<<"n请输入要结束的进程名:"cin>>a;if(execute.find (a

15、)|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);cout<<"n 结束进程成功! n"<<endl;goto L;elsecout<<" 没有此进程"<<endl;goto L;L:if(n=l|n=2|n=3|n=4)(cout<<"执行队歹U "<<en

16、dl;execute.display();cout<<endl;cout<<"就绪队歹U "<<endl;ready.display();cout<<endl;cout<<"阻塞队歹U "<<endl;clog.display();cout<<endl;goto A;elseif(n=5);else(cout<<"n 你的输入错误! n"goto A;E:;四、调试分析及测试结果操作系统之进程管理模拟系统(先来先服务算法)请用户输入进程名及

17、其到达CPU的顺序(结束进程数请输入X i名名名名名名名 T 汗J耳,JITPJpJpJp - Hrfifififififi进 * TA V Ta * Ta V TA ¥ TA V Ta ¥ Ta 入入入入入入入rH!H!nf18 / 18请(学号)用户(姓名)选择操作1E L执行进程2、将阻塞队列中进程调入就绪队列1E乳司锁进程4、结束进程孔退出程序 1选项:1执行队列a->HULL就绪队列板->c->d->e->f->HULL忸塞队列NULL1S (学亏用户姓名J选择操作E L执行进程2,将阻塞队列中进程调入就绪队列3、封锁进程4,结

18、束进程2列L列d-列 .队UL队->队 项行>N绪”塞一尤L FTTI退出程序请(学号)用户(姓名j选择.换作E L执行进程2、将阻塞队列中进程调入就绪队列r 3、封锁进程4、结束进程礼列列2I项行LL绪”E请(学号)用户(姓名)选择操作E L执行进程2.将阻塞队列中进程调入就绪队列E 3、封锁进程4、结束进程t孔退出程序选项:4请输入要结束的进程名,d结束进程成功!执行队列NULL就绪队列b->c->e->£->NULL阻塞队列a->NULLE清(学号)用户(姓名)选择操作JE L执行进程2、将阻塞队列中进程调入就绪队列1i 3,封锁进程4

19、、结束进程I瓦退出程序 1选顼I sPress an9 key to continue_五、用户使用说明用户通过VC+即可运行改程序。需说明的是主函数是实现进程管理的入 口,在入口处需输入进程名称,然后输入进程的状态选项,如果完毕后,则通 过相应的调度算法进行进程机的调度,同时也将结果显示在屏幕上。本次实验通过模拟多个进程的同步运行,实现了进程就绪,运行,阻塞三 个状态的转换,并可以根据用户要求改变进程的状态。六、附录及参考资料1 王红,操作系统实训,中国水利水电出版社,20052 张红光,UNIX操作系统试验教程,机械工程出版社,20063 史美林,操作系统教程,清华大学,20064 殷兆麟,计算机操作系统,北京大学,20075 严蔚敏,数据结构(C语言版),清华大学,2007

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1