2022年2022年进程调度 .pdf
《2022年2022年进程调度 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年进程调度 .pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、#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_ti
2、me; 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;
3、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
4、 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(
5、%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 之间
6、选择 : ); 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_sche
7、duling(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)
8、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)
9、; 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_ti
10、me;/避免第一个进程到达时间不为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_tim
11、e.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=(
12、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_tim
13、e); 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; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - -
14、- - - - 名师精心整理 - - - - - - - 第 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.
15、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_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年进程调度 2022 进程 调度
限制150内