Linux内核:进程管理——进程中断处理

进程中断详细过程

文章目录

    • 进程中断详细过程
    • 中断
    • 中断向量
    • 中断向量表
    • 中断源
    • 中断处理过程

中断

所谓中断就是指CPU在正常执行程序的时候,由于内部/外部事件的出发、或由程序预先设定而引起CPU暂时中止当前正在执行的程序,保存被执行程序相关信息到栈中,转而去执行为内部/外部事件、或由程序预先设定的事件的中断服务子程序,待执行完中断服务子程序后,CPU再获取被保存在栈中被中断的程序的信息,继续执行被中断的程序,这一过程叫做中断。

中断向量

中断服务程序的入口地址。

中断向量表

把系统中所有的中断类型码及其对应的中断向量按一定的规律存放在一个区域内,这个存储区域就叫做中断向量表。

中断源

IA32中有三大类中断源:1、软中断/内中断。 2、外中断/硬件中断 3、异常

中断处理过程

请求中断→响应中断→关闭中断→保留断点→中断源识别→保护现场→中断服务子程序→恢复现场→中断返回。

中断处理过程:

(1)某一中断源向CPU发起中断请求,对于外部中断CPU在当前指令最后一个时钟周期查询中断请求信号的有效性,在系统开中断的情况下,CPU向中断源回送中断应答信号,系统进入中断响应周期。(CPU对系统内部中断源提出的中断请求必须响应,而且自动取得中断服务子程序的入口地址,执行中断服务 子序;

(2)CPU响应中断后,将状态标志寄存器压入堆栈保护;

(3)再将其中的中断标志位清除从而关闭中断;

(4)CPU将当前CS(代码段地址)和IP(将要执行的下一条地址)压入堆栈保护断点;

(5)CPU确定提出请求的中断源,获得中断向量号,在对应的中断向量表获得中断入口地址, 装入CS和IP中;

(6)将断点处各寄存器的内容压入堆栈保护现场;

(7)此时程序跳转至中断服务子程序执行;

(8)中断处理完毕,将堆栈各寄存器内容弹栈,恢复断点处各寄存器的值;

(9)在中断服务子程序最后安排一条返回指令,执行该指令将堆栈中CS和IP的值弹出,恢复主程序

断点处地址值,同时恢复标志寄存器的内容。程序转至被中断的程序继续执行。

内核资料直通车:Linux内核源码技术学习路线+视频教程代码资料

原文作者:精通Linux内核

原文链接:Linux内核:进程管理——进程中断处理 - 知乎(版权归原文作者所有,侵权留言联系删除)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值