资源描述:
《进程调度实验实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.实验一进程调度实验专业:信息管理与信息系统学号:2014******姓名:陈*实验日期:2016年11月11日范文..实验目的通过本实验,采用动态优先权优先的调度算法编写和调试一个简单的进程调度程序,加深理解了有关进程控制块、进程队列的概念,并体会了优先权调度算法的具体实施办法。一、实验要求用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解.三、实验方法内容1.算法设计思路(流程图)范文..范文..1.算法中用到的数据结构(1)首先定义一个结构体,用以保存一个进程的各种信息,最后一个指针便于将所有进程形成一个链表typedefstructpcb{intid;int
2、arriveTime;//到达时间intpriority;intcpuTime;intallTime;intstartBlock;intblockTime;charstate;structpcb*next;}PCB;(2)接着建立一个链表存储所有进程,以结构体PCB为节点(头节点为空节点,从第二个节点开始存储数据)。链表建立过程如下:inti=0;PCB*head,*p1,*p2;head=(PCB*)malloc(sizeof(PCB));//创建链表头p2=head;//三个进程for(i=0;i<3;i++){p1=(PCB*)malloc(sizeof(PCB));//设置进程的初始
3、状态,各个数据已经保存在对应的各个数组中p1->id=pcId[i];p1->priority=priority[i];p1->cpuTime=cpuTime[i];p1->allTime=allTime[i];p1->startBlock=startBlock[i];p1->blockTime=blockTime[i];p1->state='W';//初始状态为就绪p2->next=p1;p2=p1;}p2->next=NULL;//表尾指针设为空指针,表示链表结束2.主要模块(函数名)如下:(1)创建初始队列,用链表存储范文..PCB*createLink(){};(2)输出链表中所有进
4、程的状态voidprintLink(PCB*head,inttime);(3)判断是否所有进程都已完成intisFinish(PCB*head);(4)判断是否所有未完成的进程都处于阻塞状态intisBlock(PCB*head);(5)获得当前时刻优先权最高且处于就绪状态的进程PCB*getHighPriority(PCB*head);(6)运行(调度函数,在这里展示所有代码)voidrun(PCB*head){};所有代码如下:#include#include//三个进程的初始状态intpcId[]={0,1,2};intpriority[]={6,
5、8,5};intcpuTime[]={0,0,0};intallTime[]={7,7,6};intstartBlock[]={6,4,2};intblockTime[]={3,8,6};typedefstructpcb{intid;intarriveTime;//到达时间intpriority;intcpuTime;intallTime;intstartBlock;intblockTime;charstate;structpcb*next;}PCB;//创建初始队列,用链表存储PCB*createLink(){//intpcNum=0;//进程个数inti=0;范文..PCB*head,*
6、p1,*p2;head=(PCB*)malloc(sizeof(PCB));//创建链表头p2=head;for(i=0;i<3;i++){p1=(PCB*)malloc(sizeof(PCB));p1->arriveTime=i;//进程到达时间为输入时间//设置进程的初始状态p1->id=pcId[i];p1->priority=priority[i];p1->cpuTime=cpuTime[i];p1->allTime=allTime[i];p1->startBlock=startBlock[i];p1->blockTime=blockTime[i];p1->state='W';//初
7、始状态为就绪wp2->next=p1;p2=p1;}p2->next=NULL;//表尾指针设为空指针,表示链表结束returnhead;}//输出所有队列中所有进程的状态voidprintLink(PCB*head,inttime){printf("当前时刻为:%d",time);printf("IDPRIORITYCPUTIMEALLTIMESTARTBLOCKBLOCKTIMESTATE");P