尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

操作系统笔记-2.2.6 多处理机调度

操作系统笔记-2.2.6 多处理机调度 王道操作系统笔记视频链接2.2.6 多处理机调度知识总览多处理机调度与单处理机调度相比需要面临哪些新问题方案一公共就绪队列方案二私有就绪队列多处理机遇到问题单处理机调度只需决定让哪个就绪进程优先上处理机即可。调度算法先来先服务、最短作业优先、时间片轮转、优先级等多处理机调度①用调度算法决定让哪个就绪进程优先上处理机②还需决定被调度的进程到底上哪个处理机。负载均衡、处理亲和性多处理机调度中应追求的目标负载均衡——尽可能让每个CPU都同等忙碌。比如四个CPU分别负载50%、80%、80%、90%此时CPU1太过“空闲”CPU4太过“忙碌”这就不太符合负载均衡。处理机亲和性——尽量让一个进程调度到同一个CPU上运行以发挥CPU中缓存Cache的作用比如CPU4上存在P4、P8、P12、P16的缓存那么后续需要运行这些程序时直接在CPU4上运行就可以利用这些缓存如果把P4上没有P4缓存的CPU1运行那么就会有更多的访问主存的动作效率自然更低。PS来自deepseek缓存数据的有效停留时间本质上是该进程与其他进程竞争缓存空间的激烈程度——核心越忙、进程占用缓存越多、缓存本身越小数据被覆盖得就越快。公共就绪队列定义将系统内所有进程放在统一的就绪队列中。特点所有CPU共享一个就绪队列进程位于内核区每个CPU运行调度程序与单处理机一样比如FCFS、SJF、RR等控制优先级从公共就绪队列中选择一个进程运行比如CPU1空闲了启动调度程序选择了P1上处理机运行其它CPU同理它们都是并行运行。为了确保各CPU间对就绪队列的访问互斥防止多个CPU同时调用同一个进程在对就绪队列的访问期间需要对就绪队列上锁优缺点优点可以天然地实现负载均衡缺点各进程频繁地切换CPU运行“亲和性”不好如何提升处理机亲和性软亲和由进程调度程序尽量保证“亲和性”也就是让调度程序尽可能调度存在缓存的进程硬亲和由用户进程通过系统调用主动要求操作系统分配固定的CPU确保“亲和性”私有就绪队列定义顾名思义操作系统会为每个CPU配一个就绪队列特点每个CPU都有一个私有就绪队列CPU空闲时运行调度程序从私有就绪队列中选择一个进程运行各CPU的调度程度只会从自己的私有队列中挑选优先级最高的进程如何实现负载均衡推迁移Push策略一个特定的系统程序周期性检查每个处理器的负载如果负载不平衡就从忙碌CPU的就绪队列中“推”一些就绪进程到空闲CPU的就绪队列。比如负责周期检查的系统程序检查到CPU4的负载较高CPU1的负载较低就可以把CPU4就绪队列中的某一个进程“推”给负载较低的CPU1以实现负载均衡。类似于有一个包工头专门负责派活拉迁移Pull策略每个CPU运行调度程序时周期性检查自身负载与其它CPU负载。如果一个CPU负载很低就从其它高负载CPU的就绪队列中**“拉”一些就绪进程到自己的就绪队列**。比如每执行10次调度程序CPU1就检查一下自己和其它CPU负载此时发现自己负载较低CPU4负载较高就主动把CPU4就绪队列中的某些就绪进程“拉”到自己的队列。类似于一群互帮互助的同事看到其他同事很忙就主动揽活过来分担任务如何实现处理机亲和性私有就绪队列天然地实现了“处理机亲和性”。因为一段时间内CPU总会调度自己队列中的进程所以这些进程在一段时间内总是上同一个CPU运行这样就能发挥Cache的作用。由于推拉策略可能导致部分进程移动到其他CPU上处理此时会损失部分“处理机亲和性”但是依然可以由用户进程通过系统调用主动要求操作系统分配固定的CPU实现硬亲和。知识回顾与重要考点
返回列表