教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 小学教育 >

天津理工大学操作系统实验报告实验一

来源:网络收集 时间:2026-08-24
导读: 天津理工大学 操作系统实验报告 处理机调度算法的实现 实验报告 学院(系)名称:计算机与通信工程学院 第1页 共5页 天津理工大学 操作系统实验报告 处理机调度算法的实现 【实验过程记录(源程序、测试用例、测试结果及心得体会等)】 设计思想: 1. 模拟单

天津理工大学 操作系统实验报告 处理机调度算法的实现

实验报告

学院(系)名称:计算机与通信工程学院

第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字,全部文档内容请下载后查看。喜欢就下载吧 ……
天津理工大学操作系统实验报告实验一.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/42126.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)