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

Linux中断处理

中断处理 - 上半部(硬中断) 由于 APIC中断控制器 有点小复杂,所以本文主要通过 8259A中断控制器 来介绍Linux中断的处理过程。...处理中断请求 当一个中断发生时,中断控制会发送信号给CPU,CPU收到信号会中断当前的执行,转而执行中断处理过程。...鉴于这个原因,Linux中断处理分为两个部分,上半部 和 下半部,上半部 在前面已经介绍过,接下来就介绍一下 下半部 的执行。...softirq机制 中断下半部 由 softirq(软中断) 机制来实现的,在Linux内核中,有一个名为 softirq_vec 的数组,如下: static struct softirq_action...在Linux内核中有两种tasklet,一种是高优先级tasklet,一种是普通tasklet。

6.5K20

Linux中断 - IDT

中断描述符项定义 当中断发生,cpu获取到中断向量后,查找IDT中断描述符表得到相应的中断描述符,再根据中断描述符记录的信息来作权限判断,运行级别转换,最终调用相应的中断处理程序; 这里涉及到Linux...传统系统调用相关 IDT 的设置 Linux系统启动过程中内核压解后最终都调用到start_kernel, 在这里会调用trap_init, 然后又会调用idt_setup_traps: void...,权限是DPL3, 因此从用户态是允许发起系统调用的。..._syscall_32, 这个函数中就会执行具体的中断处理,然后INTERRUPT_RETURN恢复栈,作好返回用户态的准备。...硬件中断相关IDT的初始化也是在Linux启动时完成,在start_kernel中通过调用init_IRQ完成,我们来看一下: void __init init_IRQ(void) { int

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

Linux 中断处理浅析

最近在研究异步消息处理, 突然想起linux内核的中断处理, 里面由始至终都贯穿着”重要的事马上做, 不重要的事推后做”的异步处理思想....但是这个新的中断处理过程并不会进入第四阶段,而是当它发现自己是嵌套的中断时,完成第三阶段之后就会退出了。也就是说,只有第一中断处理过程会进入第四阶段,嵌套发生的中断处理过程只执行到第三阶段。...然而嵌套发生的中断处理过程也可能会触发软中断,所以第一中断处理过程在第四阶段需要是一个循环的过程,需要循环处理嵌套发生的所有软中断。为什么要这样做呢?...据说在montavista(一种嵌入式实时linux)中, 将内核的中断机制做了修改. (某些中断的)中断处理过程被赋予了task结构, 能够被内核调度. 解决了上述两个问题....工作队列 linux基线版本的内核在解决上述问题上, 提供了workqueue机制.

7.3K80

socket接口分析

Linux内核中,Socket的实现分为三,第一是 GLIBC接口,第二是 BSD接口,第三是 具体的协议(如Unix sokcet或者INET socket)。如下图所示: ?...GLIBC用户态实现,提供一系列的socket族系统调用让用户使用。...BSD在内核态实现,主要是为了让不同的协议能够使用同一套接口来访问而创造的,如上图所示, Unix socket 和 Inet socket 都可以通过接入 BSD接口 来向用户提供相同的接口。...GLIBC接口 GLIBC接口 提供了一系列的接口函数供用户使用(可以成为 Socket族系统调用),如下: socket() bind() listen() accept() connect()...主要的方式是 BSD接口 定义了一些接口,具体的协议 必须实现这些接口才能接入到 BSD接口

93920

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

这篇文章以按键为例子讲解linux中断原理,中断的架构,中断的实现。 在我们的开发中,检测按键是否触发,无非就两种方法—轮询和中断。作者认为两种方法最大的区别就是CPU的利用率。...Linux中断原理: 中断:处理器异常的一种,它是一种特殊的电信号,用硬件发给处理器,处理器接收到中断后,会马上向操作系统反映此信号的到来,然后就由操作系统负责处理这些新到来的数据。...dev:与request_irq的参数dev必须一致,将request_irq指定的dev传递给这个参数; Linux中断处理分析: 第一种方式:应用的读,不管什么情况下,都会返回。...第二种方式:应用的读,只有按键按下的时候,才会返回。 Linux中断实现: 这里例子采用等待队列的方式实现(也就是上述的第二种方法)。...ev_press = 1; wake_up_interruptible(&button_wait_queue); return IRQ_RETVAL(IRQ_HANDLED); } 按键值返回用户的实现

4.7K10

linux内核缺页中断处理

6.一旦页框干净后,操作系统查找所需页面在磁盘上的地址,通过磁盘操作将其装入,当页面被装入后,产生缺页中断的进程仍然被挂起,并且如果有其他可运行的用户进程,则选择另一用户进程运行。...9.调度引发缺页中断的进程,操作系统返回调用他的汇编例程 10.该例程恢复寄存器和其他状态信息,返回到用户空间继续执行,就好像缺页中断没有发生过。...linux内核对缺页异常的处理流程很复杂,但是基本思想和上述流程差不多。...而vmalloc出现异常比较好处理,只需要页表同步就可以了(因为伴随着进程的切换可能用户进程的页表不是最新的,需要将内核的页表更新到用户进程的页表),2.内核引用用户空间地址发生的异常,比如用户态的地址非法...下面看linux的基本处理流程: 内核处理缺页异常的主函数就是do_page_fault: /* * 缺页异常处理函数 * pt_regs 各个寄存器的值 * error_code,由硬件产生:

10.6K21

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

linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。...(3)中断嵌套 Linux下硬中断是可以嵌套的,但是没有优先级的概念,也就是说任何一个新的中断都可以打断正在执行的中断,但同种中断除外。软中断不能嵌套,但相同类型的软中断可以在不同CPU上并行执行。...(5)硬中断和软中断的区别 软中断是执行中断指令产生的,而硬中断是由外设引发的。 硬中断中断号是由中断控制器提供的,软中断中断号由指令直接指出,无需使用中断控制器。...(1)定义 软中断是一组静态定义的下半部接口,可以在所有处理器上同时执行,即使两个类型相同也可以。...但它们最终肯定会被执行,所以这个折中的方案能够保证在软中断很多时用户程序不会因为得不到处理时间而处于饥饿状态,同时也保证过量的软中断最终会得到处理。

21.3K21

Linux中断虚拟化(一)

作者简介 王柏生 资深技术专家,先后就职于中科院软件所、红旗Linux和百度,现任百度主任架构师。在操作系统、虚拟化技术、分布式系统、云计算、自动驾驶等相关领域耕耘多年,有着丰富的实践经验。...著有畅销书《深度探索Linux操作系统》(2013年出版)。 谢广军 计算机专业博士,毕业于南开大学计算机系。资深技术专家,多年的IT行业工作经验。...本文内容节选自《深度探索Linux虚拟化技术》,已获得机械工业出版社华章公司授权。...因此,在本章中,我们简单介绍硬件中断的基本原理,然后结合中断的基本原理讨论如何虚拟化中断芯片。...中断芯片可以在用户空间中模拟,也可以在内核空间模拟,但是因为中断芯片需要密集地和Guest以及内核中的KVM模块交互,显然在内核空间模拟更合理,所以KVM在内核中实现中断芯片的模拟。

6.2K30

Linux中断虚拟化(二)

作者简介 王柏生 资深技术专家,先后就职于中科院软件所、红旗Linux和百度,现任百度主任架构师。在操作系统、虚拟化技术、分布式系统、云计算、自动驾驶等相关领域耕耘多年,有着丰富的实践经验。...著有畅销书《深度探索Linux操作系统》(2013年出版)。 谢广军 计算机专业博士,毕业于南开大学计算机系。资深技术专家,多年的IT行业工作经验。...本文内容节选自《深度探索Linux虚拟化技术》,已获得机械工业出版社华章公司授权。...kvm), irq_event.irq, irq_event.level); … break; } … } KVM模块将kvmtool中组织的中断信息从用户空间复制到内核空间中...= -1) returnvector; … } linux.git/drivers/kvm/i8259.c int kvm_pic_read_irq(struct kvm_pic *s)

5.7K10

Linux中断机制分析

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

8.6K91

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

比如按键中断、串口中断等等,这些中断所有的 Core 都可以处理,不限定特定 Core。...GIC-v2 架构分为了两个逻辑块:Distributor 和 CPU Interface,也就是分发器端和 CPU 接口端。...分发器收集所有的中断源,可以控制每个中断的优先级,它总是将优先级最高的中断事件发送到 CPU 接口端。分发器端要做的主要 工作如下: ①、全局中断使能控制。 ②、控制每一个中断的使能或者关闭。...CPU Interface(CPU 接口端):CPU 接口端听名字就知道是和 CPU Core 相连接的,因此在图中每个 CPU Core 都可以在 GIC 中找到一个与之对应的 CPU Interface...CPU 接口端 就是分发器和 CPU Core 之间的桥梁,CPU 接口端主要工作如下: ①、使能或者关闭发送到 CPU Core 的中断请求信号。 ②、应答中断。 ③、通知中断处理完成。

5.5K20

用户体验要素——战略

战略——产品目标和用户需求的组合 知道企业与用户双方对产品的期许和目标,有助于促进战略的确立和制定 在做任何一个产品之前一定要自问两个问题: 我们要通过这个产品得到什么?...“产品目标”和“用户目标”组成了战略,而战略的认知会一直提示我们在设计产品体验过程中的每一个决定的方向基础,所以最关键的是【确认】,确认双方的需求如何被满足!...用户细分 我们需要把用户的需求做成若干个可管理的版块,在用户细分的时候,将按照用户类型来区分用户细分的群组,换句话说,有多少用需求类型、有多少种用户,需要按照版块分类,然后一一匹配。...在用户细分时,需要将用户划分成较小的,有共同需求的小组,可以帮助我们更好的了解用户需求。...创建细分用户群只是一种用于“揭示”用户最终需求的手段,你真正只需要得到的是和你发现的“用户需求数目”一样多的细分用户群 创建细分用户群还有个重要的原因,是因为不同用户群有着不同的需求,而且这些需求有时候是彼此矛盾的

66540

用户体验要素】框架

【做某事】的能力,属于“界面设计”,用户能真正接触到哪些“在结构的交互设计中”确定“具体功能” 提供给用户【去某个地方】的能力,属于“导航设计”信息:把一个结构应用到我们设定好的“内容需求列表”之中,...但是这种被应用于很多行业,比如ATM取款机的密码键盘、比如遥控器····我想表达的是,有些用户已经固话的模式没必要去改变,互联网本质不是改变用户,而是创建一种更合理更有效的方式,去服务用户,并且用户很喜欢...,确不知道如何选择”,所以说,设计界面中的元素,很大的挑战就是做减法,把用户现在用不到的,或者这里面其实没必要展示的全部砍掉,放在另一个用户有可能会思考的地方,才对~ 技巧:这个界面第一次呈现给用户的时候...默认值,很影响用户接下来的操作和看到的反馈~ 还有一个办法,能自动记住某个用户最后一次选择的状态 是不是突然想起微信读书?...因为用户在看书的过程中,如果碰到需要会员的地方,一定会选择,而不是各种弹框提醒的打扰~ 导航设计 任何一个网站的导航实际都必须完成以下三种目标 1、必须提供给用户一种在网站间跳转的方法(链接真实有效并且能引导用户点击打开

87510

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

3、 对X86系统,CPU利用从中断控制器获取到的vector为索引,查询IDT (interrupt descriptor table)得到该中断的处理接口(对linux,是在entry_64.s中定义的函数...4、 在linux定义的common_interrupt接口中,执行完中断执行环境建立后,会进入generic interrupt layer执行,其首先通过vector查找到irq和对应的irq_desc...4、 struct irq_desc结构,用来描述一个中断,是内核generic interrupt layer的关键数据结构,其包含了中断的大部分信息,并连接了driver和物理中断设备,每个irq...它的关键成员包括: a) irq_data :为该中断对应的物理中断设备相关的数据。 b) handle_irq:为该该中断使用的通用逻辑接口。...Generic interrupt layer 该负责的是平台无关/设备无关的中断通用逻辑,对这部分,在《Linux generic IRQ handling》中有详细描述。

7.7K30

Linux 中断子系统(三):中断处理知识点大全

Linux 中断相关节点 /proc/interrupts cat 这个节点,会打印系统中所有的中断信息,如果是多核CPU,每个核都会打印出来。...更多介绍请参看 Linux 内核源代码自带的文档:linux-4.14/Documentation/IRQ-affinity.txt /proc/irq/{IRQ}/smp_affinity /proc...所以 Linux 下: 1、高优先级中断无法抢占正在执行的低优先级中断。 2、同处于 pending 状态的中断,优先响应高优先级中断进行处理。...如果低优先级中断处于 active 状态,是不可以被抢占的,这是前后关系。抢占只存在于同时是pending 状态的时候。 Linux 为什么中断不允许休眠?...对于这类中断linux kernel有一套复杂的机制来处理,你可以通过command line参数(noirqdebug)来控制开关该功能。

4.7K20

Linux内核笔记之中断映射

中断和虚拟中断号 在Linux 内核笔记之高层中断处理一文中,介绍了ARM gic中断控制器对于硬中断的处理过程。...gic的中断处理程序是从ack一个硬件中断开始的, 在gic的中断处理过程中,会根据中断的映射去寻找对应的虚拟中断号, 再去进行后续的中断处理。...对于软件工程师而言,我们不需要care是中断哪个中断控制器的第几个中断号, 因此linux kernel提供了一个虚拟中断号的概念。...irq_domain 接下来讨论硬件中断号是如何映射到虚拟中断号的linux kernel提供irq_domain的管理框架, 将hwirq映射到虚拟中断号上。...外设的驱动初始化过程中,创建硬中断和虚拟中断号的映射关系设备的驱动在初始化的时候可以调用irq_of_parse_and_map这个接口函数进行该device node中和中断相关的内容的解析,并建立映射关系

5K30

Linux中断下半部实现机制

中断上、下半部产生背景 由于内核中中断不允许嵌套,在程序进入中断后,系统会关闭中断接收,这段时间内,其他中断都无法处理导致中断无法响应,因此需要当前进入的中断子服务函数越快越好。...但是在一些特殊情况下,中断要处理的事情可能是复杂且冗长的,为解决这种问题, 中断上下半部的概念顺势而生。将中断拆成两部分,上半部用来处理紧急的事情;下半部用来处理不紧急的事情。 2....tasklet是以软中断形式实现的,软中断的优先级仅次于硬件中断,在进入软件中断时,硬件中断会被打开,因此软件中断可被硬件中断打断。 使用: 软中断实现服务子函数,优先级高,影响系统执行效率。 a....(3) 线程中断:由于工作队列每次只能处理一个中断下半部,但是内核支持多线程,因此出现为每一个中断下半部开辟一个线程处理。将多个中断的下半部线程分配给多个CPU上执行,提高效率。...在程序中调用request_threaded_irq 原型: /* irq: 中断号 * handler: 中断服务子函数 * thread_fn: 中断线程化 * irqflags: 中断触发标志位

3.1K10

Microsoft 365服务中断,可能影响全球用户

3月15日下午,Microsoft 365服务发生中断,导致用户无法登录使用Microsoft Teams、Exchange Online、Forms、Xbox Live和Yammer等服务。...微软已确认该问题会影响全球用户。 据查,服务中断原因是Azure Active Directory(AAD)配置问题。...用户在推特上发帖称服务中断 微软技术社区经理表示“截至目前微软遭遇AAD问题,登录和认证受影响,导致用户无法登录,还会影响已经登录的用户,发生意外错误或会话超时等问题。”...随后,微软在Microsoft 365事件报告MO244568中确认中断,表示Microsoft联机服务中断是AAD配置问题。...去年9月,Office 365、Teams、OneDrive和其他一些在线服务也遭遇中断。但公司发言人并未回应中断原因。

56730
领券