MINIX3中断处理

  中断控制器是一片集成电路,它能够检测到许多此类电信号并在处理器的数据总线上为其生成唯一的数据格式。使用32位处理器的PC机通常有两片中断处理芯片,其中每一片可以处理8个输入,但其中有一片是从片,它的输出线连到主片的一条输入线,这样一共可以挂接15个不同的外部设备,如图,在15个输入中,有一些输入是专用的。例如。时钟输入线(IRQ0)不连接任何可以插入新适配器的插槽。

 

     中断信号出现在右侧的IRQn信号线上。连到CPU的INT管脚的连接线通知CPU发生了中断。从CPU发出的INTA(中断应答)信号使负责中断的控制器芯片将数据放在系统数据总线上,并通知处理器应执行哪个服务例程。MINIX3的表格中含有56个表项,其中实际用到35项

其中21项保留供将来的Intel处理器或MINIX3扩展使用。

     当CPU在一个进程运行期间接收到一个中断时,它将建立一个新堆栈供中断服务器使用。该堆栈的位置由任务状态段(Task State Segment,TTS)中的一项决定。CPU自动的将几个关键寄存器值压入新堆栈,包括用来恢复被中断进程本身堆栈及其程序计数器的那些寄存器。

    中断服务例程结束操作如下:从内核栈切换回进程表项中的栈帧结构,显示的弹出非硬件压栈的寄存器值,并执行一条iretd(从中断返回)指令。

    当接收到一个中断时,CPU关掉所有的中断,这样保证了进程表项的栈帧不会溢出。这个过程是自动进行的,但也存在可以关中断和开中断的汇编指令。当使用位于进程表项之外的内核栈时,中断保持关闭状态。

    特权级控制在运行进程和执行内核代码时,会对接收的中断做出不同响应。当中断服务期间创建一个新堆栈供使用时,硬件提供另外一种服务。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值