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

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

ID:49714132

大小:173.50 KB

页数:13页

时间:2020-03-02

进程调度实验实验报告.doc_第1页
进程调度实验实验报告.doc_第2页
进程调度实验实验报告.doc_第3页
进程调度实验实验报告.doc_第4页
进程调度实验实验报告.doc_第5页
资源描述:

《进程调度实验实验报告.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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。