欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    时间片轮转算法和优先级调度算法C语言模拟实现收藏Word文档格式.docx

    • 资源ID:6869033       资源大小:48.94KB        全文页数:14页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

    时间片轮转算法和优先级调度算法C语言模拟实现收藏Word文档格式.docx

    1、TAIL就需队列尾指针FINISH完成队列头指针(3)程序说明1.在优先数算法中,进程优先数的初值设为:50-NEEDTIME每执行一次,优先数减1, CPU时间片数加1,进程还需要的时间片数减1。在轮转法中,采用固定时间片单位(两个时间片为一个单位),进程每轮转一次, CPU时间片数加2,进程还需要的时间片数减2,并退出CPU,排到就绪队列尾, 等待下一次调度。2.程序的模块结构提示如下:整个程序可由主程序和如下7个过程组成:(1)INSERT1 在优先数算法中,将尚未完成的PCB按优先数顺序插入到就绪 队列中;(2)INSERT2在轮转法中,将执行了一个时间片单位(为2),但尚未完成 的进

    2、程的PCB,插到就绪队列的队尾;(3)FIRSTIN调度就绪队列的第一个进程投入运行;(4)PRINT显示每执行一次后所有进程的状态及有关信息。(5)CREATE创建新进程,并将它的PCB插入就绪队列;(6)PRISCH按优先数算法调度进程;(7)ROUNDSCH按时间片轮转法调度进程。主程序定义PCB结构和其他有关变量。(4)运行和显示程序开始运行后,首先提示:请用户选择算法,输入进程名和相应的NEEDTIME 值。每次显示结果均为如下5个字段:1.在state字段中,代表执行态,W,代表就绪(等待)态F” 代表完成态。2.应先显示R态的,再显示态的,再显示F态的。3.在VT态中,以优先数高

    3、低或轮转顺序排队;在F”态中,以完成先后顺 序排队。view plaincopy to cl ipboardpr int?1. /*2.操作系统实验之时间片轮转算法和优先级调度算法3.By VisuaI C+ 6.04.*/#include stdl ib.h#include string. htypedef struet nodecharname20;/*进程的名字*/intpr io;/*进程的优先级*/round;/*分配CPU的时间片*/eput ime;/CPU执行时间*/needtime;/*进程执行所需要的时间/char state; /*进程的状态,W 就绪态,R 执行态,F

    4、完成态*/i nt count; /*记录执行的次数*/struct node *next; /* 链表指针*/PCB;PCB *ready=NULL, *run=NULL, *f i n i sh=NULL; /*定艾三个队列,就绪队列,执行队列和完成队列*/irrt num;voidGetFi rst ();/*从就绪队列取得第一个节点*/Output ();/*输出队列信息*/1nsertPr i o (PCB*in); /*创建优先级队列,规定优先数越小,优先级越高*/1nsertT ime (PCB /*时间片队列*/lnsertFinish(PCB *in);Pr ioCreate

    5、();/*优先级输入函数*/TimeCreateO ;/*时间片输入函数*/Pr ior ityO ;/*按照优先级调度*/RoundRunO ;/*时间片轮转调度*/ma i n (vo i d)char chose;printfC1请输入要创建的进程数目:nR);seanf (Ed, &num);get char ();printfC*输入进程的调度方法:(P/R)nM);seanf &chose);switch (chose)case 1P:case p*:Pr ioCreate ();Prior ity ();break;case R :rT imeCreate ();defauIt:

    6、return 0;void GetFi rst () /*取得第一个就绪队列节点*/run = ready;if (ready!=NULL)run -state = R;ready = ready -next;next = NULL;vo i d Output () /*输出队列信息*/PCB *p;p = ready;printf (M进程名t优先级t轮数tcpu时间t需要时间t进程状态t计数器n);whi le(p!二NULL)pr intf(n%st%dt%dt%dt%dtt%ctt%dnM, p-name,p-pr io,p-round, p-cput ime, p-needt ime

    7、, p-state,p-count);p 二 p-p = finish;pr intf C%st%dt%dt%dt%dtt%ctt%dnM,p-prio,p-und,*/p-needtime, p-p = p-Ip = run;pr intf (,%st%dt%dt%dt%dtt%ctt%dnM, p-name, p-pr io, p-cputime, p-lnsertPrio(PCB *in) /*创建优先级队列,规定优先数越小,优先级越低PCB *fst,*nxt;fst = nxt = ready;if (ready = NULL) /*如果队列为空,则为第一个元素*/in-next 二

    8、 ready;ready = in;else /*查到合适的位置进行插入*/if (in -prio = fst -pr io) /*比第一个还要大,则插入到队头*/e I sewhi le(fst-next != NULL) /*移动指针查找第一个别它小的元素的位置进行插入*/nxt = fst;fst = fst-if(fst -next = NULL) /*已经搜索到队尾,则其优先级数置小,将其插入到队尾即可*/i n -next = fst -fst -next = in;else /*插入到队列中*/nxt = in;in -next 二 fst;void I nsertTi me

    9、(PCB * i n) /*将进程插入到就绪队列尾部*/PCB *fst;fstready;if (readyNULL)i n-while (fst-= NULL)void I nsertF inish (PCB * i n) /*将进程插入到完成队列尾部*/fst = finish;if (finish = NULL)next = finish;finish = in;fst-void PrioCreateO /*优先级调度输入函数*/PCB *tmp;irrt i;pr intf (”输入进程名字和进程所需时间:nH);for (i = 0;i name);getchar () ; /*吸

    10、收回车符号*/scanf Cd,&(tmp-needtime);tmp -cput i me = 0;state =,Wpr io = 50 - tmp-needt ime; /*设置其优先级,需要的时间越多,优先级越低*/round = 0;/*按照优先级从离到低,插入到就绪队列count = 0;InsertPr io(tmp);void TimeCreateO /*时间片输入函数*/printfC1输入进程名字和进程时间片所需时间:nu);perror(MmallocH);scanf(n%sH, tmp-scanf ,&InsertTime(tmp);whi le(run != NULL

    11、) /*当就绪队列不为空时,則调皮进程如执行队列执行*/ /*输出每次调度过程中冬个节点的状态*/whi Ie (f I ag)run-pr io -二3; /*优先级减去三*/cput ime+; /*CPU 时间片加一*/needt i me ;/*进程执行完成的剩余时间减一*/if(run-needtime = 0)/*如果进程执行完毕,将进程状态置为F.将其插入到完成队列*/s tate = F;r un-count+; /*进程执行的次数加一*/InsertFinish (run);flag = 0;else /*将进程状态置为也入就绪队列*/WInsertTime (run);flag = 1;GetFirst (); /*继续取就绪队列队头进程进入执行队列*int flag = 1;whi le (run !whi le (f I ag)needtime;if (run-needt ime = 0) /*进程执行完毕*/state = F;else if (run-count = run-round)/*时间片用完*/W*; /*计数器清零,为下次做准备*1;flag


    注意事项

    本文(时间片轮转算法和优先级调度算法C语言模拟实现收藏Word文档格式.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

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




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

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开