下载此文档

进程调度实验【实验报告】.docx


文档分类:IT计算机 | 页数:约12页 举报非法文档有奖
1/12
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/12 下载此文档
文档列表 文档介绍
进程调度实验【实验报告】.docx实验一进程调度实验专业:信息管理与信息系统学号:2014******姓名:陈*实验日期:2016年11月11日一、 实验目的通过本实验,采用动态优先权优先的调度算法编写和调试一个简单的进程调度程序,加深理解了有关进程控制块、进程队列的概念,并体会了优先权调度算法的具体实施办法。二、 实验要求用高级语言编写和调试一个进程调度程序,、 实验方法内容算法设计思路(流程图)开始埔入所有进程算法中用到的数据结构(1)首先定义一个结构体,用以保存一个进程的各种信息,最后一个指针便于将所有进程形成一个链表typedefstructpcb{intid;intarriveTime; 〃到达时间intpriority;intcpuTime;intallTime;intstartBlock;intblockTime;charstate;structpcb*next;}PCB;(2)接着建立一个链表存储所有进程,以结构体PCB为节点(头节点为空节点,从第二个节点开始存储数据)。链表建立过程如下:inti=0;PCB*head,*pl,*p2;head=(PCB*)malloc(sizeof(PCB));〃创建链表头p2=head;〃三个进程for(i=0;iv3;i++){pl=(PCB*)malloc(sizeof(PCB));〃设置进程的初始状态,各个数据已经保存在对应的各个数组中pl->id=pcld[i];p1->priority=priority[i];pl->cpuTime=cpuTime[i];pl->allTime=allTimefi];pl->startBlock=startBlock[i];pl->blockTime=blockTime[i];pl->state=,W"〃初始状态为就绪p2->next=pl;p2=pl;}p2->next=NULL;//表尾指针设为空指针,表示链表结束主要模块(函数名)如下:(1)创建初始队列,用链表存储PCB*createLink(){};输出链表中所有进程的状态voidprintLink(PCB*head,inttime);判断是否所有进程都已完成intisFinish(PCB*head);判断是否所有未完成的进程都处于阻塞状态intisBlock(PCB*head);获得当前时刻优先权最高且处于就绪状态的进程PCB*getHighPriority(PCB*head);(6)运行(调度函数,在这里展示所有代码)voidrun(PCB*head)(};所有代码如下:#include<>#include<>〃三个进程的初始状态intpcldfl={0,1,2};intpriority[1= {6,8,5);intcpuTime[]= {0,0,0);intallTime[]= {7,7,6};intstartBlockf]=(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,*pl,*p2;head=(PCB*)malloc(sizeof(PCB));〃创建链表头p2=head;for(i=0;i<3;i++){pl=(PCB*)malloc(sizeof(PCB));pl->arriveTime=i;〃进程到达时间为输入时间〃设置进程的初始状态pl->id=pcld[i];pl->priority=priority[i];pl->cpuTime=cpuTime[i];pl->allTime=allTimefi];pl->startBlock=startBlockfi];pl->blockTime=blockTime[i];pl->state=W;〃初始状态为就绪wp2->next=pl;p2=pl;}p2->next=NULL;//表尾指针设为空指针,表示链表结束returnhead;}〃输出所有队列中所有进程的状态voidprintLink(PCB*hcad,inttimc){printf(H当前时刻为:%d\n",time);printf("IDPRIORITYCPUTIMEALLTIMESTARTBLOCKBLOCKTIMESTATE\nH);PCB*pl=head->next;while(pl!=NULL){printf("%d%

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

非法内容举报中心
文档信息
  • 页数12
  • 收藏数0 收藏
  • 顶次数0
  • 上传人sssmppp
  • 文件大小62 KB
  • 时间2020-08-12