版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、武汉轻工大学数学与计算机学院操作系统实验报告题 目: 进程调度 专 业: 数学与计算机学院 班 级: 计算机类1303班 学 号: 1305110050 姓 名: 刘文斌 指导老师: 黄川 2015年05月26日1、目的和要求通过这次实验,理解进程调度的过程,进一步掌握进程状态的转变、进程调度的策略,进一步体会多道程序并发执行的特点,并分析具体的调度算法的特点,掌握对系统性能的评价方法。2、实验内容阅读教材计算机操作系统第二章和第三章,掌握进程管理及调度相关概念和原理。编写程序模拟实现进程的轮转法调度过程,模拟程序只对PCB进行相应的调度模拟操作,不需要实际程序。假设初始状态为:有n个进程处于
2、就绪状态,有m个进程处于阻塞状态。采用轮转法进程调度算法进行调度(调度过程中,假设处于执行状态的进程不会阻塞),且每过t个时间片系统释放资源,唤醒处于阻塞队列队首的进程。程序要求如下:1)输出系统中进程的调度次序;2)计算CPU利用率。3、实验环境Windows操作系统、VC+6.0C语言4、 设计思想:unuse_cpu+x+x=tblocked队首进程入ready队列队尾;x=0beginuse_cpu=0x=0unuse_cpu=0ready队列不空或blocked队列不空ready队列不空pß 取ready队首元素p->PCB.state置“运行”输出p->PCB
3、.namep->PCB.cpu_time-use_cpu+p->PCB.cpu_time>0p入ready队列队尾释放pend /*use_cpu中记录CPU 运行时间 /*unuse_cpu中记录CPU空闲时间 否 是是 否 是 否 是 是5、 源程序#include<stdio.h>#include<stdlib.h>struct PCB_type char name ; /进程名 int state ; /进程状态 int cpu_time ;/运行需要的CPU时间(需运行的时间片个数);struct QueueNode struct PCB_t
4、ype PCB; struct QueueNode *next;struct QueueNode*ready_head=NULL, /就绪队列队首指针*ready_tail=NULL , /就绪队列队尾指针*blocked_head=NULL, /阻塞队列队首指针*blocked_tail=NULL; /阻塞队列队尾指针 int inuse_cpu,outuse_cpu; void start_state() /读入假设的数据,设置系统初始状态int n,m,i;struct QueueNode *p,*q;printf("假设处于就绪状态的进程数n为: n");scanf
5、("%d",&n);printf("假设处于阻塞状态的进程数m为: n");scanf("%d",&m);p=(struct QueueNode *)malloc(sizeof(struct QueueNode); p->next=NULL;ready_head=ready_tail=p;for(i=1;i<=n;i+)p=(struct QueueNode *)malloc(sizeof(struct QueueNode);p->next=NULL;p->PCB.state=1;printf(
6、"请输入就绪程序%d的名称和CPU时间: n",i);scanf("%d%d",&p->PCB.name,&p->PCB.cpu_time);ready_tail->next=p;ready_tail=p;q=(struct QueueNode *)malloc(sizeof(struct QueueNode);q->next=NULL;blocked_head=blocked_tail=q;for(i=1;i<=m;i+)q=(struct QueueNode *)malloc(sizeof(struct
7、QueueNode);q->next=NULL;q->PCB.state=0;printf("请输入阻塞进程%d的名称和CPU时间: n",i);scanf("%d%d",&q->PCB.name,&q->PCB.cpu_time);blocked_tail->next=q;blocked_tail=q;printf("n当前处于就绪状态的进程有:n");p=ready_head->next;i=1;while(p)printf("进程%d的名称和状态和CPU时间:%5d%
8、5d%5dn",i,p->PCB.name,p->PCB.state,p->PCB.cpu_time);p=p->next;i+;void dispath() /模拟调度int a=0,t;inuse_cpu=0;outuse_cpu=0;printf("请输入时间片t:");scanf("%d",&t);printf("开始调度:n");while(ready_head!=ready_tail|blocked_head!=blocked_tail)struct QueueNode *p,*q
9、;if(ready_head!=ready_tail)p=ready_head->next;ready_head->next=p->next;p->next=NULL;if(ready_head->next=NULL)ready_tail=ready_head;p->PCB.state=2;printf("t进程%d调度中",p->PCB.name);inuse_cpu+;a+;p->PCB.cpu_time-;if(p->PCB.cpu_time)ready_tail->next=p;ready_tail=p;e
10、lseprintf("t进程%d完成调度! ",p->PCB.name);free(p);elseoutuse_cpu+;a+;printf("t空闲一个时间片");if(a=t&&blocked_head!=blocked_tail)q=blocked_head->next;blocked_head->next=q->next;q->next=NULL;if(blocked_head->next=NULL)blocked_tail=blocked_head;ready_tail->next=q;ready_tail=q;a=0;void calculate() /计算CPU利用率printf("nCPU的利用率为:%.2fn",(float)inuse_cpu/(inuse_cpu+outuse_cpu);void main()start_state();dispath(); calculate();6、 实例运行结果7、 总结该实验利用进程调度中的优先级算法调度进程,开始给每一个进程设定一个优先级数,对于优先级高的进程先调度,优先级低的进程后调度,在调度一个进程时,其他进程将处于就绪态,而正在被调度的进程应处于运行态。一开始在做
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026云南财经职业学院第一批招聘“双师型”教师3人笔试备考题库及答案解析
- 2026年内蒙古机电职业技术学院单招职业技能考试模拟试题含详细答案解析
- 2026中国资源循环集团塑料再生有限公司招聘16人笔试备考题库及答案解析
- 2026江西吉安幼儿师范高等专科学校面向社会招聘编外教师及工作人员14人笔试备考试题及答案解析
- 2026年郑州工业应用技术学院单招职业技能考试参考题库含详细答案解析
- 2026年中国联通宿州市埇桥区分公司招聘笔试备考题库及答案解析
- 2026南京医科大学招聘具有博士后经历的事业编制工作人员23人(第一批)笔试备考试题及答案解析
- 2026湖南高速集团旗下公司招聘103人笔试备考试题及答案解析
- 2026年郴州职业技术学院单招综合素质考试参考题库含详细答案解析
- 2026天津市地质矿产勘查开发局所属事业单位招聘19人 (含高层次人才)笔试备考题库及答案解析
- 锰及化合物职业健康安全防护须知
- 2026年北京市房山区公安招聘辅警考试试题及答案
- 生死观与死亡教育
- 中建物资管理手册
- 嘉里大通物流公司员工行为规范指南
- 快易冷储罐知识培训课件
- 新能源材料与器件制备技术 课件 第5章 锂离子电池正极材料
- 消防监控证试题及答案
- 棋牌室转让合同协议书
- 吊车租赁合同范本
- 护理团体标准解读-成人氧气吸入疗法护理
评论
0/150
提交评论