实验一进程调度实验专业:嵌入式(软件)学号:0210姓名:郝春玲实验日期:2012年12月27日一、实验目的通过对进程调度算法的模拟加深对进程概念和进程调度算法的理解。二、实验要求编写程序实现对5个进程的调度模拟,采用优先权的调度算法分别进行模拟调度。三、实验方法内容算法设计思路用C语言实现对m个进程采用优先权进程调度算法(高度优先权调度)的调度。(2)每个用来标识进程的进程控制块PCB可用结构来描述,包括以下字段:1>进程号pid。2>进程优先数pri,并规定优先数越大的进程,其优先权越高。3>进程运行还需要的时间ptime。优先数改变的原则:1>进程每运行一个时间片后,其还需时间减1。2>进程每运行一个时间片,优先数减3。(4)为了能清楚地观察每个进程的调度过程,程序应将每个时间片内的进程的运行情况显示出来,包括正在运行,处于就绪状态和已经完成的进程的进程。(5)分析程序运行的结果,谈一下自己的认识。四、(1)用C语言实现对m个进程采用优先权进程调度算法(高度优先权调度)的调度。(2)分析程序运行的结果,谈一下自己的认识。2:实验代码如下:#include<>#include<>#include<>#include<>charsta[3][9]={"就绪状态","执行状态","完成状态"};structPCB{ intpid;//进程号 intpri;//进程优先数,其值越大的进程,对应的优先权越高 intptime;//进程运行还需要的时间};structPCBpcb[1024];//进程块pcb表示一个进程,并用结构体表示intflk[1024]={0};//记录进程状态voidinitpcb(intm)//初始化进程块,m为建立进程的个数{while(m){ m--;//进程坐标数 scanf("%d%d%d",&pcb[m].pid,&pcb[m].pri,&pcb[m].ptime); }}intsortpcb(intm)//对各进程排序{ intf[1]={-998};//默认最大优先权的进程 intj,i;for(j=0;j<m;j++)//查找优先权值最大的进程 { if(f[0]<pcb[j].pri)//默认进程的优先权小于第j个进程{ f[0]=pcb[j].pri;//当前默认优先权的值为坐标为j的进程 i=j;//j值赋值给i }}returni;//返回最大优先权的进程的坐标号}voidprint(intm)//打印出进程运行状态{inti; printf("进程号进程优先权进程还需时间状态\n"); for(i=0;i<m;i++) { printf("%4d%8d%12d%18s\n",pcb[i].pid,pcb[i].pri,pcb[i].ptime,sta[flk[i]]);//打印各进程的进程号,优先权,还需时间及运行状态 }}voidpcbrun(intp)//执行进程{ pcb[p].pri-=3;//每次运行后,对应的进程优先权减3 pcb[p].ptime-=1;//每次运行后,对应的进程还需时间减1}intmain(){intm,n,p;intc=0;printf("请输入要建立的进程数:");scanf("%
实验一 进程调度实验报告 来自淘豆网m.daumloan.com转载请标明出处.