diff --git a/Operating Systems.md b/Operating Systems.md index 3b4396c..8b832dc 100644 --- a/Operating Systems.md +++ b/Operating Systems.md @@ -138,7 +138,7 @@ wait操作:执行wait操作的进程进入条件变量链末尾,唤醒紧急 ### 进程调度策略有哪些? -批处理系统: +1. 批处理系统:
先来先服务 first-come first-serverd(FCFS) @@ -159,13 +159,51 @@ wait操作:执行wait操作的进程进入条件变量链末尾,唤醒紧急
最短剩余时间优先 shortest remaining time next(SRTN) +按剩余运行时间的顺序进行调度。(最短作业优先的抢占式版本)。吞吐量高,开销可能较大,提供好的响应时间; +可能导致饥饿问题,对长进程不利。
最高响应比优先 Highest Response Ratio Next(HRRN) +响应比 = 1+ 等待时间/处理时间。同时考虑了等待时间的长短和估计需要的执行时间长短,很好的平衡了长短进程。非抢占,吞吐量高,开销可能较大,提供好的响应时间,无饥饿问题。 +
+ +2. 交互式系统 +交互式系统有大量的用户交互操作,在该系统中调度算法的目标是快速地进行响应。 + +
+时间片轮转 Round Robin + +将所有就绪进程按 FCFS 的原则排成一个队列,用完时间片的进程排到队列最后。抢占式(时间片用完时),开销小,无饥饿问题,为短进程提供好的响应时间; + +若时间片小,进程切换频繁,吞吐量低;若时间片太长,实时性得不到保证。 +
+ +
+优先级调度算法 + +为每个进程分配一个优先级,按优先级进行调度。为了防止低优先级的进程永远等不到调度,可以随着时间的推移增加等待进程的优先级。 +
+ +
+多级反馈队列调度算法 Multilevel Feedback Queue + +设置多个就绪队列1、2、3...,优先级递减,时间片递增。只有等到优先级更高的队列为空时才会调度当前队列中的进程。如果进程用完了当前队列的时间片还未执行完,则会被移到下一队列。 + +抢占式(时间片用完时),开销可能较大,对IO型进程有利,可能会出现饥饿问题。 +
+ +##### 什么叫优先级反转?如何解决? +
+展开 + +高优先级的进程等待被一个低优先级进程占用的资源时,就会出现优先级反转,即优先级较低的进程比优先级较高的进程先执行。 +解决方法: +- 优先级天花板(priority ceiling):当任务申请某资源时,把该任务的优先级提升到可访问这个资源的所有任务中的最高优先级,这个优先级称为该资源的优先级天花板。简单易行。 +- 优先级继承(priority inheritance):当任务A申请共享资源S时,如果S正在被任务C使用,通过比较任务C与自身的优先级,如发现任务C的优先级小于自身的优先级,则将任务C的优先级提升到自身的优先级,任务C释放资源S后,再恢复任务C的原优先级。
### 线程同步有哪些方式?