实时系统中的线程调度、软中断及优先级继承机制解析
1. 线程调度与 CPU 亲和性
在多处理器系统中,操作系统调度器会尝试让线程在其启动的 CPU 上运行,以避免代价高昂的缓存刷新,这种特性被称为 CPU 亲和性。对于中断请求(IRQ)线程,其 CPU 亲和性由中断本身的 CPU 亲和性决定。每次中断处理程序执行时,都会将线程的 CPU 亲和性与中断的亲和性进行比较,如果不同,会将中断服务线程的亲和性更新为中断的亲和性。
以下是一个操作示例,展示如何查看和修改中断服务线程的 CPU 亲和性:
# 查看 ide0 相关中断信息
# cat /proc/interrupts | grep ide0
14: 13602 1720 IO - APIC - edge ide0
# 查找 IRQ - 14 中断服务线程的 pid
# ps ax | grep IRQ - 14
790 ? S< 0:00 [IRQ - 14]
# 查看中断 14 的亲和性
# cat /proc/irq/14/smp_affinity
1
# 查看 IRQ - 14 中断服务线程的亲和性
# taskset -p 790
pid 790's current affinity mask: 1
# 尝试将 IRQ - 14 中断服务线程的亲和性设置为 CPU 1
# taskset -p 2 790
pid 790's current affinity mask: 1
pid 790's new affinity mask: 2
# 再次查看 IRQ - 14 中断服务线程的亲和性
# tas
超级会员免费看
订阅专栏 解锁全文
14

被折叠的 条评论
为什么被折叠?



