首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux内核中断中断的原理和实现

linux为了实现这个特点,当中断发生的时候,中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。...(3)中断嵌套 Linux中断是可以嵌套的,但是没有优先级的概念,也就是说任何一个新的中断都可以打断正在执行的中断,但同种中断除外。软中断不能嵌套,但相同类型的软中断可以在不同CPU上并行执行。...(4)软中断指令 int是软中断指令。 中断向量表是中断中断处理函数地址的对应表。 int n -- 触发软中断n。相应的中断处理函数的地址为:中断向量表地址 + 4 * n。...(5)中断和软中断的区别 软中断是执行中断指令产生的,而中断是由外设引发的。 中断中断是由中断控制器提供的,软中断中断由指令直接指出,无需使用中断控制器。...中断是可屏蔽的,软中断不可屏蔽。 中断处理程序要确保它能快速地完成任务,这样程序执行时才不会等待较长时间,称为上半部。 软中断处理中断未完成的工作,是一种推后执行的机制,属于下半部。

21.8K21

中断和软中断_软中断中断的优先级

linux为了实现这个特点,当中断发生的时候,中断处理那些短时间 就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。...(3) 中断嵌套 Linux中断是可以嵌套的,但是没有优先级的概念,也就是说任何一个新的中断都可以打断正在执行的中断,但同种中断 除外。...软中断不能嵌套,但相同类型的软中断可以在不同CPU上并行执行。 (4) 软中断指令 int是软中断指令。 中断向量表是中断中断处理函数地址的对应表。 int n – 触发软中断n。...相应的中断处理函数的地址为:中断向量表地址 + 4 * n。 (5)中断和软中断的区别 软中断是执行中断指令产生的,而中断是由外设引发的。...中断中断是由中断控制器提供的,软中断中断由指令直接指出,无需使用中断控制器。 中断是可屏蔽的,软中断不可屏蔽。

2.6K40
您找到你想要的搜索结果了吗?
是的
没有找到

Linux中断处理

中断处理 - 上半部(中断) 由于 APIC中断控制器 有点小复杂,所以本文主要通过 8259A中断控制器 来介绍Linux中断的处理过程。...,handler 的第一个参数是中断,第二个参数是设备对应的ID,第三个参数是中断发生时由内核保存的各个寄存器的值。...return 1; } do_IRQ() 函数首先通过IRQ获取到其对应的 irq_desc_t 结构,注意的是同一个中断有可能发生多次,所以要判断当前IRQ是否正在被处理当中(判断 irq_desc_t...鉴于这个原因,Linux中断处理分为两个部分,上半部 和 下半部,上半部 在前面已经介绍过,接下来就介绍一下 下半部 的执行。...softirq机制 中断下半部 由 softirq(软中断) 机制来实现的,在Linux内核中,有一个名为 softirq_vec 的数组,如下: static struct softirq_action

6.6K20

Linux中断 - IDT

中断描述符项定义 当中断发生,cpu获取到中断向量后,查找IDT中断描述符表得到相应的中断描述符,再根据中断描述符记录的信息来作权限判断,运行级别转换,最终调用相应的中断处理程序; 这里涉及到Linux...int)regs->bp); #endif /* CONFIG_IA32_EMULATION */ } syscall_return_slowpath(regs); } 通过中断向量...硬件中断相关IDT的初始化也是在Linux启动时完成,在start_kernel中通过调用init_IRQ完成,我们来看一下: void __init init_IRQ(void) { int...pushq $(~vector+0x80) /* Note: always in signed byte range */ jmp common_interrupt 即先将中断压栈...VECTOR_UNUSED); } } exiting_irq(); set_irq_regs(old_regs); return 1; } 首先根据中断向量获取到对应的中断描述符

6.5K10

Linux 系列汇总

Linux,全称 GNU/Linux,是一套免费使用和自由传播的类 UNIX 操作系统。...我在开发之前只知道 Windows 操作系统,所以我就以为世界上只有一种操作系统,那就是 Windows,工作后才知道 Linux 操作系统。...Linux 现在有多重要我就不用说了吧,不管什么语言,你都或多或少会接触 Linux,不管你是开发还是运维,或者是项目经理,你都需要监控 Linux 服务状态。...我认为 Linux 甚至是最重要的一门操作系统。 所以,入门 Linux 已经成为越来越必要的一环。市面上有很多 Linux 系列的书籍,有小白的和进阶的各种,但是都感觉有些拖沓,无关的东西比较多。...所以现在,我就自己手撸了一本 Linux PDF,命令都是一行一行敲的,也是我读书、看博客、总结的心得。非常宝贵,大家可以来看一下目录 ?

73420

Linux链接,软链接

Linux链接,软链接 参考网上其他博客整理的内容 一. inode 1. 文件存储 文件是存储在硬盘上的,硬盘最小单位叫扇区(sector),每个扇区存储512字节。...user/42 tmpfs 230483 11 230472 1% /run/user/0 4. inode的特性 由于inode和文件名分离,导致Unix/Linux...链接 在Unix/Linux中是允许多个文件名与一个inode节点对应的,即多个文件名指向同一个inode。...通过mkdir命令创建一个新目录,其链接数应该有2个,因为常见的目录本身为1个链接,而目录下面的隐藏目录.(点号)是该目录的又一个链接,也算是1个连接数。...hello.soft1 -> hello.txt 33796565 -rw-r--r--. 2 root root 120 Apr 29 16:48 hello.txt 我们发现软链接文件的inode确实和原文件不一样

9.8K20

linux 中断机制《Rice linux 学习笔记》

这篇文章以按键为例子讲解linux中断原理,中断的架构,中断的实现。 在我们的开发中,检测按键是否触发,无非就两种方法—轮询和中断。作者认为两种方法最大的区别就是CPU的利用率。...Linux中断原理: 中断:处理器异常的一种,它是一种特殊的电信号,用硬件发给处理器,处理器接收到中断后,会马上向操作系统反映此信号的到来,然后就由操作系统负责处理这些新到来的数据。...Linux中断的相关函数: 1、注册中断函数: 中断处理函数结构: typedef irqreturn_t (*irq_handler_t)(int, void*); 注册中断函数:int request_irq...Linux中断实现: 这里例子采用等待队列的方式实现(也就是上述的第二种方法)。...其中:IRQ_EINT0:按键对应引脚的中断。与加载的中断一致。

4.7K10

Linux ln 软、链接

最近在学习Linux系统的,给我的感觉就是“智慧的结晶,智慧的大脑,智慧的操作” 今天研究到了一个有趣的命令 ln 我们先来看一下它的概念吧 Linux ln命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接...---- 一、语法 ln [参数][源文件或目录][目标文件或目录] 命令功能 : Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 链接(hard...类似于Windows操作系统中的快捷方式 2.软链接可以 跨文件系统 ,链接不可以 3.软链接可以对一个不存在的文件名进行链接 4.软链接可以对目录进行链接 链接: 1.链接,以文件副本的形式存在...2.不允许给目录创建链接 3.链接只有在同一个文件系统中才能创建 二、命令参数 必要参数: -b 删除,覆盖以前建立的链接 -d 允许超级用户制作目录的链接 -f 强制执行 -i 交互模式,文件存在则提示用户是否覆盖...发现链接和源文件的 i 节点是相同的,而软链接与源文件的 i 节点是不同的   第六:不允许将链接指向目录;不允许跨分区创建链接

5.8K20

linux内核缺页中断处理

7.当磁盘中断发生时,表明该页已经被装入,页表已经更新可以反映他的位置,页框也标记位正常状态。 8.恢复发生缺页中断指令以前的状态,程序计数器重新指向这条指令。...9.调度引发缺页中断的进程,操作系统返回调用他的汇编例程 10.该例程恢复寄存器和其他状态信息,返回到用户空间继续执行,就好像缺页中断没有发生过。...linux内核对缺页异常的处理流程很复杂,但是基本思想和上述流程差不多。...下面看linux的基本处理流程: 内核处理缺页异常的主函数就是do_page_fault: /* * 缺页异常处理函数 * pt_regs 各个寄存器的值 * error_code,由硬件产生:...), "=r" (x) : "m"(__m(addr)), "i"(errret), "0"(err)) //"m"(__m(addr)), "i"(4), "0"(4)) 经过以上分析,对linux

10.7K21

Linux中断虚拟化(二)

因为可以通过软件编程对其进行控制,比如当管脚收到设备信号时,可以编程控制其发出的中断向量,因此,中断控制器又称为可编程中断控制器(programmable interrupt controller),...从CPU向8259A发送ICW和OCW,从8259A向CPU传送8259A的状态以及中断向量,都是通过数据总线传递的。...8259A中的寄存器IMR(Interrupt Mask Register)负责记录某个中断源是否被屏蔽,比如0中断源被设备了屏蔽,那么IMR的bit 0将被设置。那么这个IMR是谁设置的呢?...8)通常,x86 CPU会发送第2次INTA,在收到第2次INTA后,8259A会将中断向量(vector)送上数据总线D0~D7。...x86CPU前32个中断(0-31)留给处理器异常的,比如第0个中断,是处理器出现除0(Divide by Zero)异常的,不能被占用。

5.9K10

Linux中断虚拟化(一)

作者简介 王柏生 资深技术专家,先后就职于中科院软件所、红旗Linux和百度,现任百度主任架构师。在操作系统、虚拟化技术、分布式系统、云计算、自动驾驶等相关领域耕耘多年,有着丰富的实践经验。...著有畅销书《深度探索Linux操作系统》(2013年出版)。 谢广军 计算机专业博士,毕业于南开大学计算机系。资深技术专家,多年的IT行业工作经验。...本文内容节选自《深度探索Linux虚拟化技术》,已获得机械工业出版社华章公司授权。...因此,在本章中,我们简单介绍硬件中断的基本原理,然后结合中断的基本原理讨论如何虚拟化中断芯片。...图2 基于PIC的虚拟中断过程 具体步骤如下: 1)虚拟设备向虚拟中断芯片PIC发送中断请求,虚拟PIC记录下虚拟设备的中断信息。

6.3K30

Linux中断机制分析

中断分析最近工作繁忙,没有时间总结内核相关的一些东西。上次更新博客到了linux内核中断子系统。这次总结一下软中断,也就是softirq。之后还会总结一些tasklet、工作队列机制。...1.为什么要软中断 编写驱动的时候,一个中断产生之后,内核在中断处理函数中可能需要完成很多工作。但是中断处理函数的处理是关闭了中断的。也就是说在响应中断时,系统不能再次响应外部的其它中断。...这样的后果会造成有可能丢失外部中断。于是,linux内核设计出了一种架构,中断函数需要处理的任务分为两部分,一部分在中断处理函数中执行,这时系统关闭中断。...在linux系统的进程数据结构里,有这么一个数据结构 #define preempt_count()(current_thread_info()->preempt_count), 利用preempt_count...Linux内核就中断方面就必须考虑平衡这三个方面的问题。而下面我要分析的__do_softirq函数就恰似在这三者之间打太极,游刃有余,面面俱到!

8.7K91

Linux 中断子系统(二):GIC 中断控制器

比如按键中断、串口中断等等,这些中断所有的 Core 都可以处理,不限定特定 Core。...分发器收集所有的中断源,可以控制每个中断的优先级,它总是将优先级最高的中断事件发送到 CPU 接口端。分发器端要做的主要 工作如下: ①、全局中断使能控制。 ②、控制每一个中断的使能或者关闭。...GIC-v3 GIC-v3 架构有改变,中断也变多了,不过还是向后兼容 GIC-v2 的。...寄存器分布,不同东西的寄存器开头不一样: GIC-v 3的中断规定如下,来源于ARM官方文档。 最主要的区别就是增加了 LPI 这个中断类型,是基于消息的中断。...LPI 不一样,它是基于消息的机制,写寄存器就会发一个消息中断,是 ARM 在为未来布局,以后会出一些 server 的产品,独享中断

5.7K20

linux软链接和链接

链接文件 链接文件有两个限制: 1、不允许给目录创建链接; 2、只有在同一文件系统中的文件之间才能创建链接。 对链接文件进行读写和删除操作时候,结果和软链接相同。...用ln -s 命令可以生成一个软连接,如下:   [root@linux236 test]# ln -s  source_file softlink_file   在对符号文件进行读或写操作的时候,系统会自动把该操作转换为对源文件的操作...对链接文件进行读写和删除操作时候,结果和软链接相同。但如果我们删除链接文件的源文件,链接文件仍然存在,而且保留了愿有的内容。     这时,系统就“忘记”了它曾经是链接文件。...二  两者之间的区别 连接指通过索引节点来进行的连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。    ...在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是连接。连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立连接到重要文件,以防止“误删”的功能。

8.6K50

LINUX软链接和链接

1.Linux链接概念 Linux链接分两种,一种被称为链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。...【连接】 连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索 引节点号(Inode Index)。...在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是连接。连接的作用是允许一个文件拥有多个有效路径名,这样用户 就可以建立连接到重要文件,以防止“误删”的功能。...2.通过实验加深理解 [oracle@Linux]$ touch f1 #创建一个测试文件f1 [oracle@Linux]$ ln f1 f2 #创建f1的一个连接文件...f1 file [oracle@Linux]$ cat f3 cat: f3: No such file or directory 通过上面的测试可以看出:当删除原始文件f1后,连接f2不受影响,但是符号连接

8.1K51

Linux 软链接与链接

创建链接就像是创建了原始文件的副本,但实际上它们都指向相同的数据块。...ln [目标文件路径] [链接文件名]例如,要在当前目录下创建一个名为link_file的链接,指向/home/user/desktop/link,可以执行以下命令ln /home/user/desktop.../link link_file这将创建一个链接link_file,它与/home/user/desktop/link 实际上是相同的文件内容。...删除软链接rm [软链接文件名]软链接与链接区别软链接就像是创建了一个快捷方式,指向另一个文件或目录。如果原始文件被删除或移动,软链接失效,因为它只是一个路径的引用。...链接就像是创建了原始文件的副本,但实际上它们都指向相同的数据块。如果原始文件被删除,链接仍然有效,因为它们共享相同的数据块。只能在同一个文件系统中创建。看起来像独立的文件,没有特殊的标志。

25010

Linux中断机制:硬件处理,初始化和中断处理

来源: CSDN | phenix_lord的专栏 硬件处理 最近解决一个关于Linux中断的问题,把相关机制整理了一遍,记录在此。...在linux中可以通过/proc/interrupts查看当前系统中所有中断的统计信息,在/proc/irq/xxx(中断)下面,可以看到该中断的详细信息。...针对X86中断控制器硬件和linux对这些硬件的初始化,在《interrupt in linux》中有很详细的描述。...对应一个该结构,共享相同irq中断共享该结构。...也就是:如果是链接(INT#直接连接到了8259A,没有经过PIR),直接获取irq,如果PIR中已经有该输入线的配置,使用已有的值,否则利用刚刚分配的可用irq,并写入到PIR,以便能够完成中断信号到

7.8K31
领券