收藏 分享(赏)

进程调度模拟.doc

上传人:精品资料 文档编号:10053855 上传时间:2019-10-02 格式:DOC 页数:6 大小:111KB
下载 相关 举报
进程调度模拟.doc_第1页
第1页 / 共6页
进程调度模拟.doc_第2页
第2页 / 共6页
进程调度模拟.doc_第3页
第3页 / 共6页
进程调度模拟.doc_第4页
第4页 / 共6页
进程调度模拟.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、 1 / 6洛 阳 理 工 学 院 实 验 报 告系 别 计 算 机 系 班 级 学 号 姓 名课 程 名 称 计算机操作系统 实 验 日 期 2012/10/24实 验 名 称 进程调度 成 绩实 验 目 的 :通 过 本 次 实 验 , 加 深 对 进 程 概 念 的 理 解 , 进 一 步 掌 握 进 程 状 态 的 转 变 及 进 程调 度 策 略 。实 验 条 件 :微 计 一 台 、 Microsoft Visual Studio 2008实 验 原 理 :设 计 程 序 模 拟 进 程 的 时 间 片 轮 转 法 调 度 过 程 。 假 设 初 始 状 态 为 : 有 ready

2、个 进 程 处 于 就 绪 状 态 , 有 blocked 个 进 程 处 于 阻 塞 状 态 。 采 用 轮 转 法 进 程 调 度 算法 进 行 调 度 (调 度 过 程 中 , 假 设 处 于 执 行 状 态 的 进 程 不 会 阻 塞 ), 且 每 过counter 个 时 间 片 , 唤 醒 处 于 阻 塞 队 列 队 首 的 进 程 。实 验 内 容 :#include“Common.h“#include#include void createq(struct Queue *queue); /创建队列void enterq(struct Queue *q, struct Queue

3、Node x); /x结点入队列qstruct QueueNode deleteq(struct Queue *q); /删除队首结点void dispatch(struct Queue *rq,struct Queue *bq, struct Queue*runq,int counter ); /模拟调度函数int Init();struct Queue *rq=NULL, *bq=NULL, *runq=NULL ; /ready队列、blocked队列、run队列 void main()int interval=0;/唤醒处于阻塞队列队首的进程时间间隔interval=Init();pr

4、intf(“进程调度开始n“);dispatch(rq,bq,runq,interval);2 / 6printf(“进程调度结束n“);getchar();getchar();/创建进程队列(运行、就绪、阻塞)void createq(struct Queue *queue)*queue=(struct Queue*)malloc(sizeof(struct Queue);(*queue)-head=(*queue)-tail=(struct QueueNode*)malloc(sizeof(struct QueueNode);void enterq(struct Queue *q, str

5、uct QueueNode x)if(q=NULL)return;struct QueueNode *temp=(struct QueueNode*)malloc(sizeof(struct QueueNode);temp-PCB=x.PCB;q-tail-next=temp;q-tail=temp;struct QueueNode deleteq(struct Queue *q)struct QueueNode deleteQueueNode,*temp;if(q-head!=q-tail)temp=q-head-next;if(q-head-next!=q-tail)q-head-next

6、=temp-next;elseq-tail=q-head;deleteQueueNode.PCB=temp-PCB;free(temp);return deleteQueueNode;3 / 6int Init()struct QueueNode queueNode;int ready=0,blocked=0,item=0;createq(/创建空队列createq(createq(printf(“创建就绪进程队列-输入就绪进程个数:“);scanf(“%d“,while(item+输入阻塞进程个数“);scanf(“%d“,item=0;while(item+head!=rq-tail|bq

7、-head!=bq-tail)if(rq-head!=rq-tail)4 / 6queueNode=deleteq(rq);enterq(runq,queueNode);printf(“就绪进程%c进入运行队列n“,queueNode.PCB.name);runq-head-next-PCB.state=2;printf(“运行进程名:%cn“,runq-head-next-PCB.name);runq-head-next-PCB.cpu_time-;if(runq-head-next-PCB.cpu_time0)queueNode=deleteq(runq);queueNode.PCB.st

8、ate=1;/就绪enterq(rq,queueNode);printf(“运行进程%c进入就绪队列n“,queueNode.PCB.name);elsequeueNode=deleteq(runq);printf(“进程%c完成n“,queueNode.PCB.name);count+;if(count=counterqueueNode.PCB.state=1;/就绪enterq(rq,queueNode);printf(“阻塞进程%c进入就绪进程队列n“,queueNode.PCB.name);count=0;/ Common.h struct PCB_type char name ; /进程名int state ; /进程状态/ 2表示“执行”状态/ 1表示“就绪”状态/ 0表示“阻塞”状态int cpu_time ; /运行需要的CPU时间(需运行的时间片个数);struct QueueNode5 / 6struct PCB_type PCB;struct QueueNode *next;struct Queue struct QueueNode *head, *tail;原始数据纪录:输入数据:输出数据:6 / 6实 验 总 结 :预 期 的 输 出 : ababa bacba cadcd dededd 实 际 输 出 数 据 与 预 期 的 输 出 相 同 。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报