多处理器SMP系统结构--SMP结构中的中断机制

1.APIC的引入

传统的i386处理器采用8259A中断控制器,8259A只能提供多个外部中断源与单一CPU之间的连接,如果采用8259A中断控制器,只能静态地把所有外部中断划分成若干组。

为了达到动态分配中断请求的目的,Intel设计了APIC(Advanced Programable Interrupt Controllor)。

2.SMP中的中断控制结构

在SMP结构中,考虑到有“处理器间的中断请求”的需求,在各个CPU芯片内部分别集成一个APIC。但SMP结构中还需要一个外部的、全局的、用于与外部I/O交互的APIC。

当然,在SMP结构中也可以采用各个CPU内部APIC+8259A(外部)的方式实现,因为,各个CPU内部本地的APIC有个可以用于时钟中断源的定时器。

3.几个为SMP结构专用的中断及中断响应程序

中断:

中断响应程序:

i386/kernel/smp.c

i386/kernel/apic.c

void smp_apic_timer_interrupt(struct pt_regs * regs)
{                                                   
    ...
    ack_APIC_irq();
    ...
}
asmlinkage void smp_spurious_interrupt(void)
{
    ...
    ack_APIC_irq();
    ...
}
asmlinkage void smp_error_interrupt(void)
{
    ...
    ack_APIC_irq();
    ...
}

ack_APIC_irq():向CPU中的APIC发出对中断请求的确认。

中断序号的划分

0x00~0x1f         | 0x20~0x2f | 0x30~0x79              | 0x80       | 0x81~0xef   | 0xf0~0xfa | 0xfb~0xff |

CPU本身trap     |      ISA      | 'high' PCI IRQs        |系统调用 | 'high' PCI IRQs |            smp           |

                                            |  filled in on demand  |               | filled in on demand |        

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值