ImageVerifierCode 换一换
格式:DOC , 页数:6 ,大小:259.50KB ,
资源ID:13081336      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13081336.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(天津理工大学操作系统实验报告实验一Word格式文档下载.doc)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

天津理工大学操作系统实验报告实验一Word格式文档下载.doc

1、0668036实验时间2012 年12月3日 第3、4节实验地点软件实验室7-216批改意见成绩教师签字: 实验内容:1 设定系统中有五个进程,每一个进程用一个进程控制块表示。2 输入每个进程的“优先数”和“要求运行时间”。3 为了调度方便,将五个进程按给定的优先数从大到小连成就绪队列。用一单元指出队列首进程,用指针指出队列的连接情况。4 处理机调度总是选队首进程运行。采用动态优先数算法,进程每运行一次优先数就减“1”,同时将运行时间减“1”。5 若某进程运行时间为零,则将其状态置为“结束”,且退出队列。6 运行所设计程序,显示或打印逐次被选中进程的进程名,以及进程控制块的动态变化过程。实验要

2、求:1 详细描述实验设计思想、程序结构及各模块设计思路;2 详细描述程序所用数据结构及算法;3 明确给出测试用例和实验结果;4 为增加程序可读性,在程序中进行适当注释说明;5 认真进行实验总结,包括:设计中遇到的问题、解决方法与收获等;6 实验报告撰写要求结构清晰、描述准确逻辑性强;7 实验过程中,同学之间可以进行讨论互相提高,但绝对禁止抄袭。【实验过程记录(源程序、测试用例、测试结果及心得体会等)】设计思想:1. 模拟单CPU系统时间片切换、进程切换。2. 使用优先队列,让优先级高的进程位于队列顶端。在每次时钟周期时,从优先队列队首取出优先级最高的进程,并使其运行一个时钟周期,然后将其优先级

3、减1,已运行时间加1。然后判断程序是否完成,如果未完成,则重新加入优先队列,参与时钟周期。数据结构:使用优先队列,以获得优先级最高程序。源代码:#include queueusing namespace std;/ 进程控制块PCBstruct PCB unsigned int pid;/进程idunsigned int priority;/进程优先级unsigned int claimTime;/需要运行时间unsigned int runTime;/已经运行时间/构造函数PCB(unsigned int id, unsigned int p, unsigned int ct) pid=id

4、;priority=p;claimTime=ct;runTime=0;/运行当前进程一个时钟周期,并使进程优先级减1,已运行时间加1void run() runTime+;if(priority0)priority-;/判断进程是否完成bool isFinished() if(claimTime=runTime)return true;else return false;/重载运算符,以使用STL中的priority_queuebool operator (const PCB& p)const if(priority!=p.priority)return priorityp.priority;

5、/比较优先级else/优先级相同的话快完成的任务先执行return claimTime-runTimep.claimTime-p.runTime;int main(int argc, char *argv) int clock=0;priority_queue q;/优先队列for(int i=0; i5; i+) int p, t;printf(请输入pid=%u的进程的优先级(非负数):n, i);scanf(%u, &p);请输入pid=%u的进程的要求运行时间(非负数):t);pid = %u, 优先级 = %u, 要求运行时间 = %unn, i, p, t);q.push(PCB(

6、i, p, t);while(!q.empty() /模拟单CPU当前时钟%2dt, clock+);PCB t = q.top();q.pop();pid = %u进程运行, 优先级 = %u, 已运行时间 = %un, t.pid, t.priority, t.runTime);t.run();执行过后:tpid = %u, 优先级 = %u, 已运行时间 = %unif(!t.isFinished()q.push(t);printf(pid=%d进程结束n, t.pid);printf(程序结束n);return 0;测试用例:进程pid优先级需要运行时间431256执行结果:实验问题:1. 在进程优先级相同时,调度结果不确定。原因:在优先级相同时,未进行相关处理。解决:添加优先级相同时判断逻辑,快结束的进程先调度2. 程序陷入死循环。当忘记判断进程是否结束就加入队列。判断进程是否结束,如果未结束,则继续参与调度,否则不参与。实验总结:要根据调度算法,选择合适的数据结构,以实现相应的调度程序。在调度时,应明确:哪个程序被调度,调度后优先级有什么变化,该进程是否还参与调度等问题。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1