美文网首页
软中断的中断处理程序的调用过程

软中断的中断处理程序的调用过程

作者: 今天不想掉头发 | 来源:发表于2019-07-20 09:30 被阅读0次

首先,我们的中断处理程序是通过中断门来实现的,因此,需要在中断描述符表中提前注册好中断描述符。

image.png

中断描述符中有段选择子(一般为代码段选择子),自己的属性(DPL),以及中断处理程序的偏移量。当用户进程调用执行软中断的时候还需要进行相应的特权级检查(用户进程的特权级和门特权级以及代码段描述符的特权级需要进行比较),当特权级检查通过之后才能够执行内核的中断处理程序。

如果是用户进程执行系统调用,则是通过软中断来实现的,Linux中通过Int 0x80+eax中存储子功能号的形式执行系统调用,通过如下宏定义的方式,调用int0x80,通过寄存器传参


image.png
image.png

而关于中断号0x80我们是提前注册在中断描述符表中的(其实就是个索引号),然后会调用相应的中断处理程序


image.png

中断处理程序中要进行现场保护(保存用户进程执行系统调用前的一些寄存器映像等),然后在通过子功能数组(其中存放对应子功能的处理函数)来根据具体的子功能执行相应的处理


image.png

这里需要注意,call函数的返回值是存放在eax寄存器中,因此如果想让内核态时eax返回给用户进程,需要在内核态的时候将eax的值写入到用户进程的eax中,即写入到刚才在栈中保存的eax的栈空间中,那么当用户进程从中断中返回的时候,会将栈中的内容进行还原,也就得到了通过内核态计算得到的结果。

相关文章

  • 软中断的中断处理程序的调用过程

    首先,我们的中断处理程序是通过中断门来实现的,因此,需要在中断描述符表中提前注册好中断描述符。 中断描述符中有段选...

  • 如何理解cpu中断

    软中断 中断是系统响应硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的中断处理程序来响应设备...

  • 2021-04-03

    Linux0.11内核阅读——中断篇 中断前处理及中断现场恢复中断执行过程硬中断asm.strap.c软中断sys...

  • 进程切换和系统的一般执行过程

    进程调度的时机 中断处理过程(包括时钟中断、I/O中断、系统调用和异常)中,直接调用schedule(),或者返回...

  • Linux IO多路复用底层原理(刚接触,知识还不成体系,等懂得

    Linux 操作系统中断 什么是系统中断系统处理中断的过程: 首先由需要紧急处理的程序向处理器发送中断请求,处理器...

  • 中断

    1. 软中断与硬中断的区别 软中断:如代码调用INT指令触发 硬中断:为响应中断,一般会有一个硬件中断控制器,当设...

  • 嵌入式中断处理的简单描述

    嵌入式中断处理的简单描述 ## 通用的中断处理过程: 中断源---》中断路径---》中断响应 中断由中断源发出,进...

  • TCP/IP网络

    软中断: 软中断的处理非常像硬中断。然而,它们仅仅是由当前正在运行的进程所产生的。通常,软中断是一些对I/O的请求...

  • 8086汇编(40)中断处理程序

    中断处理程序 中断处理程序的编写方法和子程序的比较相似,下面是常规的步骤: 1)保存用到的寄存器 2)处理中断 3...

  • Arduino 中断

    中断介绍 “中断”顾名思义就是中断Arduino当前正在处理的事情而优先去执行中断服务程序。当中断服务程序完成以后...

网友评论

      本文标题:软中断的中断处理程序的调用过程

      本文链接:https://www.haomeiwen.com/subject/wxrylctx.html