第四节 第五节 第六节 第七节
第四节 其他进程调度算法
一、公平共享调度


二、保证调度
保证调度算法的目标是保证每个进程享用CPU的时间完全一样,即如果系统里一共有N个进程,则每个进程占用CPU的时间为1/n.保障调度就是保障每个进程使用1\n的CPU时间。保障就是肯定1/n的时间运转,而不是大概1/n时间运转。那么保障调度和轮转调度是一样吗?时间片轮转能不能达到1/n的效果?关键就是达到1/n不一定要靠轮转。轮转是能够达到1/n的,但是保障调度不一定要轮转。每次给出的时间片不一定要一样。
三、彩票调度

第五节 操作系统调度算法实例
一、BSD多级反馈队列法
BSD UNIX系统主要用于分时交互环境中,调度算法设计成为交互用户提供好的响应时间,同时保证低优先级的后台作业不会饿死。
BSD UNIX系统采用了多级反馈队列法,在每个优先级队列中采用了轮转的方法

CPUj(i):进程j在区间i中处理器使用情况的度量。
Pj(i):进程j在区间i开始处的优先级:值越小表示的优先级最高
basej:进程j的基本优先级
nicej:用户可控制的调节因子
二、UNIX SVR4调度

SVR4中定义了160个优先级,每个进程定义成属于这三类优先级中的一类,并被指定为具有该类中的一个优先级。这三类优先级为:
实时(159-100):具有这些优先级的进程可以保证在任何内核进程或分时进程之前被选择运行。此外,实时进程可以使用可抢占点抢占内核进程和用户进程
内核(99-66):具有这些优先级的进程保证在任何分时进程之前被选择运行,但必须服从实时进程。
分时(59-0):最低优先级的进程,通常除了实时应用程序以外的用户应用程序
每个优先级都关联着一个调度队列,在某一给定优先级的进程按循环方式执行。有一个位映像向量dqactmap,它的每一位应于各个优先级
二、UNIX SVR4

三、LINUX抢占式调度
LINUX系统中的进程,既可以在用户态下运行,又可以在核心态下运行,而核心态的权限高于用户态的权限。进程每次执行系统调用时,其运行方式就i会发生变化,从用户态切换到核心态
1、调度方式
LINUX系统的调度方式基本上采用“抢占式优先级”方式
LINUX系统中的调度基本上继承了UNIX系统的以优先级为基础的调度
2.调度策略
LINUX系统针对不同类别的进程提供了三种不同的调度策略,即SCHED_FIFO,SCHED_RR及SCHED_OTHER
3.调度时机
- 当前进程调用系统调用nanosleep()或者pause(),使自己进入睡眠状态,主动让出一段时间的CPU的使用权
- 进程终止,拥挤的放弃对CPU的使用
- 在时钟中断处理程序执行过程中,发现当前进程连续运行的时间过长
- 在时钟中断处理程序执行过程中,发现当前进程连续运行的时间过长
- 当唤醒一个睡眠进程时,发现被唤醒的进程比当前进程更有资格运行
- 一个进程通过执行系统调用来改变调度策略或者降低自身的优先级(如NICE命令),从而引起立即调度
4.调度算法
首先查找所有在就绪队列中的进程,从中选出优先级最高且在内存的一个进程。如果队列中有实时进程,则实时进程将优先运行。如果最需要运行的进程不是当前进程,则当前进程就被挂起,并且保护他的现场----所涉及的一切机器状态,包括程序计数器和CPU寄存器等,然后为选中的进程恢复运行现场。
四、WINDOWS调度

第六节 多处理器调度算法
松耦合、分布式多处理器、集群
专门功能的处理器
紧耦合多处理
一、粒度
1、无约束并行性
2、粗粒度和非常粗粒度并行性
3、中等粒度并行性
4、细力度的并行性
二、设计问题
1、把进程分配到处理器
2、在单个处理器上使用多道程序设计
3、一个进程的实际分派
三、进程调度
在大多数传统的多处理器系统中,进程并不是被指定到一个专门的处理器。不是所有处理器只有一个队列,或者使用某种类型的优先级方案,而是有多条基于优先级的队列,并且都送进相同的处理器池中。在任何情况下,都可以把系统看作是多服务器排队结构
四、线程调度
在单处理器中,线程可以用作辅助构造程序,并在处理过程中重叠执行I\O。由于在进行线程切换时的性能损失远远小于进程切换的开销,因此可以用很少的代价实现这些优点
在多处理器系统中,线程的全部能力得到了更好的展现。在这个环境中,线程可以用于开发应用程序中真正的并行性
1、加载共享
2、组调度
3、专用处理器分配
4、动态调度
第七节 实时调度算法
一、实时调度算法概述
(1)一个系统是否执行可调度性分析
(2)如果执行,它是静态的还是动态的
(3)分析结果自身是否根据在云心时分派的一个任务产生一个调度或计划
静态表驱动法
静态优先级驱动抢占法
基于动态规划调度法
动态尽力调度法

二、期限调度
大多数当代实时操作系统的设计目标是尽可能快速的启动实时任务,因此强调快速中断处理和任务分派。事实上,在评估实时操作系统时,并没有一个特别有用的度量。
- 就绪时间
- 启动最后期限
- 完成最后期限
- 处理时间
- 资源需求
- 优先级
- 子任务结构
二、限期调度
当考虑到最后期限时,实时调度功能可以分成很多维,下一次调度哪个任务以及允许那种类型的抢占另一个重要的设计问题时抢占
三、速度单调调度

四、优先级逆转



浙公网安备 33010602011771号