linux中断,linux强制卸载软件

Linux几种中断信号的区别:HUP,INT,KILL,TERM,TSTP

Linux的HUP,INT,KILL,TERM,TSTP中断信号区别为:键入不同、对应操作不同、启用不同。

一、键入不同

1、HUP中断信号:HUP中断信号是当用户键入<Ctrl+X>时由终端驱动程序发送的信号。

2、INT中断信号:INT中断信号是当用户键入<Ctrl+I>时由终端驱动程序发送的信号。

3、KILL中断信号:KILL中断信号是当用户键入<Ctrl+Z>时由终端驱动程序发送的信号。

4、TERM中断信号:TERM中断信号是当用户键入<Ctrl+\>时由终端驱动程序发送的信号。

5、TSTP中断信号:TSTP中断信号是当用户键入<Ctrl+T>时由终端驱动程序发送的信号。二、对应操作不同

1、HUP中断信号:HUP中断信号的对应操作为让进程挂起,睡眠。

2、INT中断信号:INT中断信号的对应操作为正常关闭所有进程。

3、KILL中断信号:KILL中断信号的对应操作为强制关闭所有进程。

4、TERM中断信号:TERM中断信号的对应操作为正常的退出进程。

5、TSTP中断信号:TSTP中断信号的对应操作为暂时停用进程。

三、启用不同

1、HUP中断信号:HUP中断信号发送后,可以重新被用户再次输入恢复启用进程。

2、INT中断信号:INT中断信号发送后,不可以重新被用户再次输入恢复启用进程。

3、KILL中断信号:KILL中断信号发送后,不可以重新被用户再次输入恢复启用进程。

4、TERM中断信号:TERM中断信号发送后,可以重新被用户再次输入启用进程。

5、TSTP中断信号:TSTP中断信号发送后,可以重新被用户再次输入继续使用进程。

Linux内核中断之中断调用流程

本文基于 RockPI 4A单板Linux4.4内核介绍中断调用流程。

ARMv8包括两种运行状态:AArch64和AArch32。

AArch64中不再使用AArch32中的7种特权模式,而是提出了Exception Levels的概念,包括:

1)EL0:用于用户态程序,权限最低

2)EL1:给内核使用,权限稍高

3)EL2:虚拟化相关,权限更高

4)EL3:安全相关,权限最高

Linux内核中一般只使用EL0和EL1。

AArch64异常向量表中的异常包括:

1)Synchronous exception(同步异常)

2)SError

3)IRQ

4)FIQ

注:SError、IRQ和FIQ属于异步异常。

在Linux内核中,在 arch/arm64/kernel/entry.S文件中定义了异常向量表,内容如下:

选取 el1_irq()函数介绍Linux内核中断的调用流程。

文件: arch/arm64/kernel/entry.S,调用流程如下:

1、handle_irq()初始化

在 DTS解析阶段完成 handle_irq()函数的初始化,流程如下:

gic_irq_domain_map()函数中完成了 handle_irq()函数的赋值,具体执行如下:

2、handle_irq()实现

以共享外设中断 SPI的中断处理函数 handle_fasteoi_irq()为例,继续跟踪中断的执行过程。

handle_irq_event_percpu()函数会调用已经注册的中断处理函数,同时唤醒 irq_thread线程。

3、中断处理线程

在使用 request_threaded_irq()函数申请中断时,会创建一个 irq_thread线程,调用流程如下:

irq_thread线程平时在睡眠状态,等待 handle_irq_event_percpu()函数唤醒,进一步执行已注册的中断处理线程函数。

使用 DRM框架中 HDMI中断验证中断调用流程。

文件: drivers\gpu\drm\bridge\synopsys\dw-hdmi.c

在中断处理函数 dw_hdmi_hardirq()和中断处理线程函数 dw_hdmi_irq中增加 dump_stack()调用(注:仅限于调试验证)。

插入 HDMI线,系统启动后,显示中断调用流程的日志如下:

linux系统中的中断指令是什么

什么是中断

Linux内核需要对连接到计算机上的所有硬件设备进行管理,毫无疑问这是它的份内事。如果要管理这些设备,首先得和它们互相通信才行,一般有两种方案可实现这种功能:

轮询(polling)让内核定期对设备的状态进行查询,然后做出相应的处理;中断(interrupt)让硬件在需要的时候向内核发出信号(变内核主动为硬件主动)。

第一种方案会让内核做不少的无用功,因为轮询总会周期性的重复执行,大量地耗用 CPU时间,因此效率及其低下,所以一般都是采用第二种方案。

对于中断的理解我们先看一个生活中常见的例子:QQ。第一种情况:你正在工作,然后你的好友突然给你发送了一个窗口抖动,打断你正在进行的工作。第

二种情况:当然你有时候也会每隔 5分钟就去检查一下 QQ

看有没有好友找你,虽然这很浪费你的时间。在这里,一次窗口抖动就可以被相当于硬件的中断,而你就相当于 CPU,你的工作就是 CPU

这在执行的进程。而定时查询就被相当于 CPU的轮询。在这里可以看到:同样作为 CPU和硬件沟通的方式,中断是硬件主动的方式,较轮询(CPU

主动)更有效些,因为我们都不可能一直无聊到每隔几分钟就去查一遍好友列表。

CPU

有大量的工作需要处理,更不会做这些大量无用功。当然这只是一般情况下。好了,这里又有了一个问题,每个硬件设备都中断,那么如何区分不同硬件呢?不同设

备同时中断如何知道哪个中断是来自硬盘、哪个来自网卡呢?这个很容易,不是每个 QQ号码都不相同吗?同样的,系统上的每个硬件设备都会被分配一个

IRQ号,通过这个唯一的 IRQ号就能区别张三和李四了。

从物理学的角度看,中断是一种电信号,由硬件设备产生,并直接送入中断控制器(如

8259A)的输入引脚上,然后再由中断控制器向处理器发送相应的信号。处理器一经检测到该信号,便中断自己当前正在处理的工作,转而去处理中断。此后,

处理器会通知 OS已经产生中断。这样,OS

就可以对这个中断进行适当的处理。不同的设备对应的中断不同,而每个中断都通过一个唯一的数字标识,这些值通常被称为中断请求线。

阅读剩余
THE END