天津理工大学操作系统实验报告实验一
天津理工大学 操作系统实验报告 处理机调度算法的实现
实验报告
学院(系)名称:计算机与通信工程学院
第1页 共5页
天津理工大学 操作系统实验报告 处理机调度算法的实现
【实验过程记录(源程序、测试用例、测试结果及心得体会等)】
设计思想:
1. 模拟单CPU系统时间片切换、进程切换。
2. 使用优先队列,让优先级高的进程位于队列顶端。
在每次时钟周期时,从优先队列队首取出优先级最高的进程,并使其运行一个时钟周期,然后将其优先级减1,已运行时间加1。然后判断程序是否完成,如果未完成,则重新加入优先队列,参与时钟周期。
数据结构:
使用优先队列,以获得优先级最高程序。 源代码:
#include <cstdio> #include <queue> using namespace std;
// 进程控制块PCB struct PCB { unsigned int pid; //进程id unsigned int priority; //进程优先级 unsigned int claimTime;
//需要运行时间 unsigned int runTime; //已经运行时间
//构造函数
PCB(unsigned int id, unsigned int p, unsigned int ct) { pid=id; priority=p; claimTime=ct; runTime=0;
}
//运行当前进程一个时钟周期,并使进程优先级减1,已运行时间加1 void run() { runTime++;
if(priority>0)priority--; }
//判断进程是否完成 bool isFinished() { if(claimTime==runTime)
return true; else return false;
}
第2页 共5页
天津理工大学 操作系统实验报告 处理机调度算法的实现
};
//重载<运算符,以使用STL中的priority_queue bool operator <(const PCB& p)const { }
if(priority!=p.priority)
return priority<p.priority; //优先级相同的话快完成的任务先执行
return claimTime-runTime<p.claimTime-p.runTime;
//比较优先级
else
int main(int argc, char **argv) {
}
int clock=0;
priority_queue<PCB> q; for(int i=0; i<5; i++) { }
while(!q.empty()) { //模拟单CPU }
printf("程序结束\n"); return 0;
printf("当前时钟%2d\t", clock++); PCB t = q.top(); q.pop();
printf("pid = %u进程运行, 优先级 = %u, 已运行时间 = %u\n", t.pid, t.run();
printf("执行过后:\tpid = %u, 优先级 = %u, 已运行时间 = %u\n", t.pid, if(!t.isFinished())
q.push(t);
printf("pid=%d进程结束\n", t.pid); else int p, t;
printf("请输入pid=%u的进程的优先级(非负数):\n", i); scanf("%u", &p);
printf("请输入pid=%u的进程的要求运行时间(非负数):\n", i); scanf("%u", &t);
printf("pid = %u, 优先级 = %u, 要求运行时间 = %u\n\n", i, p, t); q.push(PCB(i, p, t));
//优先队列
t.priority, t.runTime);
t.priority, t.runTime);
第3页 共5页
天津理工大学 操作系统实验报告 处理机调度算法的实现
执行结果:
第4页 共5页
天津理工大学 操作系统实验报告 处理机调度算法的实现
实验问题:
1. 在进程优先级相同时,调度结果不确定。
原因:在优先级相同时,未进行相关处理。
解决:添加优先级相同时判断逻辑,快结束的进程先调度
2. 程序陷入死循环。
原因:当忘记判断进程是否结束就加入队列。
解决:判断进程是否结束,如果未结束,则继续参与调度,否则不参与。
实验总结:
要根据调度算法,选择合适的数据结构,以实现相应的调度程序。在调度时,应明确:哪个程序被调度,调度后优先级有什么变化,该进程是否还参与调度等问题。
第5页 共5页
…… 此处隐藏:110字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [小学教育]四年级综合实践活动课《衣物的洗涤》教
- [小学教育]2014半年工作总结怎么写
- [小学教育]20世纪外国文学专题综合试题及答案
- [小学教育]TS_1循环使用催化丙烯环氧化反应研究
- [小学教育]最实用的考勤签到表(上下班签到表)
- [小学教育]气候与生态建筑——以新疆民居为例
- [小学教育]二人以上股东有限责任公司章程参考样本
- [小学教育]2014届第一轮复习资料4.1,3美好生活的
- [小学教育]土方开挖、降水方案
- [小学教育]手绘儿童绘本《秋天的图画》(蜡笔)
- [小学教育]2002级硕士研究生卫生统计学考试试题
- [小学教育]环保装备重点发展目录
- [小学教育]金蝶K3合并报表培训教材
- [小学教育]岩浆岩试题及参考答案
- [小学教育]知之深爱之切学习心得
- [小学教育]第十二章 蛋白质的生物合成
- [小学教育]Chapter 2-3 Solid structure and basi
- [小学教育]市政道路雨季专项施工方案
- [小学教育]中国海洋大学2012-2013学年第二学期天
- [小学教育]教育心理学第3章-学习迁移
- 浅谈深化国企改革中加强党管企业
- 2006年中国病理生理学会学术活动安排
- 设计投标工作大纲
- 基于ARP的网络攻击与防御
- 2016届湖北省七市(州)教科研协作体高三
- Google_学术搜索及其检索技巧
- 2019-2020学年七年级地理下册6.3美洲教
- 城市道路可研报告
- 【名师指津】2012高考英语 写作基础技
- 6级知识点培训北京师范大学《幼儿智趣
- 注册会计师会计知识点:金融资产
- 新安装 500 kV 变压器介损分析与判断
- PS2模拟器PCSX2设置及使用教程.
- 医院药事管理与药剂科管理组织机构
- {PPT背景素材}丹巴的醉人美景,免费,一
- NAS网络存储应用解决方案
- 青海省西宁市六年级上学期数学期末考试
- 测量管理体系手册依据ISO10012:2003
- 洞子小学培养骨干教师工作计划
- 浅谈《牛津初中英语》的教材特点及教学




