欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年2022年进程调度 .pdf

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

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

    2022年2022年进程调度 .pdf

    #include #include #include typedef struct ProcessNode / 进程结点的基本结构char name; / 进程名int service_time; / 服务时间int arrive_time; / 到达时间int priority; / 优先级struct FCFS_time / 先到先服务int finish_time; / 完成时间int turnaround_time; / 周转时间float weigtharound_time;/ 带权周转时间FCFS_time; struct SJF_time / 短作业优先int finish_time; int turnaround_time; float weigtharound_time; int flag; SJF_time; struct RR_time / 时间片轮转的结点int finish_time; int turnaround_time; float weigtharound_time; int flag_time;/ 赋值为进程的服务时间,为0 则进程完成RR_time; struct Pri_time / 优先权非抢占式int finish_time; int turnaround_time; float weigtharound_time; Pri_time; struct ProcessNode*next; ProcessNode,*Linklist; void main() int choice; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 11 页 - - - - - - - - - Linklist p,head; Linklist read_information(); Linklist FCFS_scheduling(Linklist head); Linklist SJF_scheduling(Linklist head); Linklist RR_scheduling(Linklist head); Linklist Pri_scheduling(Linklist head); head=read_information();/ 读入进程的基本信息do p=head-next; printf(n); printf(*进程初始信息输出* n); /输出初始化后的进程基本信息printf(n); printf(进程名称); printf(到达时间); printf(服务时间); printf(优先级); printf(n); while(p) printf( %c ,p-name); printf( %d ,p-arrive_time); printf( %d ,p-service_time); printf( %d ,p-priority); printf(n); p=p-next; printf(n); printf(* n);/输出进程的调用选择项printf(n); printf(1、FCFS- 先到先服务 n); printf(2、SJF- 短作业优先 n); printf(3、RR-时间片轮转 n); printf(4、Pri-优先权调度 n); printf(5、退出 n); printf(n); printf(* n); printf(n); printf(请在 15 之间选择 : ); scanf(%d,&choice); printf(n); printf(n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 11 页 - - - - - - - - - switch(choice) case 1: FCFS_scheduling(head); break; case 2: SJF_scheduling(head); break; case 3: RR_scheduling(head); break; case 4: Pri_scheduling(head); break; / case 5: exit(); while(choice!=5); Linklist read_information()/进程读入函数 int i; int num; / ProcessNode ; Linklist pro; Linklist p; Linklist head; printf(n); printf(*进程调度算法 * n); printf(n); printf(请输入进程的个数:); scanf(%d,&num); printf(n); printf(*初始化信息 * n); printf(n); head=(Linklist)malloc(sizeof(ProcessNode);/ 头结点head-next=NULL; p=head; for(i=1;iname); printf( 到达时间 : ); scanf(%d,&pro-arrive_time); printf( 服务时间 : ); scanf(%d,&pro-service_time); printf( 优先级 : ); scanf(%d,&pro-priority); /pro-next=head-next; head-next=pro;/逆序建链p-next=pro; p=pro;/ 顺序建链/p+; pro-next=NULL; printf(n); return head; Linklist FCFS_scheduling(Linklist head)/先到先服务算法函数 Linklist p; Linklist q;/指向前一进程p=head-next; while(p) / 初始化进程的完成时间、周转时间、带权周转时间,初值均赋为0 p-FCFS_time.finish_time=0; p-FCFS_time.turnaround_time=0; p-FCFS_time.weigtharound_time=0; p=p-next; p=q=head-next; p-FCFS_time.finish_time=p-arrive_time;/避免第一个进程到达时间不为0 while(p) if(p-arrive_timeFCFS_time.finish_time)/下一进程已到达,在等待中 p-FCFS_time.finish_time=(p-service_time)+(q-FCFS_time.finish_time);/服务时间名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 11 页 - - - - - - - - - p-FCFS_time.turnaround_time=(p-FCFS_time.finish_time)-(p-arrive_time);/ 周转时间p-FCFS_time.weigtharound_time=(float)(p-FCFS_time.turnaround_time)/(p-service_time);/带权周转时间 else p-FCFS_time.finish_time=p-service_time+p-arrive_time;/ 服务时间p-FCFS_time.turnaround_time=(p-FCFS_time.finish_time)-(p-arrive_time);/ 周转时间p-FCFS_time.weigtharound_time=(float)(p-FCFS_time.turnaround_time)/(p-service_time);/带权周转时间 q=p; p=p-next; p=head-next; printf(* FCFS * n);/ 输出先到先服务调度后的进程信息printf(n); printf(进程名称); printf(到达时间); printf(服务时间); printf(优先级); printf(完成时间); printf(周转时间); printf(带权周转时间); printf(n); while(p) printf( %c ,p-name); printf( %d ,p-arrive_time); printf( %d ,p-service_time); printf( %d ,p-priority); printf( %d,p-FCFS_time.finish_time); printf( %d,p-FCFS_time.turnaround_time); printf( %0.2f,p-FCFS_time.weigtharound_time); printf(n); p=p-next; printf(n); printf(* n); printf(n); return head; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 11 页 - - - - - - - - - Linklist SJF_scheduling(Linklist head)/ 短作业优先算法 Linklist p,r; Linklist q;/指向前一进程结点int num=0;/ 记录进程个数int add_flag=0;/ 进程完成服务个数int service_time_min; int arrive_time; int k; p=head-next;/首元结点while(p) / 初始化进程的完成时间、周转时间、带权周转时间,初值均赋为0 p-SJF_time.finish_time=0; p-SJF_time.turnaround_time=0; p-SJF_time.weigtharound_time=0; p-SJF_time.flag=0; +num; q=p; p=p-next; q-next=head-next;/ 将创建的进程队列变为循环队列p=head-next;q=p; p-SJF_time.finish_time=p-arrive_time+p-service_time; p-SJF_time.turnaround_time=(p-SJF_time.finish_time)-(p-arrive_time);/ 周转时间p-SJF_time.weigtharound_time=(float)(p-SJF_time.turnaround_time)/(p-service_time);/带 权 周 转 时间q-SJF_time.finish_time=p-SJF_time.finish_time; p-SJF_time.flag=1; add_flag=1; p=p-next; do if(p-SJF_time.flag=1)p=p-next; else if(p-arrive_time)(q-SJF_time.finish_time) service_time_min=p-service_time; arrive_time=p-arrive_time; while(p-arrive_time=arrive_time&p-SJF_time.flag=0)/寻找最短的作业 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 11 页 - - - - - - - - - if(p-next-service_time)service_time)service_time_min=p-next-service_time;p=p-next; else p=p-next; p=q-next; r=q; while(p-service_time!=service_time_min)p=p-next;/指针指向最短作业p-SJF_time.finish_time=p-arrive_time+p-service_time; p-SJF_time.flag=1;+add_flag; p-SJF_time.turnaround_time=(p-SJF_time.finish_time)-(p-arrive_time);/周 转时间p-SJF_time.weigtharound_time=(float)(p-SJF_time.turnaround_time)/(p-service_time);/ 带权周转时间q=p;p=r-next; else k=0; service_time_min=p-service_time; while(p-arrive_time)SJF_time.finish_time)&kSJF_time.flag=1) p=p-next;+k; else if(p-SJF_time.flag!=1)&(p-service_time)service_time; p=p-next;+k; else p=p-next;+k; p=q-next; r=q; while(p-service_time!=service_time_min)p=p-next;/指针指向最短作业p-SJF_time.finish_time=q-SJF_time.finish_time+p-service_time; p-SJF_time.turnaround_time=(p-SJF_time.finish_time)-(p-arrive_time);/周 转时间p-SJF_time.weigtharound_time=(float)(p-SJF_time.turnaround_time)/(p-service_time);/ 带权周转时间p-SJF_time.flag=1;+add_flag; /q=p;p=p-next; q=p;p=r-next; while(add_flag!=num); for(p=head-next;num0;num-)/断开循环队列名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 11 页 - - - - - - - - - q=p;p=p-next; q-next=NULL; p=head-next;/ 指向链首,输出短作业调度后的进程信息printf(n); printf(* SJF * n); printf(n); printf(进程名称); printf(到达时间); printf(服务时间); printf(优先级); printf(完成时间); printf(周转时间); printf(带权周转时间); printf(n); while(p) printf( %c ,p-name); printf( %d ,p-arrive_time); printf( %d ,p-service_time); printf( %d ,p-priority); printf( %d,p-SJF_time.finish_time); printf( %d,p-SJF_time.turnaround_time); printf( %0.2f,p-SJF_time.weigtharound_time); printf(n); p=p-next; printf(n); printf(* n); printf(n); return head; Linklist RR_scheduling(Linklist head)/ 时间片轮转算法 Linklist q;/指向前一进程结点Linklist p; int q_time;/ 时间片大小int num=0;/ 记录进程个数int add_flag=0;/ 进程完成服务个数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 11 页 - - - - - - - - - printf(请输入时间片的大小: ); scanf(%d,&q_time); p=head-next; while(p) / 初始化进程的完成时间、周转时间、带权周转时间,初值均赋为0 p-RR_time.finish_time=0; p-RR_time.turnaround_time=0; p-RR_time.weigtharound_time=0; p-RR_time.flag_time=p-service_time; q=p; +num; p=p-next; q-next=head-next;/将创建的进程队列变为循环队列p=head-next; q-RR_time.finish_time=p-arrive_time; do /* printf(n); printf(* n); printf( %c ,p-name); printf( %d ,p-arrive_time); printf( %d ,p-service_time); printf( %d ,p-priority); printf( %d,p-RR_time.finish_time); printf(n); */ if(p-RR_time.flag_time)(q_time)/ 服务时间大于时间片 p-RR_time.finish_time=(q-RR_time.finish_time)+(q_time);/累加完成时间p-RR_time.flag_time=(p-RR_time.flag_time)-(q_time); if(p-next-arrive_time)RR_time.finish_time)/有进程等待 q=p;p=p-next; else / 当前进程未完成,无进程等待,指针不向后移 q=p; else if(p-RR_time.flag_time)=0)/进程已经完成 p=p-next; else 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 11 页 - - - - - - - - - p-RR_time.finish_time=(q-RR_time.finish_time)+(p-RR_time.flag_time); p-RR_time.flag_time=0; +add_flag; p-RR_time.turnaround_time=(p-RR_time.finish_time)-(p-arrive_time);/周转时间p-RR_time.weigtharound_time=(float)(p-RR_time.turnaround_time)/(p-service_time);/带权周转时间if(p-next-arrive_time)RR_time.finish_time)/有进程等待 q=p;p=p-next; else / 当前进程完成,无进程等待,指针向后移/ q=p; q-RR_time.finish_time=p-next-arrive_time; p=p-next;q=p;q-RR_time.finish_time=p-arrive_time; while(add_flag!=num); /while(p-RR_time.flag=0); for(p=head-next;num0;num-)/断开循环队列 q=p;p=p-next; q-next=NULL; p=head-next;/ 指向链首,输出时间片轮转调度后的进程信息printf(n); printf(* RR * n); printf(n); printf(进程名称); printf(到达时间); printf(服务时间); printf(优先级); printf(完成时间); printf(周转时间); printf(带权周转时间); printf(n); while(p) printf( %c ,p-name); printf( %d ,p-arrive_time); printf( %d ,p-service_time); printf( %d ,p-priority); printf( %d,p-RR_time.finish_time); printf( %d,p-RR_time.turnaround_time); printf( %0.2f,p-RR_time.weigtharound_time); printf(n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 11 页 - - - - - - - - - p=p-next; printf(n); printf(* n); printf(n); return head; Linklist Pri_scheduling(Linklist head)/ 优先权调度算法 printf( 优先权调度算法n); return head; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 11 页 - - - - - - - - -

    注意事项

    本文(2022年2022年进程调度 .pdf)为本站会员(Che****ry)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开