处理机调度算法的实现.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告 课程名称: 操作系统原理 实验名称: 处理机调度算法的实现 姓名: 屈 波 学号: 班级: 14软件2班 一、实验名称 处理机调度算法的实现。 二、预习要求 了解操作系统处理机调度的基本概念,处理机调度程序的功能,常用的处理机调度算法。C或C++编程方法与语句格式,提前初步编好实验程序。 三、实验方式 通过实验室的微机上机,实际调试程序。 四、实验要求 正确的设计有关的数据结构与各个功能模块,画出程序的流程图,编写程序,程序执行结果应正确。 五、实验环境 ①windows操作系统环境下的个人微机。 ②C或C++程序设计语言。 六、实验分组 1人/组。 七、实验内容 ①设定系统中进程数,每一个进程用一个进程控制块表示。 ②输入每个进程的“优先数”和“要求运行时间”。 ③为了调度方便,将进程按给定的优先数从大到小连成就绪队列。用一单元指出队列首进程,用指针指出队列的连接情况。 ④处理机调度总是选队首进程运行。采用时间片轮转调度算法。 ⑤若要求运行时间为零,则将其状态置为“结束”,且退出队列。 ⑥运行所设计程序,显示或打印逐次被选中进程的进程名以及进程控制块的动态变化过程。 八、其他要求 ①根据自己实验内容在课下查资料,设计出基本的程序框架。 ②在实验课堂规定的时间内,自己独立完成程序的编制。 九、基本思想 先选择时间片的个数和每个时间片需要的时间,正在运行的进程每运行一秒其优先权数目加一,即其优先权减小。每个时间片运行结束后,选择进入时间片进程优先权数目最小的进程,开始下一个时间片的运行。如果有进程运行结束,则离开,再在就绪队列中选择优先权数目最小的进程进入。在运行期间,如果有新的进程来到,按优先权大小放入就绪队列中。 十、算法分析 定义一个结构体,此包含了PCB的信息: struct PCB { char PID[5]; /*进程名*/ int needtime; /*要求运行的时间*/ int cputime; /*已运行时间*/ int priority; /*优先权(越小越高)*/ int starttime; /*进入就绪队列的时间*/ int overtime; /*运行完成的时间*/ int state; /*状态:1就绪2运行3完成*/ struct PCB *next; }; 子函数struct PCB *create(int num,int n)用来建立一个按优先级大小排列的就绪进程链表和一个按时间先后循序排列的将进入就绪进程的链表。 main()函数中用一while循环输出进入时间片的进程状态。 十一、程序流程图 算法描述(源代码) #define NULL 0 #define LEN sizeof(struct PCB) #includestdio.h #includestdlib.h struct PCB { char PID[5]; /*进程名*/ int needtime; /*要求运行的时间*/ int cputime; /*已运行时间*/ int priority; /*优先权(越小越高)*/ int starttime; /*进入就绪队列的时间*/ int overtime; /*运行完成的时间*/ int state; /*状态:1就绪2运行3完成*/ struct PCB *next; }; struct PCB *create(int num,int n) /*创建进程,并将进程按优先级顺序插入队列中*/ { struct PCB *head,*p,*p1,*p2; int i; head=NULL; /*头指针指零*/ for(i=1;i=num;i++) /*循环建立所有进程*/ { printf(请输入第%d个进程的信息\n,i); p=(struct PCB *)malloc(LEN); /*开辟一个空间*/ printf(进程名:); /*输入进程名*/ scanf(%s,p-PID); printf(要求运行的时间:); /*输入要运行的时间*/ scanf(%d,p-needtime); p-cputime=0; /*占用处理机的时间赋为零*/ printf(优先权:); /*输入优先权*/ scanf(%d,p-priority); if(n==1) p-starttime=0; /*进入就绪队列的时间赋为零*/ else { printf(进入就

文档评论(0)

dashewan + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档