ImageVerifierCode 换一换
格式:DOC , 页数:15 ,大小:162.28KB ,
资源ID:1011605      下载积分:10 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 微信支付   
验证码:   换一换

加入VIP,免费下载资源
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.wodocx.com/d-1011605.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统基于F和SF的进程管理系统.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(发送邮件至2622162128@qq.com或直接QQ联系客服),我们立即给予删除!

操作系统基于F和SF的进程管理系统.doc

1、第一章 概述1.1选定的题目基于FCFS和SPF的进程管理系统的设计1.2课程设计意义 课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让同学们对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。计算机操作系统一门重要的专业课,是开发操作系统和软件系统的理论和应用基础。1.3课程设计的目的本设计的目的是:加深对进程概念及进程管理各部分内容的理解;熟悉FCFS和SPF两种进程调度算法。1.4课程设计的要求(1)设计一个完整的进程调度系统,系统中至少包括5个进程;(2)定义PCB;(3)采用链表管理就绪队列;(

2、4)结果要能够显示出进程的调度序列及进入系统的时间、运行时间等必要信息。第二章 系统分析本系统实现的功能有:在OS中调度的实质一种资源分配,因此调度算法是指:根据系统的资源分配策略所规定的资源分配算法。先来先服务调度算法是一种最简单的调度算法,在进程调度中采用FCFS算法时,每次调度是从就绪队列中选择一个最先进入该队列的的进程,位置分配处理机,使之投入运行。该进程一直运行到完成或发生某件事而阻塞后才放弃处理机。短进程优先调度算法,是指对短进程进行优先调度的算法。段进程优先调度算法从就绪队列中选出一个估计运行时间最短的进程,将处理及分配给它,使他执行并一直执行到完成,或发生某事件而被阻塞放弃处理

3、及时再度重新利用。第三章 系统设计3.1 功能模块设计 进程创建模块 此模块用来创建进程实体,设置进程的到达时间、服务时间、开始时间。 就绪队列模块 此模块用链式队列来实现,用来存放已经创建的进程,为下面的两个模块来服务。 FIFO模块 此模块是先进先出算法的实现模块,此模块遍历模块2中的就绪队列来找到到达时间的从小到的大的序列。 SPF模块 此模块是短进程优先调度算法的实现模块,此模块遍历2中的就绪队列来找到服务时间从小打到的序列。3.2 PCB创建模块typedef struct PCB char name50; /*进程名字*/ int flag; long size; int arri

4、ve; /到达时间 int start; /开始时间 int server; /服务时间 struct PCB *next; /*链指针*/PCB,*PCBNode;结束选择调度算法(P/R)输入进程数量输入进程名称和时间输出优先级按任意键输出结果开始结束选择调度算法(P/R)输入进程数量输入进程名称和时间输出优先级按任意键输出结果开始结束选择调度算法(P/R)输入进程数量输入进程名称时间输出优先级按任意键输出结果开始第四章 程序设计流程图开始创建进程输入进程名称、大小、创建时间、服务时间就绪队列查看选择调度算法(FCFS/SPF)输出结果结束第五章 源程序清单#include struct.

5、h#include stdio.h#include stdlib.h#include string.h#include #include iomanip#define null 0#define OVERFLOW -2#define ERROR 0#include iostreamusing namespace std;class PCBQueuepublic: PCB *front;public: PCB *rear;/int mutex;PCBQueue() front=rear=(PCB*)malloc(sizeof(PCB); if (!front) exit(OVERFLOW); e

6、lse strcpy(front-name,nullqueue); front-flag=-1;front-size=0;front-server=0;front-arrive=-1;front-start=0;front-next=null; bool inqueue(PCBNode &p)p-next=null; rear-next=p; rear=p;return true;bool outqueue(PCBNode &p)if(front=rear) return false;p=front-next;front-next=p-next;if (rear=p) rear=front;r

7、eturn true;bool isnull()if (front=rear) return true;elsereturn false;int number() int i=0;PCBNode p=front;while(p!=rear) p=p-next; i+;return i;void traverse()if(isnull()cout就绪队列为空。endl;elsecout就绪进程数为:number()next;for(int i=0;inumber();i+)cout进程名字:namet进程标识符:flagnext;/bool tellprocessmessage(int flag

8、)PCBNode p;p=findprocess(flag);if(p)cout进程 名字:nameendl;cout进程标识符:flagendl;cout进程 大小:sizeendl;cout进程创建时间:arriveendl;cout进程服务时间:serverflag!=flag) p=p-next;elsebreak; if(!p) cout没有此进程。endl; return p;PCBQueue()if(front)free(front);if(rear)free(rear);typedef struct PCB char name50; /*进程名字*/ int flag; lon

9、g size; int arrive; /到达时间 int start; /开始时间 int server; /服务时间 struct PCB *next; /*链指针*/PCB,*PCBNode;#define default_memorysize 20*1024 /默认内存大小MB#define default_blocksize 1024 /默认物理块大小KB#define default_blockmaxnumber 2000#define fangcunxuliesize 10#include iostream#include process.h#include #include #

10、include windows.husing namespace std;#define error 0class syspublic: int n; int time; PCBQueue ready; /就绪队列 PCBNode ExecuteProcess;sys() n=0; time=0;ExecuteProcess=null; PCBNode createprocess()PCBNode p;p=new PCB; cout请输入进程名字:pname; strcpy(p-name,pname); p-flag=+n; cout请输入进程的大小:psize; p-size=psize;

11、cout输入创建时间:p-arrive; if(p-arrive0) return null; cout输入服务时间:p-server; cout进程创建成功。endl;return p;void FIFO() time=0;cout-endl;coutsetiosflags(ios:left);coutsetw(4)序号setw(10)进程名setw(10)进程标识setw(10)到达时间setw(10)开始时间setw(10)服务时间setw(10)周转时间setw(10)带权周转时间endl;int j=0;while(!ready.isnull() PCB *p,*q; ready.o

12、utqueue(p); for(int i=0;iarrivearrive) ready.inqueue(q); if(p-arriveq-arrive) ready.inqueue(p);p=q; ExecuteProcess=p;while(ExecuteProcess-arrivetime) time+;ExecuteProcess-start=time;coutsetw(4)jsetw(10)namesetw(10)flagsetw(10)arrivesetw(10)startsetw(10)serversetw(10)start-ExecuteProcess-arrive+Execu

13、teProcess-serversetw(10)start-ExecuteProcess-arrive+ExecuteProcess-server)/ExecuteProcess-server)server;j+;cout-endl;void SPF() time=0;cout-endl;coutsetiosflags(ios:left);coutsetw(4)序号setw(10)进程setw(10)进程标识setw(10)到达时间setw(10)开始时间setw(10)服务时间setw(10)周转时间setw(10)带权周转时间endl;int j=0;while(!ready.isnull

14、() PCB *p,*q; ready.outqueue(p); for(int i=0;iarrivearrive) ready.inqueue(q); if(p-arrive=q-arrive) if(p-serverserver) ready.inqueue(q);else ready.inqueue(p);p=q; if(p-arriveq-arrive) ready.inqueue(p);p=q; ExecuteProcess=p;while(ExecuteProcess-arrivetime) time+; ExecuteProcess-start=time;coutsetw(4)

15、jsetw(10)namesetw(10)flagsetw(10)arrivesetw(10)startsetw(10)serversetw(10)start-ExecuteProcess-arrive+ExecuteProcess-serversetw(10)start-ExecuteProcess-arrive+ExecuteProcess-server)/ExecuteProcess-server)server;j+;cout-endl;sys() if(ExecuteProcess)free(ExecuteProcess);#include Sys_tem.hvoid disply1(

16、)system(color 0A);cout基本分页存储管理系统endl;cout 1.创建进程endl;cout 2.进程信息endl;cout 3.就绪队列查看endl;cout 4.FIFOendl;cout 5.SPFendl;cout 6.示例endl;cout 7.退出endl;coutendl;void maindisplay(sys &System)start:system(cls); disply1();coutendl;int check;cincheck;switch(check)case 1: system(cls);PCBNode pp=System.createpr

17、ocess();if(pp)System.ready.inqueue(pp);system(pause);goto start;case 2:system(cls);coutfg;System.ready.tellprocessmessage(fg);system(pause);goto start;case 3:system(cls);System.ready.traverse();system(pause);goto start;case 4:system(cls);System.FIFO();system(pause);goto start;case 5:system(cls);if(!

18、System.ready.isnull()System.SPF();system(pause);goto start; case 6:system(cls);system(pause);goto start;case 7:break;default :cout输入错误,请重新输入。endl;system(pause);goto start;#include display.h#include mywindow.hint main() sys System; maindisplay(System);exit(-2);第六章 调试过程中的问题及系统测试情况6.1操作界面测试结果如下图:6.2创建进

19、程页面如下图:6.3进程信息查看界面如下6.4就绪队列查看6.5FCFS调度结果如下6.6SPF调度结果如下第七章 结束语通过紧张而又充实的一周的操作系统课程设计,使我再次回顾了操作系统学习中的相关内容,对设计和调试相应的程序的基础步骤和方法有了更深的认识。首先我谈一下我对本设计的看法,在做这项课程设计的过程中,通过思考摸索与查阅资料相结合,并与同组的其他同学讨论,相互学习,熟练的运用C语言,使我比较成功的设计了这个系统,一方面通过不断的思考,查阅资料,不断的发现错误并纠正,反复的完善自己的设计,基本上完成了设计的要求,在一次次的动手与动脑中,学会了把课本上的知识成功的运用到实际应用中,巩固了自己关于操作系统的知识。另一方面,我在设计与查阅资料中,发现了操作系统这门课的非常强大的功能,及其广泛的应用性,并深深的体会到了自己设计出一个成功的系统的乐趣,并且积累了编写程序的经验,受益匪浅 由于第一次接触比较大的系统程序,原理上比较好理解,然而在具体语言的实现上比较困难。通过这次课程设计,加深了我对操作系统这门课程的理解,尤其是进程的管理。虽然我的这个进程管理系统功能很少,模拟的真实性不高,但毕竟是这几天的劳动成果。在课程设计的过程中,问题挺多的,但是在同学的帮助下一一克服了,在此对他们表示感谢。 .15

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922