操作系统实验报告(共32页).doc





《操作系统实验报告(共32页).doc》由会员分享,可在线阅读,更多相关《操作系统实验报告(共32页).doc(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上操作系统实验报告 学生学院 计算机学院 专业班级 计算机科学与技术3班 学 号 学生姓名 林虹 指导教师 丁国芳 2015 年 12 月 15 日目录1 实验一 进程调度 12 实验二 银行家算法 163 实验三 动态分区分配方式的模拟 204 实验四 仿真各种磁盘调度算法 .26实验一 进程调度1. 实验目的编写并调试一个模拟的进程调度程序,分别采用“短进程优先”、“时间片轮转”、“高响应比优先”调度算法对随机产生的五个进程进行调度,并比较算法的平均周转时间。以加深对进程的概念及进程调度算法的理解。2. 实验要求1. 每个进程由一个进程控制块( PCB)表示,进程控
2、制块可以包含如下信息:进程名、优先数(响应比)、到达时间、需要运行时间(进程的长度)、已运行时间、进程状态等等(可以根据需要自己设定)。2. 由程序自动生成进程(包括需要的数据,要注意数据的合理范围),第一个进程到达时间从0开始,其余进程到达时间随机产生。 3. 采用时间片轮转调度算法时,进程的运行时间以时间片为单位进行计算。 4. 每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。 5. 每进行一次调度,程序都要输出一次运行结果:正在运行的进程、就绪队列中的进程、完成的进程以及各个进程的 PCB,以便进行检查。6. 最后计算各调度算法的平均周转
3、时间,并进行比较、分析。3. 实验内容a.算法原理(1)短进程优先调度算法“短进程优先”调度算法的基本思想是把CPU分配给就绪队列中需要时间最短的进程。(2)时间片轮转算法将系统中所有的就绪进程按照FCFS原则,排成一个。每次调度时将CPU分派给队首进程,让其执行一个时间片。时间片的长度从几个ms到几百ms。在一个时间片结束时,发生。调度程序据此暂停当前进程的执行,将其送到就绪的末尾,并通过执行当前的队首进程。进程可以未使用完一个时间片,就出让CPU。(3)高响应比优先算法HRRN调度策略同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行。每个作业完成后要
4、打印该作业的开始运行时刻、完成时刻、周转时间和带权周转时间,这一组作业完成后要计算并打印这组作业的平均周转时间、带权平均周转时间。b.程序流程图c.重要数据结构d.各程序说明及关系1. void input() 输入进程函数2. void print() 打印进程函数3.int main() 主函数调用4.各函数代码void SJF() 短进程优先函数e运行结果截图void RR() 短进程优先函数运行结果截图void HRRN() 高响应比优先函数程序运行结果4. 结果分析与实验小结作业调度本质与进程调度类似,但是多道的话,就要多考虑空间的容量了。单道的情况就不作分析了,对于多道调度,要考虑
5、清楚,什么时候能够接纳新的作业进来;对于给定的空间来说,一次能让作业同时执行的数量应该是多少;根据算法,应该按照怎么样的先后顺序选择等待的作业逐步分析后,对于非抢占的CPU,一旦作业进入了执行状态,它的结束时间也就定了下来,一旦有作业结束,就会释放空间,释放之后就能立即选择新的作业进来。根据不同算法,对等待队列也有不同的排序结果,无论怎样,都按先后顺序放入队列中,所以每次选择的时候,都要遍历一遍所有等待中的进程,如果这个作业满足空间需求,则放入CPU中执行,同时更新结束时间,否则则跳过这个作业,判断下一个作业,直到询问完所有等待的作业为止。不断重复上面的步骤,直到所有的作业都执行完所以模拟的时
6、候,分别开了一个运行队列和一个等待队列,运行队列作为判断有哪个作业已经执行结束。通过这个实验,对操作系统的作业调度已经有了更深一层的理解了,望以后能再接再厉。实验二 银行家算法1.实验目的用银行家算法避免死锁,实现系统合理分配资源,加深对进程同步及死锁理解。2.实验要求1. 假定系统有3类资源A(10个)、B(15个)、C(12个),系有5个进程并发执行,进程调度采用时间片轮转调度算法。2. 每个进程由一个进程控制块( PCB)表示,进程控制块可以包含如下信息:进程名、需要的资源总数、已分配的资源数、进程状态。3. 由程序自动生成进程(包括需要的数据,要注意数据的合理范围)。4. 进程在运行过
7、程中会随机申请资源(随机生成请求的资源数),如果达到最大需求,表示该进程可以完成;如果没有达到最大需求,则运行一个时间片后,调度其它进程运行。资源分配采用银行家算法来避免死锁。5. 每个进程的状态可以是就绪 W(Wait)、运行R(Run)、阻塞B(Block)或完成F(Finish)状态之一。 6. 每进行一次调度,程序都要输出一次运行结果:正在运行的进程、就绪队列中的进程、阻塞队列中的进程、完成的进程以及各个进程的 PCB,以便进行检查。3.实验内容a.算法原理操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最
8、大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程本次申请的资源数是否超过了该资源所剩余的总量。若超过则拒绝分配资源,若能满足则按当前的申请量分配资源,否则也要推迟分配b.程序流程图 c.重要数据结构d.各函数实现1.void input() 随机生成进程函数2.void print() pcb打印函数3.void Safe() 安全性检查算法4.void Bankalgorithm() 5.int main() 主函数e.运行结果截图4.结果分析与小结多个进程同时运行时,系统根据各类系统资源的最大需求和各类系统的剩余资源为进程安排安全序列,使得系统能
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验 报告 32

限制150内