




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、华北科技学院计算机系综合性实验实 验 报 告 课程名称 C操作系统 实验学期 至 学年 第 学期学生所在系部 计算机系 年级 专业班级 学生姓名SORRY,枪走火 学号 任课教师 实验成绩 计算机系制C操作系统课程综合性实验报告 开课实验室:基础六 2011年 5 月 20日实验题目进程调度算法设计一、实验目的通过对进程调度算法的模拟,进一步理解进程的基本概念,加深对进程运行状态和进程调度过程、调度算法的理解。二、设备与环境1. 硬件设备:PC机一台2. 软件环境:安装Windows操作系统或者Linux操作系统,并安装相关的程序开发环境,如C C+Java 等编程语言环境。三、实验内容(1)
2、用C/C+语言(或其它语言,如Java)实现对N个进程采用某种进程调度算法(如动态优先权优先)的调度。(2) 每个用来标识进程的进程控制块PCB可用结构来描述,包括以下字段: 进程标识数ID。 进程优先数PRIORITY,并规定优先数越大的进程,其优先权越高。 进程还需占用CPU时间CPUTIME。 进程进入ready 队列还需等待时间WAITT。 进程被阻塞时间BLOCKT。 进程周转时间ALLTIME。 进程状态标记STATE。 队列指针NEXT,用来将PCB排成队列。(3)为了清楚地观察每个进程的调度过程,程序应将每个时间片内的进程的情况显示出来,包括正在运行的进程,处于就绪队列中的进程
3、和处于阻塞队列中的进程。(4)分析程序运行的结果,谈一下自己的认识。四、实验结果及分析1.实验设计说明用C语言实现动态优先权优先进程调度算法设计。2.算法分析首先构造2个队列ready和block,将若干进程有序的插入block队列中,并使block队列中waitt时间最小的排在队首。如若block队列和ready队列不同时为空,那么每经过一个个时间片,使waitt减少1,当waitt时间减少为0时,将此进程调度到ready队列中,执行一个时间片,并显示block和ready队列中的进程情况。若block队列和ready队列同时为空,则进程调度完成。3.实验代码#include#include
4、#define null 0int n=0; /时间片typedef struct pcbint id;int priority;intcputime; int waitt; /还需等待时间(进入ready队列)int blockt; /在ready中阻塞的时间int alltime; /进程完成的总时间;int state; struct pcb *next; pcb,*Queuenode;typedef structQueuenode front;Queuenode rear;queue;void init(queue &q) q.rear=q.front=(Queuenode)mallo
5、c(sizeof(pcb);q.front-next=null;void inblock(queue &q,int id,int priority,int cputime,int waitt,int blockt,int alltime,int state) Queuenode p,mp,tp; p=(Queuenode)malloc(sizeof(pcb); p-id=id; p-priority=priority; p-cputime=cputime; p-waitt=waitt; p-blockt=blockt; p-alltime=alltime; p-state=state; p-n
6、ext=null; q.rear-next=p; q.rear=p;void del(queue &q) Queuenode p; if(q.front=q.rear) printf(队列为空,不能删除); p=q.front-next; q.front-next=p-next; if(q.rear=p) q.rear=q.front;free(p);void display(queue &q)/函数参数传值!Queuenode p;if(q.rear=q.front) printf(队列为空n);p=q.front-next;while(p!=null)printf(%-2d %-2d %-
7、2d %-2d %-2d %-2d %-2dn,p-id,p-priority,p-cputime,p-waitt,p-blockt,p-alltime,p-state);p=p-next;printf(n); void alldisplay(queue &q1,queue &q2)/每个时间片显示ready和block队列 printf(第%d个时间片n,n);printf(ready队列中的进程如下:n);printf(ID PRIORITY CPUTIME WAITT BLOCKT ALLTIME STATE n);display(q1);printf(n);printf(block队列
8、中的进程如下:n);printf(ID PRIORITY CPUTIME WAITT BLOCKT ALLTIME STATE n);display(q2);printf(n);printf(n); printf(n);void deploy(queue &q1,queue &q2)/调度block中首节点到队列ready; Queuenode p; void inready(queue &q,Queuenode &p); /孤立出q2中的首节点 p=q2.front-next; q2.front-next=p-next; if(q2.rear=p) q2.rear=q2.front;/ in
9、ready(q1,p); void inready(queue &q1,Queuenode &p)/p节点有序的插入ready队列首节点(PRIORITY 从大到小排列)Queuenode tp,mp; p-next=null; mp=q1.front; tp=q1.front-next; if(q1.rear=q1.front) q1.rear-next=p; q1.rear=p; while(tp!=null) if(p-priority=tp-priority) mp-next=p; p-next=tp; break; mp=tp;tp=tp-next; if(mp=q1.rear) q
10、1.rear-next=p; q1.rear=p;break; void run(queue &q1,queue &q2) Queuenode p,p2,tp; n+;/时间片加1 /block队列中进程变化 p2=q2.front-next; if(q2.rear!=q2.front) if(p2-waitt=0) deploy(q1,q2); tp=q2.front-next; while(tp!=null) tp-waitt-; tp=tp-next; if(q1.rear!=q1.front) /ready队列中阻塞进程的变化 if(q1.rear=q1.front) printf(队
11、列为空); /找到ready中的首节点 p=q1.front-next; while(p-next!=null)/注意WHILE是循环,if是条件跳转 p=p-next; p-priority+; p-blockt+; p-alltime+; p-state=0; /ready队列中正在运行进程的变化 /取出ready首节点 p=q1.front-next; q1.front-next=p-next; if(q1.rear=p)q1.rear=q1.front;/ p-cputime-; p-alltime+; p-state=1; p-priority-=3; if(p-cputime=0)
12、 free(p);/若进程结束,释放p节点,而不是删除ready头结点 else inready(q1,p); /否则将取出的首节点插回ready中 void main()queue block;queue ready; init(block);init(ready);inblock(block,1,5,4,2,0,0,0);inblock(block,2,4,3,3,0,0,0); inblock(block,3,6,2,5,0,0,0);inblock(block,4,7,5,7,0,0,0); while(ready.rear!=ready.front)|(block.rear!=block.front)alldisplay(ready,block);run(ready,block); alldisplay(ready,block); printf(恭喜!进程全部调度完成!n);3.实验结果图1.图2.4.实验结果分析 实验结果详细的列出了每个时间片block和ready队列中各个进程的情况。 通过图1可以看到,调度进程之前,ready和block队列
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年浙江省宁波市国际学校英语八下期中学业水平测试试题含答案
- 网络技术应用试题及答案
- 2025年物流行业绿色发展协议范本
- 2025年夫妻协议解除婚姻关系策划样本
- 2025年策划合作伙伴股权转让协议书样本
- 现代化设备与技术在人防工程中的应用
- 人防工程地下结构施工技术创新
- 资源配置效率提升促进经开区创新突破
- 精细化管理在油菜增产中的应用
- 理赔责任界定基础知识点归纳
- 1999年普通高等学校招生全国统一考试.文科数学试题及答案
- 国家开放大学2025年春《形势与政策》形考任务1-5和大作业参考答案
- 安全生产 规章制度和安全操作规程
- 河南省洛阳市伊川县2024-2025学年七年级下学期期中生物试题(含答案)
- 工人下班免责协议书
- 美术有趣的课件
- 健康活动:快乐生活的源泉
- 创业扶持政策对数字化转型的影响研究试题及答案
- 产后出血的观察及护理
- 2025-2030中国芦笋行业市场发展趋势与前景展望战略研究报告
- 港口安全AI大模型自主研发的关键技术与应用研究
评论
0/150
提交评论