下载此文档

进程调度实验实验报告.doc


文档分类:IT计算机 | 页数:约13页 举报非法文档有奖
1/13
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/13 下载此文档
文档列表 文档介绍
实验一进程调度实验专业:信息管理与信息系统学号:2014******:*实验日期:2016年11月11日实验目的通过本实验,采用动态优先权优先的调度算法编写和调试一个简单的进程调度程序,加深理解了有关进程控制块、进程队列的概念,并体会了优先权调度算法的具体实施办法。实验要求用高级语言编写和调试一个进程调度程序,、实验方法容算法设计思路(流程图)算法中用到的数据结构(1)首先定义一个结构体,用以保存一个进程的各种信息,最后一个指针便于将所有进程形成一个链表typedefstructpcb{intid;intarriveTime;//到达时间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)); //设置进程的初始状态,各个数据已经保存在对应的各个数组中 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;//表尾指针设为空指针,表示链表结束主要模块(函数名)如下:创建初始队列,用链表存储PCB*createLink(){};(2)输出链表中所有进程的状态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,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(){ //um=0;//进程个数 inti=0; PCB*head,*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';//初始状态为就绪w p2->next=p1; p2=p1; } p2->next=NULL;//表尾指针设为空指针,表示链表结束 returnhead;}//输出所有队列中所有进程的状态voidprintLink(PCB*head,inttime){ printf("当前时刻为:%d\n",time); printf("IDPRIORITYCPUTIMEALLTIMESTARTBLOCKBLOCKTIMESTAT

进程调度实验实验报告 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数13
  • 收藏数0 收藏
  • 顶次数0
  • 上传人tswng35
  • 文件大小174 KB
  • 时间2020-07-28