欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

操作系统实验1进程调度

  • 资源ID:137496458       资源大小:256KB        全文页数:13页
  • 资源格式: DOC        下载积分:11.8积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要11.8积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

操作系统实验1进程调度

西华大学软件工程系上机实践报告课程名称: 操作系统原理年级:2011级上机实践成绩: 指导教师: 谭平姓名:杨玲上机实践名称:进程调度 学号上机实践日期上机实践编号:1组号:上机实践时间:4 学时一. 实验目的1、掌握进程的各种基本状态和状态之间的转换;2、掌握进程调度的过程;3、用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解。二. 实验内容与设计思想上机实践内容:编写并调试一个模拟的进程调度程序,采用“最高优先数优先”调度算法对五个进程进行调度。 “最高优先数优先”调度算法的基本思想是把CPU分配给就绪队列中优先数最高的进程。 静态优先数是在创建进程时确定的,并在整个进程运行期间不再改变。 动态优先数是指进程的优先数在创建进程时可以给定一个初始值,并且可以按一定原则修改优先数。例如:在进程获得一次CPU后就将其优先数减少1。或者,进程等待的时间超过某一时限时增加其优先数的值,等等。设计思想: (以下内容共参考,同学们可增加功能,相应的数据结构和流程图也要变哈!建议增加I/O时间)PCB的信息可以存放在结构或类中,如定义struct PCB /* 定义进程控制块PCB */ char name10; char state; int super; int ntime; int rtime; struct pcb* link; ;2、数据结构采用链式列队。frontrearABCD···开始结束图1 最高优先数进程调度模拟程序流程图如果要将进程的三种基本状态都考虑进去,就需要在PCB中添加I/O时间。建议学有余力的同学用图形化界面演示三种状态的变化过程。三. 使用环境windows XP ,VC+6.0四. 核心代码及调试过程#include "stdio.h"#include "conio.h"#include <stdlib.h>#define getpch(type) (type*)malloc(sizeof(type)#define NULL 0struct pcb /*定义进程控制块pcb */char name10;char state;int super;int ntime;int rtime;struct pcb* link;*q=NULL,*p;typedef struct pcb PCB;void sort() /*建立对进程进行优先级排列函数*/PCB *first,*second;int i=0;if(q=NULL)|(p->super)>(q->super) /*优先数最大者插入队首*/p->link=q;q=p;else /*进程比较优先级,插入适当的位置中*/first=q;second=first->link;while(second!=NULL)if(p->super)>(second->super) /*若插入进程比当前进程优先数大,插入到当前进程前面*/p->link=second;first->link=p;second=NULL;i=1;else /*插入进程优先数最低,则插入到队尾*/first=first->link;second=second->link;if(i=0) first->link=p;void input() /*建立进程控制块函数*/int i,num; printf("n 请输入进程数:");scanf("%d",&num);for(i=0;i<num;i+)printf("n 请输入进程号No.%d:n",i);p=getpch(PCB);printf("n 请输入进程名:");scanf("%s",p->name);printf("n 请输入进程优先数:");scanf("%d",&p->super);printf("n 请输入进程运行时间:");scanf("%d",&p->ntime);printf("n");p->rtime=0;p->state='w'p->link=NULL;sort();int len()int l=0;PCB* pr=q;while(pr!=NULL)l+;pr=pr->link;return(l);void show(PCB* pr) /*建立进程显示函数,用于显示当前进程*/printf("n qname t state t super t ndtime truntime n");printf("|%st",pr->name);printf("|%ct",pr->state);printf("|%dt",pr->super);printf("|%dt",pr->ntime);printf("|%dt",pr->rtime);printf("n");void check() /*建立进程查看函数*/PCB* pr;printf("n 当前正在运行的进程是:%s",p->name); /*显示当前运行进程*/show(p);pr=q;printf("n 当前就绪队列状态为:n"); /*显示就绪队列状态*/while(pr!=NULL)show(pr);pr=pr->link;void destroy() /*建立进程撤销函数(进程运行结束,撤销进程)*/ printf("n 进程%s已完成.n",p->name); free(p); void running() /*建立进程就绪函数(进程运行时间到,置就绪状态)*/ (p->rtime)+; if(p->rtime=p->ntime) destroy(); else (p->super)-; p->state='w' sort(); void main() int length,h=0; char ch; input(); length=len(); while(length!=0)&&(q!=NULL) ch=getchar(); h+; printf("n The execute number:%d n",h); p=q; q=p->link; p->link=NULL; p->state='R' check(); running(); printf("n 按任一键继续."); ch=getchar(); printf("nn 进程已完成.n"); ch=getchar();五. 总结刚开始对进程调度的思想理解不够深刻,不知道如何实现对进程优先级的排序,以及进程控制块如何配置信息。在翻阅在大量书箱和同学的帮助下,解决了用动态优先级在方法实现进程调度模拟算法。在对C+语言的使用尤其是在编写代码方面很欠缺,在组织语言时出错不断。经过自己的多次修改之后,程序才得以运行。在做轮转法实现的过程中,参考动态优先级在方法,便很容易实现。在设计过程中,需要大量的相关资料,为了本次课程设计我在网上和图书馆查阅了大量资料,不断的发现问题、提出问题、解决问题。在编程和调试的过程中,经常会出现意想不到的问题,并非每个问题都可以从相关资料中找到解决方法,有些问题是无法预料到的,这就需要通过自己理性的分析得出问题的解决方案。我还希望我们可以有更多这样的学习机会,使我们的知识体系变的更加牢固。

注意事项

本文(操作系统实验1进程调度)为本站会员(xian****hua)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!