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

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

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

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

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

    1、主程序定义PCB结构与其她有关变量。 (四)运行与显示程序开始运行后,首先提示:请用户选择算法,输入进程名与相应得NEEDTIM E 值。每次显示结果均为如下5个字段:name cp u t ime n ee d t ime p ri o rit y s tate* 注:1 a .在 stat e 字段中,“R”代表执行态,W”代表就绪(等待)态,“F”代表完成态。厶应先显 示”R”态得,再显示态得,再显示态得。a 3 在W态中,以优先数高低或 轮转顺序排队;在” F 态中,以完成先后顺序排队。v iew p I a i n copy to c 1 ipbo a rdprint?1./*2.操

    2、作系统实验之时间片轮转算法与优先级调度算法3.By Vi s ual C+ 6、04.*/# i nclu d e v s tdi o、h#inelude #i n elude typedef st r uct nodechar n ame 2 0; /*进程得划字*/int prio; /次进程得优先级*/int round; /*分配CPU得时间片*/int cput i me; /*c PU 执行时间*/i nt needtime; /*进程执行所需要得时间* /char state; /*进程得状态,W一就绪态,R执行态,F完成态*/in t count; /*记录执行得次数*/s t

    3、ruct node *next: /*链表指针*/PCB;PCB * r eady=NULL,*run=NULL,*fini s h=NULL; /*定义三个队列,就绪队列,执行队列与完成队列=7int num;voi d GetFi rst (); /*从就绪队列取得第一个节点*/void Ou t pu t(); /*输出队列信息*/void InsertPrio(PCB *in); /*创建优先级队列,规左优先数越小,优先级越高*/vo i d In sertT i me(PCB *in); /*时间片队列*/void InsertFin i sh(PCB *in):void PrioC

    4、reate(); /*优先级输入函数*/voi d TimeCre ate (); /*时间片输入函数*/void Priori t y(); /*按照优先级调度*/void RoundRu n (): /*时间片轮转调度*/i n t main(void)char cho s e;printf (”请输入要创建得进程数目:n ”);S c a n f ( % d 蔦&n u m):getchar();pr i ntf (”输入进程得调度方法:(P/R)n);s c a n f ( H %c H z& c hose);swi t ch(ch ose)Case P:case 1 pPr i oC

    5、reate();Priori t y():break:case R :c a se rT i meCreate ();Rou n d Run();b r eak;d e faul t: break;Outpu t ();r et u r n 0 :voidGetFirst() /*取得第一个就绪队列节点* /sta t e = ;ready = ready- next;next = NULL;void Outpu t() /*输出队列信息* /P C B *P;P = r e ady;prlntf (HiS程名t优先级t轮数tcpu时间t需要时间t进程状态 t计数器 nH):while(p!

    6、= NULL)pri n t f (%st%dt%dt%dt%d t t %c t t %dn ,p- name,P-prio, p-round, p cp utime,pneedt i me, p-s t ate, p-co unt);p = p-n e xt;p = f inish ;whi I e(p!pri n tf(%s t %dt% d t%dt%d t t% c t t %d n ,p n am e,p-p r io,p-cput i me,p-n eed time,p- c ou n t):p = r u n;w h i 1 e( p ! = NU L L)P r i n tf

    7、( %st%dt%dt%dt%dt t %ctt%d n,p-name, p- prio, p -ro und,pcputime, p - needtime,p-s t ate p-co un t);P = p-next;V Old InsertPrio(PCB* i n) /*创建优先级队列,规泄优先数越小,优先级越低*/PCB * f st, * nxt:fst = n xt = ready;if( r e ad y = NULL) /*如果队列为空,则为第一个元素* /in-n ext = ready;r e a dy = in;e Is e /*查到合适得位置进行插入* /if (in

    8、 -prio = f st-pr i o) /*比第一个还要大,则插入到队头*i n -n e xt = r ead y :ready = in;e Isewhi 1 e(fst-nex t != NULL) /*務动指针查找第一个别它小得元素得 位置进行插入*/n x t = fst;fs t = f s t-if(fst-next = NULL) /*已经搜索到队尾,则其优先级数最小,将英插入到队尾即可*/i n n ex t = fs t -f s t next = i n;el se /*插入到队列中*/nxt = in;in n ext = fst;VO i d I n sertTi

    9、me(PCB * in) /*将进程插入到就绪队列尾部*/PCB *fst;fst = ready;i f ( r eady = NULL)n e x t = r e a dy;r ead y = in;w h il e ( f st-next !f st = fst-in -nex t = fst -n ext;fst -n e xt = in;V oid InsertF i nish(PCB *in) /*将进程插入到完成队列尾部*/f s t = fin i sh;i f(fi n ish = NULL)i n n e xt = finish;f inish = in;el s ewhi

    10、l e (fst-= N ULL)f s t = fs t - n e xt = f st -next = in;void PrioCreate() /*优先级调度输入函数* /PCB *tmp;int i :pri nt f(u输入进程名字与进程所需时间:n M ); f o r (i = 0: i nam e );getcha r (); / *吸收回车符号*/scanf(M %cT,&(t mp-n e edtime):tm p -cputime = 0 :t mp -st a te =/ W;tmp -pr i 0 = 50 tmp- needt i me; /*设置其优先级,需要得时

    11、 间越多,优先级越低*/ro u n d = 0 ;coun t = 0;Ins e rtPrio( t mp); /*按照优先级从髙到低,插入到就绪队列*/voi d Tim e C r eate () / *时间片输入函数*/PCB * t mp;i nt i;print f(“输入进程名字与进程时间片所需时间: n);for( i = 0 ;i n ame):ge t char();scan f (” %dH,&(tmpn e ed t ime);c p utime = 0:sta t e =W; p ri o = 0;ro u nd = 2; / *假设每个进程所分配得时间片就是2*

    12、/coun t = 0:I n s e rtT i m e (tmp);void Priori t y() /*按照优先级调度,每次执行一个时间片*/i nt flag = 1;GetF i r s t ();wh i le(ru n!=NULL) /次当就绪队列不为空时,则调度进程如执行队列执行*/Ou t put (): /*输出每次调度过程中各个节点得状态*/whi I e ( f la g )run-p rio -= 3;/*优先级减去三*/ c pu t ime+ + ; /*CPU 时间片加一* / n ee d t i me-; / *进程执行完成得剩余时间减一* /if( r

    13、un-needtime = 0)/*如果进程执行完毕,将进程状态垃为F,将其 插入到完成队列=7run- s t a te = F;ru nc ount+; /*进程执行得次数加一*/In s ertF i n i s h( r un);f 1 a g = 0;else /水将进程状态置为W,入就绪队列*/ru n-state = wcount+-l-; /*进程执行得次数加一夫/I n sertT i me(ru n);fl a g = 0;fla g = 1 ;GetFirst(); /*继续取就绪队列队头进程进入执行队列* /vo i d Ro un d Run() /*时间片轮转调度算

    14、法* /int f 1 ag = 1;GetFirst():w h i 1 e(ru n != NULL)Output();wh i 1 e(fla g )run c ount+ + ;cput i m e +;ne e d t ime;if(run n eedt i me = 0) /*进程执行完毕*/un s ta t e = FI nse r tFinish( r un);flag = 0;else if ( r u n -count =un-ound)/*时间片用完* /u n-st a t e = W; count = 0; /*讣数器淸零,为下次做准备*/Inser t Tim e (u n);f lag = 0 ;f 1 ag = 1;GetF i rst();


    注意事项

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

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




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

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

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


    收起
    展开