




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告设计名称:_模拟实现一种处理机调度算法_学生姓名:000000_专 业: 计算机科学与技术_ 班 别:计科本000班学 号:0000000000指导老师:000000日 期: 2014年 06月18 日模拟实现一种处理机调度算法优先级调度法一、实验目的:用高级语言编写和调试一个进程调度程序,通过优先级调度算法的模拟,加深进程概念和进程调度的理解。学会采用动态优先级调度算法模拟处理cpu的进程。二、实验平台:微型计算机、Windows、C语言三、总体设计: 1. 总体设计原理及方案:(1)在Windows下使用C语言编程模拟优先级进程调用算法。为了清楚地观察每个进程的调度过程,程序将
2、每个时间片内的进程情况显示出来。(2)进程控制块是进程存在的唯一标志,因此,在模拟算法中每一个进程用一个进程控制块PCB来代表,PCB用一结构体表示。(3)进程在运行过程中其状态将在就绪、执行、完成几种状态之间转换,同时进程可能处于不同的附列中,如就绪队列。在优先级调度算法中,选择单向队列,入队既是将进程控制块插入队尾,出队既是按优先级重新排列的队,删除队头元素。(4)为了便于处理,程序中的某进程运行时间以时间为单位计算。各进程的优先级认为输入,运行所需时间随机产生。(5)优先权调度算法采用动态优先权,进程每运行一个时间片,优先数减1;进程在就绪队列等待一个时间单位,优先数加1。(6)对于遇到
3、优先权一致的情况,采用FCFS策略解决。(7)由于模拟进程调度,所以,对被选中的进程并不实际启动运行,而是修改进程控制块的相关信息来模拟进程的一次运行。 2.分别用两种调度算法对五个进程进行调度。每个进程可有三钟状态;执行状态(R)、就绪状态(W,包括等待状态)和完成状态(F),并假定初始状态为就绪状态。三、数据结构 (1)进程控制块结构如下:Name进程标示符Prio进程优先数Cputime进程累计占用CPU的时间片数Needtime进程到完成还需要的时间片数State进程状态Next连指针(2)进程的就绪态和等待态均为链表结构,共有四个指针如下:Run当前运行进程指针Ready就绪队列头指
4、针Tall就绪队列尾指针Finish完成队列头指针四、程序流程图 开始P为当前优先数最大进程p-link=ready;ready=p;p-super - -Inser=0?(second当前记录的进程为空)First-link=p时,用second记录进程p进程p输入结束? 开始执行P-rtime=p-ntimeP插入进程队列成功p-supersecond-superSecond=nullFirst=readySecond=first-linkp-superready-super或ready为空Ready记录当前链表中最大优先数进程 N YFirst&second;指针后移一位 N N Y N
5、 Y Y N Y五、实验代码#include#include#includetypedefstructnode char name20; /进程的名字 int prio; /进程的优先级 int cputime; /CPU执行时间 int needtime; /进程执行所需要的时间char state; /进程的状态,W就绪态,R执行态,F完成态 int count; /记录执行的次数 struct node *next; /链表指针PCBPCB *ready=NULL,*run=NULL,*finish=NULL; /定义三个队列,就绪队列,执行队列和完成队列int num;viod Get
6、First(); /从就绪队列取得第一个节点void Output(); /输出队列信息void InsertPrio(PCB *in);/创建优先级队列规定优先数越小优先级越高void PrioCreate(); /优先级输入函数void Priority(); /按照优先级调度int main(void)printf(请输入要创建的进程数目:n);scanf(%d,&num);getchar();printf(优先级调度算法:n);PrioCreate();Priority();Output();return0;void GetFirst() /取得第一个就绪队列节点run=ready;i
7、f(ready!=NULL) run-state=R;ready=ready-next;run-next=NULL; void Output() /输出队列信息PCB*p;p=ready;printf(进程名t优先级tcpu时间t需要时间t进程状态t计数器n);while(p!=NULL)printf(%st%dt%dt%dtt%ctt%dn,p-name,p-prio,p-cputime,p-needtime,p-state,p-count);p=p-next; p=finish;while(p!=NULL) printf(%st%dt%dt%dtt%ctt%dn,p-name,p-prio
8、,p-cputime,p-needtime,p-state,p-count);p=p-next; p=run;while(p!=NULL) printf(%st%dt%dt%dtt%ctt%dn,p-name,p-prio,p-cputime,p-needtime,p-state,p-count);p=p-next; void InsertPrio(PCB *in) /创建优先级队列,规定优先数越小,优先级越低PCB*fst,*nxt;fst=nxt=ready; if(ready=NULL) /如果队列为空,则为第一个元素 in-next=ready;ready=in; else /查到合适
9、的位置进行插入 if(in-prio=fst-prio) /比第一个还要大,则插入到队头 in-next=ready;ready=in; else while(fst-next!=NULL) /移动指针查找第一个别它小的元素的位置进行插入 nxt=fst;fst=fst-next; if(fst-next=NULL) /已经搜索到队尾,则其优先级数最小,将其插入到队尾即可 in-next=fst-next;fst-next=in; else /插入到队列中 nxt=in;in-next=fst; void InsertTime(PCB *in) /将进程插入到就绪队列尾部PCB*fst;fst
10、=ready;if(ready=NULL) in-next=ready;ready=in;elsewhile(fst-next!=NULL) fst=fst-next; in-next=fst-next;fst-next=in;void InsertFinish(PCB *in) /将进程插入到完成队列尾部PCB*fst;fst=finish;if(finish=NULL)in-next=finish;finish=in; else while(fst-next!=NULL)fst=fst-next;in-next=fst-next;fst-next=in; void PrioCreate()
11、 /优先级调度输入函数PCB*tmp;inti;printf(输入进程名字和进程所需时间:n);for(i=0;iname);getchar(); /吸收回车符号scanf(%d,&(tmp-needtime);tmp-cputime=0;tmp-state=W;tmp-prio=50-tmp-needtime; 、设置其优先级,需要的时间越多,优先级越低tmp-count=0;InsertPrio(tmp); /按照优先级从高到低,插入到就绪队列 void Priority() /按照优先级调度,每次执行一个时间片intflag=1;GetFirst();while(run!=NULL)/当就绪队列不为空时,则调度进程如执行队列 Output(); /输出每次调度过程中各个节点的状态while(flag)run-prio-=3; /优先级减三run-cputime+; /CPU时间片加一run-needtime-; /进程执行完成的剩余时间减一if(run-needtime=0) /如果进程执行完毕,将进程状态置为F,将其插入到完成队列run-state=F;run-count+; /进程执行的次数加一InsertFinish(run);flag=0; else /将进程状态置为W,入就绪队列 run-state=W;run-count+; /进程执行的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年生物法壳聚糖合作协议书
- 2025年文化科技主题公园项目建议书
- 2025年运输代理服务项目建议书
- 2025年驱油用表面活性剂(磺酸盐类)合作协议书
- 2026届山东省滕州市高三上化学期中学业质量监测试题含解析
- 人类改变地表课件
- 远程授课山西省大同市第一中学2026届化学高二上期末考试模拟试题含答案
- 高质量证券行业面试题库
- 人民币认识课件
- 知道智慧树黎族传统文化满分测试答案
- 利用过程状态和设备参数预测电解铜箔产品质量的技术
- 一例支气管哮喘患者的护理个案
- 抢险物资规章管理制度
- 热控检修规程(2018修订版)
- 大疆无人机租赁合同协议
- GB/T 45455-2025成型模带头导套和带头定位导套
- 成年女性压力性尿失禁护理干预
- 简述pdca工作法试题及答案
- T-JSQX 0013-2024 电动汽车变充一体充电设备技术规范
- 北京地铁桥隧结构运维监测技术应用
- 充电桩工程施工方案方案
评论
0/150
提交评论