收藏 分销(赏)

操作系统专业课程设计进程管理.doc

上传人:天**** 文档编号:2797262 上传时间:2024-06-06 格式:DOC 页数:19 大小:214.54KB 下载积分:8 金币
下载 相关 举报
操作系统专业课程设计进程管理.doc_第1页
第1页 / 共19页
操作系统专业课程设计进程管理.doc_第2页
第2页 / 共19页


点击查看更多>>
资源描述
操作系统 课程设计报告 题 目:进程管理 专 业: 班 级: 姓 名: 学 号: 指引教师: 年 月 日 《操作系统》课程设计任务书 一、课程设计题目(任选一种题目) 1.模仿进程管理 2.模仿解决机调度 3.模仿存储器管理 4.模仿文献系统 5.模仿磁盘调度 二、设计目和规定 1.设计目 《操作系统原理》课程设计是计算机科学与技术专业实践性环节之一,是学习完《操作系统原理》课程后进行一次较全面综合练习。其目在于加深对操作系统理论、办法和基本知识理解,掌握操作系统构造、实现机理和各种典型算法,系统地理解操作系统设计和实现思路,培养学生系统设计能力,并理解操作系统发展动向和趋势。 2.基本规定: (1)选取课程设计题目中一种课题,独立完毕。 (2)良好沟通和合伙能力 (3)充分运用前序课所学软件工程、程序设计、数据构造等有关知识 (4)充分运用调试和排错技术 (5)简朴测试驱动模块和桩模块编写 (6)查阅有关资料,自学详细课题中涉及到新知识。 (7)课题完毕后必要按规定提交课程设计报告,格式规范,内容详实。 三、设计内容及环节 1.依照设计题目规定,充分地分析和理解问题,明确问题规定做什么。 2.依照实现功能,划分出合理模块,明确模块间关系。 3.编程实现所设计模块。 4.程序调试与测试。采用自底向上,分模块进行,即先调试低层函数。可以纯熟掌握调试工具各种功能,设计测试数据拟定疑点,通过修改程序来证明它或绕过它。调试对的后,认真整顿源程序及其注释,形成格式和风格良好源程序清单和成果; 5.成果分析。程序运营成果涉及对的输入及其输出成果和具有错误输入及其输出成果。 6.编写课程设计报告; 设计报告和实验报告规定:A4纸和实验报告册,详细设计某些重要论述本人工作内容 设计报告格式: (1)封面(题目、指引教师、专业、班级、姓名、学号) (2)设计任务书 (3)目录 (4)需求分析 (5)概要设计 (6)详细设计(含重要代码) (7)调试分析、测试成果 (8)顾客使用阐明 (9)附录或参照资料 四、进度安排 设计在第四学期第1-18周(共18学时)进行,时间安排如下: 序号 内 容 时间(学时) 1 系统分析 2 2 设计 4 3 编码、测试 10 4 验收 2 共计 18 五、成绩评估办法 成绩分为优(A)、良(B)、中(C)、及格(D)、不及格(E)五个级别。其中设计体现占30%,验收40%,设计报告占30%。 1.设计体现:教师可根据学生使用实验环境能力、观测和分析实验现象能力、实验成果和数据对的性以及学生课堂纪律、实验态度、保持实验室卫生等方面体现进行综合考核。 2.验收:规定学生演示设计程序,解说设计思路、办法、解决重要问题,教师依照详细状况向每个学生提问2至3个问题。 3.设计报告:学生设计后应准时完毕设计报告和实验报告。规定:内容充实、写作规范、项目填写对的完整、书面整洁等。 目录 一、 需求分析………………………………………………6 1.进一步理解进程基本概念 …………………………6 2.加强进程管理设计及算法 …………………………6 3.观测和管理进程 ………………………………………6 二、 概要设计………………………………………………6 1.实验原理………………………………………………6 2.数据构造………………………………………………6 3. 算法描述………………………………………………6 4. 算法流程图……………………………………………7 三、 详细设计………………………………………………8 1.源程序代码……………………………………………8 四、 调试分析及测试成果 ………………………………15 五、 顾客及用阐明 ………………………………………17 六、 附录或参照资料 ……………………………………17 一、需求分析 1.进一步理解进程基本概念。 2.加强进程管理中重要数据构造设计及进程调度算法。 3.观测和管理进程——系统在运营过程中可显示或打印各进程状态及关于参数变化状况。 二、概要设计 1.实验原理 定义PCB数据构造,用链表形式管理进程,采用多级反馈队列调度算法模仿进程控制,最后完毕有创立、撤销、调度、阻塞、唤醒进程等功能。 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、结束进程——管理系统撤销所选进程; 2-5、结束程序。 4. 算法流程图 输入进程信息 执行进程 将阻塞队列进程调入就绪队列 封锁进程 结束进程 退出操作 输入要进行操作功能选项 1 2 3 4 5 进行所选进程操作 选1且进程正在执行 Y 操作不能执行 选取# N N N 选取5 Y Y 开始 结束 三、详细设计 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 &item); 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,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"; } queue::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;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 e[100]; cout<<"输入进程名:"<<" "; cin>>e[i]; if(e[i]!=r) ready.enqueue(e[i]); else break; } A:cout<<"\n [------------请(学号)顾客(姓名)选取操作------------]\n"; cout<<"\n [1、执行进程……2、将阻塞队列中进程调入就绪队列………]\n"; cout<<"\n [3、封锁进程…………………4、结束进程 …………………]\n"; cout<<"\n [5、退出程序………………………………………………… ]\n选项: "; cin>>n; if(n==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); goto L; } else goto L; } } else if(n==2) { if(!clog.isempty()) { a=clog.dequeue (); if(a!=r) 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) { cout<<"\n请输入要结束进程名: "; cin>>a; if(execute.find (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);} cout<<"\n结束进程成功!\n"<<endl; goto L; } else cout<<"没有此进程"<<endl; goto L; L: if(n==1||n==2||n==3||n==4) { cout<<"执行队列"<<endl; execute.display(); cout<<endl; cout<<"就绪队列"<<endl; ready.display();cout<<endl; cout<<"阻塞队列"<<endl; clog.display();cout<<endl; goto A; } else if(n==5); else { cout<<"\n你输入错误!\n"; goto A; } } E:;} 四、调试分析及测试成果 五、顾客使用阐明 顾客通过VC++ 即可运营改程序。需阐明是主函数是实现进程管理入口,在入口处需输入进程名称,然后输入进程状态选项,如果完毕后,则通过相应调度算法进行进程机调度,同步也将成果显示在屏幕上。 本次实验通过模仿各种进程同步运营,实现了进程就绪,运营,阻塞三个状态转换,并可以依照顾客规定变化进程状态。 六、附录及参照资料 [1]王红 ,《操作系统实训》,中华人民共和国水利水电出版社, [2]张红光,《UNIX操作系统实验教程》,机械工程出版社, [3]史美林,《操作系统教程》,清华大学, [4]殷兆麟,《计算机操作系统》,北京大学, [5]严蔚敏,《数据构造(C语言版)》,清华大学,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服