目录
1、先来先服务调度算法FCFS(First Come First Service)
3、高优先权优先调度算法HPF(Highest Priority First)
4、高响应比优先调度算法HRRN(Highest Response Ratio Next)
处理机调度与死锁
处理机调度相关概念
处理机调度:多道程序环境下,动态的把处理机分配给就绪队列中的一个进程使之执行。提高处理机的利用率、改善系统性能,很大程度上取决于处理机调度的性能。处理机调度便成为OS设计的中心问题之一。分配的任务由处理机调度程序完成。
三级调度
- 高级调度
- 中级调度
- 低级调度
进程调度方式:
- 非抢占式(Non-preemptive Mode):一旦处理机分配给某进程,该进程一直执行。决不允许其他进程抢占已分配运行进程的处理机
- 抢占式(Preemptive Mode):允许调度程序根据某种原则,暂停某个正在执行的进程,将处理机重新分配给另一进程
三种调度的频率和复杂度分析:
进程调度(低级调度):运行频率最高,算法复杂度最低,其次是中级调度,再是作业调度(高级调度)。
仅有进程调度的调度队列模型
同时具有三级调度的调度队列模型
选择调度方式和调度算法的若干准则
- 面向用户的准则
- 面向系统的准则
面向用户的准则
- 周转时间短
- 响应时间快
- 均衡性
- 截止时间的保证
- 优先权准则
面向系统的准则
常用的调度算法
1、先来先服务调度算法FCFS(First Come First Service)
不利于短作业
2、短作业优先调度算法SJF、SPF![](https://i-blog.csdnimg.cn/blog_migrate/38f4d12d3a578a148a8475ab5d71d848.png)
3、高优先权优先调度算法HPF(Highest Priority First)
优先权类型:
- 静态优先权:创建进程时确定,整个运行期间保持不变。一般利用某一范围的一个整数来表示,又称为优先数。
- 动态优先权:创建进程时赋予的优先权可随进程的推进或随其等待时间的增加而改变。
4、高响应比优先调度算法HRRN(Highest Response Ratio Next)
5、基于时间片的轮转调度算法RR(Round Robin)
(1)简单的时间片轮转算法
(2)多级反馈队列算法FB(Multiple-level Feed Back Queue)
多种算法比较:
实时调度
实时系统![](https://i-blog.csdnimg.cn/blog_migrate/c89cf53ad299216aaa2135925e5c48ce.png)
实现实时调度系统的基本条件
- 提供必要的信息
- 系统处理能力足够强
- 采用抢占式调度机制
- 具有快速切换机制
实时调度算法的分类![](https://i-blog.csdnimg.cn/blog_migrate/c4979c23f00d7feecdd7effe80a819f7.png)
死锁
死锁(DeadLock):指进程之间无休止的相互等待
饥饿(Starvation):指一个进程无休止的等待
产生死锁的两个原因:
- 竞争资源
- 进程之间推进顺序非法
形成死锁的四个必要条件(缺一不可)
- 互斥条件:进程对所分配到的资源进行排他性使用
- 请求和保持条件:进程已经保持了至少一个资源,又提出新的资源请求,而新请求资源被其他进程占有只能造成自身进程阻塞,但对自己已获得的其他资源保持不放,必然影响其他进程
- 不剥夺条件:进程已获得的资源未使用完之前不能被剥夺,只能在使用完时由自己释放
- 环路等待条件
处理死锁的基本方法
预防死锁的方法
预防死锁
- 摒弃“请求和保持”条件:所有进程开始运行前,必须一次性的申请其在整个运行过程所需的全部资源(AND)。算法简单、易于实现且很安全。但缺点是资源浪费严重、或进程延迟运行
- 摒弃“不剥夺”条件:允许进程先运行,但当提出的新要求不被满足时必须释放它已保持的所有资源,待以后需要时再重新申请。实现比较复杂且付出很大代价。可能会造成前功尽弃,反复申请和释放等情况
- 摒弃“环路等待”条件
避免死锁
死锁的检测与解除
死锁的解除