多处理机调度

与单处理调度相比,需要面临哪些新问题

单:

只需要决定让哪个就绪进程先上处理机即可

多:

用调度算法决定让哪个就绪优先上处理机,还需要决定被调度的进程上哪个处理机

负载均衡

尽可能让每个cpu都同等忙碌

处理机亲和性

尽量让一个进程调度到同一个CPU上运行,以发挥CPU中缓存的作用(cache)

公共就绪队列

所有cpu共享同一个就绪进程队列(在内核区)

每个cpu运行调度程序,从公共就绪队列中选择一个进程运行

每个cpu访问公共就绪队列时需要上锁(确保互斥)

优点:可以天然实现负载均衡

缺点:各进程频繁更换cpu运行,亲和性不好

提升亲和性的方法:

软亲和:由进程调度程序,尽量保证亲和性

硬亲和:由用户进程通过系统调用,主动要求操作系统分配固定cpu,确保亲和性

私有就绪队列

每个cpu都有一个私有就绪队列

cpu空闲时,运行调度程序,从私有就绪队列中选择一个进程运行

推迁移策略

一个特定的系统程序周期性检查每个处理器的负载,如果负载不平衡,就从忙碌cpu的就绪队列中,推一些就绪进程到空闲的cpu就绪队列

拉迁移策略

每个cpu运行调度程序时,周期性检查自身负载与其它cpu负载,如果一个cpu负载很低,就从其它高负载cpu的就绪队列中拉一些就绪进程到自己的就绪队列

也就是一群互帮互助的同事,看到其他同事很忙,主动揽活过来分担任务

提升亲和性的方法

私有就绪队列天然的实现了“处理机亲和性”

posted @ 2025-09-28 10:14  是我,米老鼠  阅读(9)  评论(0)    收藏  举报