进程调方式
-
非抢占式
- 进程分配到处理机时,就会一直执行下去,不会被其他进程抢占,直到该进程完成或被阻塞。
-
抢占式
-
允许调度程序根据某种原则,去暂停某个正在执行的进程,将以分配的处理机重新分配给另一进程。这样可以防止一个长进程长时间地占用处理机。
主要原则:
- 优先权原则,优先级高的进程可以占用当前进程;
- 短进程优先原则,短进程可以抢占当前长进程的处理机;
- 时间片原则,当前进程的时间片用完,执行其他进程。
-
轮转调度算法(RR)
- 原理
- 在轮转(RR)法中,系统根据 FCFS(先来先服务)策略,将所有的就绪进程排成一个就绪队列,并可设置每隔一定时间间隔(如30 ms)即产生一次中断,激活系统中的进程调度程序,完成一次调度,将CPU分配给队首进程,令其执行。当该进程的时间片耗尽或运行完毕时,系统再次将CPU分配给新的队首进程(或新到达的紧迫进程)。由此,可保证就绪队列中的所有进程在一个确定的时间段内,都能够获得一次CPU执行。
- 时间片大小
- 时间片小,意味着频繁执行进程调度和进程的上下文的切换,增加系统的开销;时间片长,RR算法退化成FCFS算法,无法满足短作业和交互式用户的需求。
- 取大多数进程能在一个时间片内完成所对应的时间。
优先级调度算法
- 将处理机分配给就绪队列中优先级最高的进程。
- 优先级类型
- 静态优先级,创建进程时确定,运行过程中不变;
- 动态优先级,创建进程时先赋予一个优先级,然后其值随进程的推进或等待时间的增加而改变,如等待时间增长优先级提高;
多队列调度算法
- 上述调度算法,系统中仅设置了一个进程的就绪队列,无法满足系统中不同用户对进程调度策略的不同要求。
- 该算法将系统中的进程就绪队列从一个拆分为若干个,将不同类型或性质的进程固定分配在不同的就绪队列,不同的就绪队列采用不同的调度算法,一个就绪队列中的进程可以设置不同的优先级,不同的就绪队列本身也可以设置不同的优先级。多队列调度算法由于设置多个就绪队列,因此对每个就绪队列就可以实施不同的调度算法,因此,系统针对不同用户进程的需求,很容易提供多种调度策略。
多级反馈队列调度算法
- 上述算法中,如果未指明进程长度,短进程优先和基于进程长度的抢占式调度算法都将无法使用。多级反馈队列调度算法不必事先知道进程长度,是目前公认的一种比较好的进程调度算法。
- 调度机制
- 设置 N 个就绪队列,优先级依次降低,时间片长度逐个增加一倍;
- 每个队列采用 FCFS 算法,当新进程进入内存后,先将其放至第一个就绪队列末尾,轮到该进程执行时,若进程在时间片内完成,则撤离系统,否则放入下一个就绪队列末尾;第 N 个队列采用 RR 调度方式;
- 按队列优先级调度:当第1~(i-1) 就绪队列均为空时,系统才会调度第 i 队列;当优先级更高的队列有新进程时,把当前执行的进程放入其所在队列末尾,立即去调用优先级更高的进程。
2. 性能
- 终端型用户。由于终端型用户提交的作业多属于交互型作业,通常较小,系统要能使这些作业在第一队列规定的时间片内完成,便可使终端型用户感到满意。
- 短批处理作业用户。对于这类作业,如果可在第一队列中执行完成,便获得与终端型作业一样的响应时间。对于稍长的短作业,也只需在第二和第三队列各执行一时间片完成,其周转时间仍然较短。
- 长批处理作业用户。对于长作业,它将依次在第1,2,…,n个队列中运行,然后再按轮转方式运行,用户不必担心其作业长期得不到处理。