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

Linux 内核如何处理中断

此外,键盘并不是导致中断的唯一组件。一般来说,有三种类型的事件会导致 CPU 发生中断:硬件中断、软件中断和异常。在具体介绍不同类型的中断前,我需要先定义一些术语。...当系统需要实时性时(例如在工业应用中),软件中断会变得重要。你可以在 Linux 基金会的文章中找到更多相关信息:面向嵌入式开发者的实时 Linux 介绍。...中断描述表(interrupt descriptor table)(IDT)中记录了中断请求(IRQ)和中断服务程序(ISR)的对应关系。Linux 中定义了从 0 到 256 的 IRQ 向量。...为了打印出在你的系统中已注册的中断,打开一个终端并输入: cat /proc/interrupts 你应该会看到类似如下图的结果: image.png 从左到右各列的含义依次为:中断向量、每个 CPU...其中一些在 Linux 内核源树中的Linux IRQ 向量布局中指定。 如果要实时获取该表,请运行如下命令: watch -n1 "cat /proc/interrupts"

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

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.5K20

Linux中断 - IDT

[toc] 如何设置IDT IDT 中断描述符表定义 中断描述符表简单来说说是定义了发生中断/异常时,CPU按这张表中定义的行为来处理对应的中断/异常。...中断描述符项定义 当中断发生,cpu获取到中断向量后,查找IDT中断描述符表得到相应的中断描述符,再根据中断描述符记录的信息来作权限判断,运行级别转换,最终调用相应的中断处理程序; 这里涉及到Linux...硬件中断相关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中,当阻塞于某个慢系统调用的进程捕获一个信号,则该系统调用就会被中断,转而执行信号处理函数,这就是被中断的系统调用。...如果信号处理函数是用signal注册的,系统调用会自动重启,函数不会返回 如果信号处理函数是用sigaction注册的 默认情况下,系统调用不会自动重启,函数将返回失败,同时errno被置为EINTR 只有中断信号的...SA_RESTART标志有效时,系统调用才会自动重启 下面我们编写代码,分别验证上述几种情形,其中系统调用选择read,中断信号选择SIGALRM,中断信号由alarm产生。...SA_RESTART标志,使用sigaction的默认处理方式 //act.sa_flag |= SA_INTERRUPT; //SA_INTERRUPT是sigaction的默认处理方式,即不自动重启被中断的系统调用...由于对被中断系统调用处理方式的差异性,因此对应用程序来说,与被中断的系统调用相关的问题是: 应用程序无法保证总是知道信号处理函数的注册方式,以及是否设置了SA_RESTART标志 可移植的代码必须显式处理关键函数的出错返回

2.5K10

Linux 如何查看目录大小

du命令 参考文章:how to check directory size in Linux 用于显示目录或文件的大小。...显示当前目录文件或者文件占用空间:du 显示指定文件或文件夹的大小:du test.txt 方便阅读的格式查看目录所占空间情况:du -h test 仅显示当前文件夹的总计:du -s * 以方便阅读的方式查看指定目录层级的空间占用情况...:du -lh --max-depth=1 du命令排序 查看目录大小的命令是du(当然也可以查看文件大小),例如:du ems_data,就是查看ems_data目录下各子目录的大小;du,就是查看当前目录下各子目录的大小...;du *,就是查看当前目录下各子目录和文件的大小。...为了提高查看效果,我们需要对结果进行排序,因为du的命令结果很乱,例如: 从大到小排列:du ems_data | sort -nr 按目录名排列:du ems_data | sort +1 -2 选出排在前面的

30.7K30

如何查看电脑Windows系统的激活序列

今天分享一下如何查看自己电脑的激活序列,以免大家重装系统之后不知道激活序列是多少?...同时也为了防止大家电脑坏了时拿去修理店修理,被盗了序列主之前就遇见过这么一件事,电脑拿去修理拿回来电脑却显示未激活,而且当时的系统还是预装正版系统,所以防患于未然总没错,接下来就开始今天的内容。...方法简介 有两种方法可以查看:这里以win7系统为例: 方法一 采用工具AIDA64查看: AIDA64简介 AIDA64[1]是一款测试软硬件系统信息的工具,它可以详细的显示出PC的每一个方面的信息。...如何使用? 双击程序即可:然后找到操作系统选项进去,就可以看到了鉴于此类图片在这里不能显示,只能大家自己尝试了。...——来源搜狗百科 下载 见后台自动回复序号 3、资源汇总 或者大家自行百度搜索 方法二 用注册表编辑器查看,额(⊙o⊙)…这个比较复杂,就不详细介绍了,见文章末尾阅读原文 以上就是本次的内容,希望能帮助到各位

5.4K50

Linux如何查看版本信息

Linux如何查看版本信息, 包括位数、版本信息以及CPU内核信息、CPU具体型号等等,整个CPU信息一目了然。   ...1、# uname -a   (Linux查看版本当前操作系统内核信息)   Linux localhost.localdomain 2.4.20-8 #1 Thu Mar 13 17:54:28 EST...2003 i686 athlon i386 GNU/Linux   2、# cat /proc/version (Linux查看当前操作系统版本信息)       Linux version 2.4.20...Hat Linux release 9 (Shrike)   4、# cat /proc/cpuinfo (Linux查看cpu相关信息,包括型号、主频、内核信息等)   processor       ...查看版本说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit)   Linux查看版本说明当前CPU运行在32bit模式下   6、# lsb_release -a

21K20

Linux如何查看项目日志文件

所以这个过程中日志查看是很用的,我们项目一般部署在Linux环境,所以对于查看日志,也是需要了解熟悉Linux的相关命令才能查看的。...本文将详细介绍如何Linux环境下查看Java项目的日志文件,关于tail命令的用法,同时推荐快捷方便的工具。1....使用命令行工具查看日志定位到项目日志文件,就可以进行查看了,可以是vim命令打开文件,但是日志文件一般很大,所以Linux提供了多种命令行工具来查看和操作文件,包括查看日志文件。...但是这些都是在Linux服务器进行操作的,一不小心容易出错,所以推荐一个小工具NppFTP,可以直接在notepad安装插件,安装完成直接就可以在Windows系统查看文件一言查看日志。...总结总的来说,日志查看是每个程序必备的技能。在Linux环境下查看Java项目的日志文件需要了解日志文件的位置和如何使用命令行工具、文本编辑器或专门的日志查看工具来查看和解析它们。

18610
领券