实验一 进程调度.doc

实验一 进程调度.doc

ID:56777123

大小:28.50 KB

页数:3页

时间:2020-07-09

实验一 进程调度.doc_第1页
实验一 进程调度.doc_第2页
实验一 进程调度.doc_第3页
资源描述:

《实验一 进程调度.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验一进程调度1.目的和要求通过这次实验,理解进程调度的过程,进一步掌握进程状态的转变、进程调度的策略,进一步体会多道程序并发执行的特点,并分析具体的调度算法的特点,掌握对系统性能的评价方法。2.实验内容阅读教材《计算机操作系统》第二章和第三章,掌握进程管理及调度相关概念和原理。编写程序模拟实现进程的时间片轮转调度过程,模拟程序只对PCB进行相应的调度模拟操作,不需要实际程序。假设初始状态为:有n个进程处于就绪状态,有m个进程处于阻塞状态。采用时间片轮转调度算法进行调度(调度过程中,假设处于执行状态的进程不会阻塞),且每过t个时间片系统

2、释放资源,唤醒处于阻塞队列队首的进程。程序要求如下:1)按时间片顺序输出系统中进程的调度次序;2)计算CPU利用率。3.实验环境Windows操作系统、VC++6.0C语言4.实验提示用C语言实现提示:1)程序中进程可用PCB表示,其类型描述如下:structPCB_type{intpid;//进程名intstate;//进程状态2——表示“执行”状态1——表示“就绪”状态0——表示“阻塞”状态intcpu_time;//运行需要的CPU时间(需运行的时间片个数)}1)设置两个队列,将处于“就绪”状态的进程PCB挂在队列ready中;将

3、处于“阻塞”状态的进程PCB挂在队列blocked中。队列类型描述如下:structQueueNode{structPCB_typePCB;StructQueueNode*next;}并设全程量:structQueueNode*ready_head=NULL,//ready队列队首指针*ready_tail=NULL,//ready队列队尾指针*blocked_head=NULL,//blocked队列队首指针*blocked_tail=NULL;//blocked队列队尾指针3)设计子程序:start_state();//读入假设的数

4、据,设置系统初始状态dispath();//模拟调度calculate();//计算CPU利用率5.实验要求:1)上机前认真使用C语言编写好程序,采用VisualC++6.0作为编译环境;2)上机时独立调试程序3)根据具体实验要求,填写好实验报告(包括目的和要求、实验内容、实验环境、设计思想、源程序、实例运行结果、总结)。4)测试用数据:n=2m=3t=5ready_headblocked_headdispath()算法流程图:unuse_cpu++x++x==tblocked队首进程入ready队列队尾;x=0beginuse_cpu

5、=0x=0unuse_cpu=0ready队列不空或blocked队列不空ready队列不空pß取ready队首元素p->PCB.state置“运行”输出p->PCB.pidp->PCB.cpu_time--use_cpu++p->PCB.cpu_time>0p入ready队列队尾释放pend/*use_cpu中记录CPU运行时间/*unuse_cpu中记录CPU空闲时间否是是否是否是是否是

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。