中断管理
文章平均质量分 59
kaka__55
这个作者很懒,什么都没留下…
展开
-
谈谈对linux操作系统中断和异常的理解
先来个网上到处都有的定义吧:中断可分为同步(synchronous)中断和异步(asynchronous)中断:同步中断是当指令执行时由 CPU 控制单元主动产生,之所以称为同步,是因为只有在一条指令执行完毕后 CPU 才会发出中断,而不是发生在代码指令执行期间,比如系统调用,根据 Intel 官方资料,同步中断称为异常(exception),异常可分为故障(fault)、陷阱(trap)、终止(abort)三类。异步中断是指由其他硬件设备依照 CPU 时钟信号随机产生,即意味着中断能够在指令之间发生原创 2021-11-28 18:22:51 · 1355 阅读 · 0 评论 -
用户态中断在KAKAOS上的实现
之前linux内核社区提出来用户态中断的概念,详见 链接 ,主要功能如下:如果该进程正在用户空间中运行,那么 handler 函数将会被立即调用,并取得相应的 vector 编号。一旦 handler处理程序返回了,那么就会在之前被中断的位置继续执行。如果接收者此时被阻塞在内核的系统调用中,那么该中断将会在返回到用户空间时被触发,也就是说并不会打断当前正在进行的系统调用。嗯,按照我的理解来说,就是一个用户态进程运行的好好的,如果系统中其他进程或者内核认为这个用户态进程需要紧急响应某个事情,就向这个进原创 2021-10-24 12:24:15 · 237 阅读 · 0 评论 -
处理softirq的时候能响应硬件中断吗?
对这个问题一直很好奇,这里特指的完成硬件中断的处理后去处理软中断的时候,而不是ksoftirqd线程处理软中断的时候。我们知道,中断退出前会调用irq_exit函数,irq_exit函数一进来就把中断关了(我觉得是为了防止注册的中断处理函数把中断打开的情况),然后最后调用到了invoke_irq()处理软中断,那么调用invoke_irq()的时候,硬件中断是disable的void irq_exit(void){#ifndef __ARCH_IRQ_EXIT_IRQS_DISABLED loca原创 2021-09-25 11:24:53 · 165 阅读 · 0 评论 -
为什么local_bh_disable对抢占计数器的软中断域加2
为什么local_bh_disable对抢占计数器的软中断域加2代码分析基于4.19.195我们先看一下代码#define SOFTIRQ_DISABLE_OFFSET (2 * SOFTIRQ_OFFSET)static __always_inline void __local_bh_disable_ip(unsigned long ip, unsigned int cnt){ preempt_count_add(cnt); barrier();}static inline void原创 2021-09-05 17:13:46 · 710 阅读 · 4 评论