操作系统实验报告 联系客服

发布时间 : 星期五 文章操作系统实验报告更新完毕开始阅读

void HRRN() 高响应比优先函数

程序运行结果

4. 结果分析与实验小结

作业调度本质与进程调度类似,但是多道的话,就要多考虑空间的容量了。单道的情况就不作分析了,对于多道调度,要考虑清楚,什么时候能够接纳新的作业进来;对于给定的空间来说,一次能让作业同时执行的数量应该是多少;根据算法,应该按照怎么样的先后顺序选择等待的作业……

逐步分析后,对于非抢占的CPU,一旦作业进入了执行状态,它的结束时间也就定了下来,一旦有作业结束,就会释放空间,释放之后就能立即选择新的作业进来。根据不同算法,对等待队列也有不同的排序结果,无论怎样,都按先后顺序放入队列中,所以每次选择的时候,都要遍历一遍所有等待中的进程,如果这个作业满足空间需求,则放入CPU中执行,同时更新结束时间,否则则跳过这个作业,判断下一个作业,直到询问完所有等待的作业为止。不断重复上面的步骤,直到所有的作业都执行完

所以模拟的时候,分别开了一个运行队列和一个等待队列,运行队列作为判断有哪个作业已经执行结束。

通过这个实验,对操作系统的作业调度已经有了更深一层的理解了,望以后能再接再厉。

实验二 银行家算法

1.实验目的

用银行家算法避免死锁,实现系统合理分配资源,加深对进程同步及死锁理解。

2.实验要求

1. 假定系统有3类资源A(10个)、B(15个)、C(12个),系有5个进程并发执行,

进程调度采用时间片轮转调度算法。

2. 每个进程由一个进程控制块( PCB)表示,进程控制块可以包含如下信息:进程

名、需要的资源总数、已分配的资源数、进程状态。

3. 由程序自动生成进程(包括需要的数据,要注意数据的合理范围)。 4. 进程在运行过程中会随机申请资源(随机生成请求的资源数),如果达到最大需求,

表示该进程可以完成;如果没有达到最大需求,则运行一个时间片后,调度其它进程运行。资源分配采用银行家算法来避免死锁。 5. 每个进程的状态可以是就绪 W(Wait)、运行R(Run)、阻塞B(Block)或完成F

(Finish)状态之一。

6. 每进行一次调度,程序都要输出一次运行结果:正在运行的进程、就绪队列中的进

程、阻塞队列中的进程、完成的进程以及各个进程的 PCB,以便进行检查。

3.实验内容 a.算法原理 操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程本次申请的资源数是否超过了该资源所剩余的总量。若超过则拒绝分配资源,若能满足则按当前的申请量分配资源,否则也要推迟分配 b.程序流程图