Linux内核学习之Linux中断工作流程框架!

前言:

大家好,今天继续分享Linux内核里面的学习总结,今天我们来讲讲Linux内核里面的中断机制;关于中断这块,对于咱们来说应该是非常熟悉了,所以这里我就不介绍它的概念了哈!

一、Linux中断工作流程:

在讲解Linux中断工作流程,我们先来看一下一般的中断工作流程,当你熟悉了一般中断流程,那么Linux中断工作流程就差不多清晰了!

中断工作流程:

  • 1、cpu工作模式的转化

  • 2、进行寄存器的拷贝与压栈

  • 3、设置中断异常向量表

  • 4、保存正常运行的函数返回值

  • 5、跳转到对应的中断服务函数上运行

  • 6、进行模式的复原以及寄存器的复原

  • 7、跳转回正常工作的函数地址继续运行

接下来我们来看Linux的中断工作流程:

扫描二维码关注公众号,回复: 15017651 查看本文章
  • 1、将所有的寄存器值入栈

  • 2、将异常码入栈

  • 3、将当前的函数返回值进行入栈(为了在中断执行后能够找到在哪里中断的,能够复原!)

  • 4、调用对应的中断服务函数

  • 5、出栈函数返回值

  • 6、返回所有的入栈寄存器值

为了好理解,可以把上面梳理成:

  • (1)中断前的处理过程

  • (2)中断的执行过程

  • (3)中断的恢复过程

下面是Linux中断工作流程图:

7eabbf9e49cc534939c78d9929f354ad.png

好,现在有了这么大体框架图,我们就可以开始去分析中断这部分的代码了,关于中断这部分的代码结构主要分为两部分:

  • 一部分是硬件中断的处理过程:

  • 软件中断及系统调用的处理过程:

具体的代码对应图如下:

  • 中断代码主要在Kernel目录下:

017c4af528b192c211b50bf643b7798b.png 760e26d095aa758fa2052b69a2d4f548.png

二、总结:

ok,今天就暂时简单分享到这里,由于这里涉及到一些汇编代码,所以源码分析部分,我们在下期再来分享,今天大概掌握Linux中断工作流程和在Linux内核里面的代码结构分布就行!

文章资料相关参考:

  • Linux内核0.11完全注释

  • https://www.bilibili.com/video/BV1tQ4y1d7mo?spm_id_from=333.337.search-card.all.click

对了,个人朋友圈,已经开放,坑位有限,时常分享一些非技术性的东西,感兴趣的,可以来唠唠嗑,交个朋友;技术方面的也行,大家相互学习,共同进步:三人行,必有我师焉!

492447cb7e71f10df3e96ffde0183451.png
我扫你,还是你扫我?

猜你喜欢

转载自blog.csdn.net/Dada_ping/article/details/125252787