Linux操作系统专业课程设计方案报告基于Linux的进程调度模拟程序.docx
《Linux操作系统专业课程设计方案报告基于Linux的进程调度模拟程序.docx》由会员分享,可在线阅读,更多相关《Linux操作系统专业课程设计方案报告基于Linux的进程调度模拟程序.docx(26页珍藏版)》请在咨信网上搜索。
1、河南中医学院linux操作系统课程设计汇报题目:基于Linux进程调度模拟程序所在院系: 信息技术学院 专业年级: 级 计算机科学和技术 完成学生: 180021 郭姗 指导老师: 阮 晓 龙 完成日期: 201X 年 06 月 22 日目 录1. 课程设计题目概述32. 研究内容和目标43. 研究方法54. 研究汇报65. 测试汇报/试验汇报76. 课题研究结论87. 总结91、课程设计题目概述伴随Linux系统逐步推广,它被越来越多计算机用户所了解和应用. Linux是一个多任务操作系统,也就是说,在同一个时间内,能够有多个进程同时实施。假如读者对计算机硬件体系有一定了解话,会知道我们大家
2、常见单CPU计算机实际上在一个时间片断内只能实施一条指令,那么Linux是怎样实现多进程同时实施呢?原来Linux使用了一个称为进程调度(process scheduling)手段,首先,为每个进程指派一定运行时间,这个时间通常很短,短到以毫秒为单位,然后依据某种规则,从众多进程中挑选一个投入运行,其它进程临时等候,当正在运行那个进程时间耗尽,或实施完成退出,或因某种原因暂停,Linux就会重新进行调度,挑选下一个进程投入运行。因为每个进程占用时间片全部很短,在我们使用者角度来看,就仿佛多个进程同时运行一样了。 本文就是对进程调度进行研究、试验。本文首先对Linux系统进行了简明介绍, 然后介
3、绍了进程管理相关理论知识。其次,又介绍最高优先数优先调度算法(即把处理机分配给优先数最高进程)、先来先服务算法相关知识,并对进程调度进行最高优先数优先调度算法和先来先服务算法模拟试验,并对比分析两种算法优缺点,从而加深对进程概念和进程调度过程/算法了解设计目标:在多道程序和多任务系统中,系统内同时处于就绪状态进程可能有若干个。也就是说能运行进程数大于处理机个数。为了使系统中进程能有条不紊地工作,必需选择某种调度策略,选择某一进程占用处理机。使得系统中进程能够有条不紊运行,同时提升处理机利用率和系统性能。所以设计模拟进程调度算法(最高优先数优先调度算法、先来先服务算法),以巩固和加深处理进程概念
4、,而且分析这两种算法优缺点。关键词:linux 进程调度 调度算法2. 研究内容和目标操作系统由四大功效模块组成:进程管理、存放器管理、设备管理和文件管理,进程管理是其中最关键一个模块。本文关键研究最高优先数优先调度算法、先来先服务算法这两种调度算法,而且分析比较这两种算法优缺点。目标:进程是操作系统中最关键概念,也是学习操作系统关键。经过此次课程设计,要求了解进程实质和进程管理机制。掌握进程调度工作步骤和进程调度算法,而且分析比较这两种算法优缺点。3. 研究方法3.1研究方法3.1.1查找资料经过查找资料了解到:(1)优先数调度算法介绍优先数调度算法常见于批处理系统中。在进程调度中,每次调度
5、时,系统把处理机分配给就绪队列中优先数最高进程。它又分为两种:非抢占式优先数算法和抢占式优先数算法在非抢占式优先数算法下,系统一旦把处理机分配给就绪队列中优先数最高进程后,这个进程就会一直运行,直到完成或发生某事件使它放弃处理机,这时系统才能重新将处理机分配给就绪队列中另一个优先数最高进程。在抢占式优先数算法下,系统先将处理机分配给就绪队列中优先数最高进程度让它运行,但在运行过程中,假如出现另一个优先数比它高进程,它就要立即停止,并将处理机分配给新高优先数进程。(2)先来先服务算法假如早就绪进程排在就绪队列前面,迟就绪进程排在就绪队列后面,那么先来先服务(FCFS: first come fi
6、rst service)总是把目前处于就绪队列之首那个进程调度到运行状态。也就说,它只考虑进程进入就绪队列前后,而不考虑它下一个CPU周期长短及其它原因。基础思想:先来先服务作业调度算法:优先从后备队列中,选择一个或多个在队列头部作业,把她们调入内存,分配所需资源、创建进程,然后放入“就绪队列”先来先服务进程调度算法:从“就绪队列”中选择一个最优异入队列进程,为它分配处理器,使之开始运行原理:根据进程进入就绪队列前后次序调度并分配处理机实施。先来先服务调度算法是一个不可抢占算法,优异入就绪队列进程,先分配处理机运行。一旦一个进程占有了处理机,它就一直运行下去,直到该进程完成工作或因为等候某事件
7、发生而不能继续运行时才释放处理机。、系统只要有按FIFO规则建立后备作业队列或就绪进程队列即可,就是一个作业控制块JCB或进程控制块PCB加入队列时加在对应队列末尾。、调度退出队列时从对应队列首开始次序扫描,将相关JCB或PCB调度移出对应队列。3.2试验方法3.2.1模拟法 依据最高优先数优先调度算法、先来先服务算法进程调度机制步骤,进行模拟这两种算法试验。3.2.2控制法进行试验时,输入进程名、优先数、抵达时间、需要运行时间、已用CPU时间、进程状态。3.2.3观察法观察试验结果,分析进程调度步骤。3.2.4比较法经过观察试验结果,比较两种调度算法优缺点。3.3可行性分析(课题理论上要求、
8、实践可操作性、本人能力和现实条件(相关案例、资料等)许可等内容)3.3.1环境运行在VMware-workstation-full-10.0.0-1295980上,导入CentOS操作系统,在CentOS操作系统上运行。CentOS操作系统是Linux发行版之一,它是来自于Red Hat Enterprise Linux依据开放源代码要求释出源代码所编译而成。相对于其它 Linux 发行版,其稳定性值得信赖。因为CentOS操作系统安装了gcc编译器,能编译C语言。3.3.2实践可操作性 在对linux进程调度机制和调度算法进行深入分析后,依据对于最高优先数优先调度算法采取最高优先数算法动态优
9、先数法则控制进程:系统把处理机分配给就绪队列中优先数最高进程后,假如运行一个时间片后,进程已占用CPU时间已达成所需要运行时间,则撤消该进程,假如运行一个时间片后进程已占用CPU时间还未达所需要运行时间,也就是进程还需要继续运行,此时应将进程优先数减1(即降低一级),然后把它插入就绪队列等候CPU,而先来先服务是从“就绪队列”中选择一个最优异入队列进程,为它分配处理器,使之开始运行而制订试验方案。 3.3.3本人能力 即使我对linux进程调度方面知识还有很多不知道知识,但我是在不停学习 ,碰到不知道就经过查资料或请教她人方法,不停地学习。4. 研究汇报4.1最高优先数优先调度算法(抢占式)4
10、.1.1试验原理1、进程调度算法:采取最高优先数优先调度算法(即把处理机分配给优先数最高进程)。 2、每个进程有一个进程控制块(PCB)表示。进程控制块能够包含以下信息:进程名、优先数、需要运行时间、已用CPU时间、进程状态等等。 3、进程优先数及需要运行时间事先人为地指定。 4、 每个进程状态能够是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。 5、进程运行时间以时间片为单位进行计算。 6、 就绪进程取得CPU后全部只能运行一个时间片。用已占用CPU时间加1来表示。 7、采取最高优先数算法动态优先数法则控制进程:假如运行一个时间片后,进程已占用CPU时间已达成
11、所需要运行时间,则撤消该进程,假如运行一个时间片后进程已占用CPU时间还未达所需要运行时间,也就是进程还需要继续运行,此时应将进程优先数减1(即降低一级),然后把它插入就绪队列等候CPU。 8、每进行一次调度程序全部打印一次运行进程、就绪队列、和各个进程PCB,方便进行检验。 9、 反复以上过程,直到所要进程全部完成为止。4.1.2试验内容 1、数据结构(1)进程控制块结构PCB:是struct定义结构体,定义以下:typedef struct pcbchar qname20;/*进程名*/char state; /*进程状态*/int super; /*进程优先级*/int ndtime;
12、/*进程需要运行时间*/int runtime; /*进程已运行时间*/int cpu; /*进程目前取得时间片大小*/PCB;(2) 队列结点Node,结点储存PCB信息,定义以下:typedef struct nodePCB data; /*结点数据*/struct node *next; /*指向下一结点指针*/Node;(3)由队列结点Node扩展队列Queue,定义以下:typedef struct queueNode *front;/*队首*/Node *rear;/*队尾*/Queue;2相关函数(1)判定一个队列q是否为空函数int is_empty(Queue *q);(2)
13、将进程控制块x加入队列q函数void enqueue(PCB x,Queue *q);(3)删除队列q队首进程,将其值赋给x并修改状态函数void dequeue(PCB *x,Queue *q);该函数将队列q队首进程删除,因为可能该进程未运行完成,需进入下一优先级队列, 所以先修改其结构体内组员变量:已运行时间为上次已运行时间加上这次取得cpu时间;优先级减1(若该进程已是最低优先级,则将在主控过程中恢复);下次取得时间片为这次时间片加1。然后将修改后进程赋给一个临时PCB变量x,方便将x插入下一优先级队列。 (4)主函数利用上述数据结构和函数实现模拟进程调度。3. 进程产生模拟经过标准输
14、入模拟产生进程:先要求输入进程数目,再依次输入各个进程进程名、进程优先数、进程需要运行时间。4.1.3参考代码#include#include#include#include#define PCB_LEN sizeof(PCB)#define NODE_LEN sizeof(Node)#define QUEUE_LEN sizeof(Queue)/*进程控制块结构PCB*/typedef struct pcbchar qname20;/*进程名*/ char state; /*进程状态*/int super; /*进程优先级*/int ndtime; /*进程需要运行时间*/int runti
15、me; /*进程已运行时间*/int cpu; /*进程目前取得时间片大小*/PCB;/*队列结点,结点储存PCB信息*/typedef struct nodePCB data; struct node *next;Node;/*实现进程控制块队列*/typedef struct queueNode *front;Node *rear;Queue;/*判定队列是否为空*/int is_empty(Queue *q)if(q-front)return 0;elsereturn 1;/*将进程控制块x加入队列q*/void enqueue(PCB x,Queue *q) Node *p=(Node
16、 *)malloc(NODE_LEN);(p-data).state=x.state;(p-data).super=x.super;(p-data).ndtime=x.ndtime;(p-data).runtime=x.runtime;(p-data).cpu=x.cpu;strcpy(p-data).qname,x.qname);p-next=0;if(q-front)q-rear-next=p;elseq-front=p;q-rear=p;/*删除队列q队首进程,将其值赋给x并修改状态*/void dequeue(PCB *x,Queue *q)Node *p=(Node *)malloc
17、(NODE_LEN); if(is_empty(q)return;/*进入下一优先级队列之前修改状态*/x-state=W;/*状态改为就绪*/strcpy(x-qname,(q-front-data).qname);/*已运行时间为上次已运行时间加上这次取得cpu时间*/x-runtime=(q-front-data).runtime+(q-front-data).cpu;/*优先级减1,若该进程已是最低优先级,则将在主控过程中恢复*/x-super=(q-front-data).super-1;x-ndtime=(q-front-data).ndtime;/*下次取得时间片为这次时间片加1
18、*/x-cpu=(q-front-data).cpu+1;p=q-front;q-front=q-front-next;free(p);/*主控过程*/void main()Queue *queue=NULL;/*设置就绪队列数组*/Node *wait=(Node *)malloc(NODE_LEN);PCB x;int numberOFcourse,i,j,super,time;int hight=0,num=0;int temp_ndtime,temp_runtime,temp_cpu;char name20;printf(n请输入进程总个数?);scanf(%d,&numberOFco
19、urse);/*为队列数组开辟空间,每个数组表示不一样优先级队列*/queue=(Queue *)calloc(numberOFcourse,QUEUE_LEN);/*输入各进程信息并初始化,并将其加入对应优先级队列*/for(i=0;ihight)hight=super;printf(n输入进程运行时间:);scanf(%d,&time);strcpy(x.qname,name);x.state=W; x.super=super;x.ndtime=time;x.runtime=0;x.cpu=1;enqueue(x,&queuesuper-1);printf(nn);/*进程调度过程*/fo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 操作系统 专业课程 设计方案 报告 基于 进程 调度 模拟 程序
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。