简单轮转调度(固定时间片轮转调度)
轮转执行时间片 q = I/N I是系统规定的响应时间 N是所需服务的进程数量
优点:实现简单,
缺点:时间片过长,会退化为先来先服务执行;时间片过短,会导致多次中断,多次分配,影响执行效率;且调度执行不够灵活
多级反馈队列调度
解决了调度执行不够灵活的问题
对于终端型用户,作业大多为短作业,所需时间片较短,在第一优先级队列大都可以执行完毕(提问:短作业优先权就一定高吗?猜想:可能和调度算法有关(短道优先),如果采用高优先级调度算法呢?);
对于中等长度作业,在第二优先级队列也可执行完毕
对于长作业,在优先级更低的队列中,随着时间片的增长也可以得到很好的执行
优先级高的放在第一队列,分配给较少的执行时间,优先级最低的放在最后的队列,分配给较多的执行时间,当优先级较高的队列中没有就绪队列时才会开始执行下一优先级的队列
进程执行过程中会发生三种状态
执行完毕,阻塞,时间片到未执行完成
在多级反馈队列调度算法中,阻塞和未执行完的程序会被放于下一优先级的就绪队列的末尾,在优先级最低的一级队列中,若该级队列的某一项进程未执行完毕或阻塞,则该将进程置于此就绪队列末尾
提问:当调度算法同资源相结合的问题出现时,如何考虑资源申请的情况
死锁
死锁与阻塞
注意死锁和阻塞的区别,二者并不相同
死锁是进程推进过程的不合理性造成的,没有外力推动无法脱离死锁状态,是两个或多个进程竞争同一资源造成的
简单来说,就是两个进程都各占有一个资源,都需要对方手里的资源才可以正常运行,但都不断向对方申请,却都不放弃自己手中的资源,然后陷入僵持,这就是死锁
解决死锁的方式
重启
打开进程管理器,杀死部分进程,释放部分资源,使进程恢复运行
死锁的原因
1.竞争系统资源
循环抢占
2.进程推进顺序不当
进程推进的顺序不当,会出现不安全区
需要注意的是,死锁的起因是并发进程对资源的竞争,但竞争不一定产生死锁
提问:什么是并发进程?
死锁的根本性原因
计算机可分配资源不足(系统资源不足)
资源的类型
可重用性资源:一次只能分配给一个进程; 申请,使用,释放; 大部分资源是可重用性资源
可消耗性资源:信号量,中断信号,同步信号;用于计算机通信;建立,使用,释放
可抢占性资源:CPU,主存储区
不可抢占性资源:只有我在用,其他人就不能动
产生死锁的四个必要条件
互斥:在某段时间内,某一资源只能为唯一进程占有
请求和保持:在保持现有资源的情况下又发出新的请求
不可抢占:我所占有的资源,不可为其他进程抢走
存在竞争环路:循环申请,但都不释放已占有资源