interrupt相关内容

如果段错误不可恢复,为什么称为错误(而不是中止)?

我对术语的以下理解是这样的 1) 中断 是由硬件发起的“通知",用于调用操作系统以运行其处理程序 2) 陷阱 是由软件发起的“通知",用于调用操作系统以运行其处理程序 3) 错误 是一个异常,如果发生错误但可以恢复,则由处理器引发 4) 中止 是处理器在发生错误但不可恢复时引发的异常 为什么我们称它为 segmentation fault 而不是 segmen ..
发布时间:2022-01-11 23:31:44 其他开发

调用门、中断门、陷阱门的区别?

我正在学习英特尔保护模式.我发现调用门、中断门、陷阱门几乎是一样的.事实上,除了 Call Gate 有参数 counter 的字段,而且这 3 个门的 type 字段不同之外,它们在所有其他字段上都是相同的. 就其功能而言,它们都是用来将代码控制转移到某个代码段内的某个过程中. 我想知道,因为这 3 个门都包含跨权限边界调用所需的信息.为什么我们需要 3 种?1 还不够好吗? ..
发布时间:2022-01-11 23:16:52 其他开发

基于轮询或中断的方法

什么时候应该使用轮询方法,什么时候应该使用基于中断的方法?有没有可以同时使用的场景? 解决方案 如果感兴趣的事件是: 异步 紧急 不常见 那么基于中断的处理程序就有意义了. 如果感兴趣的事件是: 同步(即你知道什么时候在一个小窗口内期待它) 不紧急(即缓慢的轮询间隔没有不良影响) 频繁(即您的大多数轮询周期都会产生“命中") 那么轮询可能更合适. ..
发布时间:2022-01-11 23:05:00 其他开发

什么是 INT 21 小时?

受这个问题的启发 如何强制 GDB 反汇编? 我想知道 INT 21h 作为一个概念.现在,我对内部结构有了一些非常生疏的知识,但没有那么多细节.我记得在 C64 中有常规中断和不可屏蔽中断,但我的知识到此为止.你能给我一些线索吗?是 DOS 相关的策略吗? 解决方案 来自 这里:用于各种功能的多用途 DOS 中断,包括读取键盘和写入控制台和打印机.它还用于使用早期的文件控制块 ..
发布时间:2022-01-11 23:01:56 其他开发

如何在编译/链接时使用地址进行计算?

我编写了一些代码来初始化 IDT,它将 32 位地址存储在两个不相邻的16 位半.IDT 可以存储在任何地方,您可以通过运行 LIDT 指令告诉 CPU 在哪里. 这是初始化表格的代码: void idt_init(void) {/* 不幸的是,我们不能把它写成循环.第一个选项,* 用地址初始化 IDT,在这里循环它,并且* 重新初始化描述符不起作用,因为分配了一个*一个uintptr_t ..
发布时间:2022-01-11 15:24:53 其他开发

陷阱和中断有什么区别?

陷阱和中断有什么区别? 如果不同系统的术语不同,那么它们在 x86 上的含义是什么? 解决方案 A 陷阱 是用户进程中的异常.它是由除以零或无效的内存访问引起的.这也是调用内核例程(系统调用)的常用方法,因为那些以更高优先于用户代码.处理是同步的(因此用户代码被挂起并在之后继续).从某种意义上说,它们是“主动的"——大多数时候,代码期望陷阱发生并依赖于这个事实. 中断 是由硬件 ..
发布时间:2022-01-06 12:59:24 其他开发

静态全局变量和静态 volatile 变量有什么区别?

我在文件范围内使用了一个静态全局变量和一个静态 volatile 变量, 两者都由 ISR 和主循环更新,主循环检查变量的值. 这里在优化过程中,全局变量和 volatile 变量都没有被优化.因此,不是使用 volatile 变量,而是使用全局变量来解决问题. 那么使用全局变量而不是 volatile 好吗? 使用静态 volatile 的任何具体原因? 任何示例程序都是可观的. 提 ..
发布时间:2022-01-05 20:24:53 其他开发

中断处理程序可以被抢占吗?

我知道 linux 执行嵌套中断,其中一个中断可以“抢占"另一个中断,但是其他任务呢. 我只是想了解 linux 如何处理中断.它们可以被其他用户任务/内核任务抢占吗. 解决方案 简单回答:一个中断只能被更高优先级的中断中断. 因此中断可以被内核或用户任务中断如果中断的优先级低于内核调度程序中断优先级或用户任务中断优先级. 请注意,“用户任务"是指用户定义的中断. ..
发布时间:2022-01-04 22:50:02 服务器开发

什么是 linux irq 域,为什么需要它们?

什么是 irq 域,我阅读内核文档(https://www.kernel.org/doc/Documentation/IRQ-domain.txt) 他们说: 注册为唯一 irqchips 的中断控制器的数量呈现上升趋势:例如不同类型的子驱动程序例如 GPIO 控制器避免重新实现相同的回调通过对中断进行建模,将机制作为 IRQ 核心系统处理程序作为 irqchips,即实际上级联中断控制器. ..

softirq 和 tasklet 在哪个上下文中?

我知道有进程上下文和中断上下文,但我不明白在执行softirq或tasklet时,它是在哪个上下文下运行的. 我看到有些人使用术语“下半部分上下文",如果有这样的术语,与其他术语相比有什么区别. softirq 和 tasklet 的另一个问题是为什么在执行过程中不允许睡眠?? 谁能帮我找出这些问题,谢谢!! 解决方案 softirq 和 tasklet 都是一种底层机制 ..
发布时间:2022-01-04 22:40:02 服务器开发

如何在 Linux 内核模块中设置周期性定时器回调

我正在开发一个 Linux 内核模块,该模块为来自定制板的中断注册回调,并将接收到的数据放入字符设备接口后面的队列中,以供应用程序处理.该模块即使没有来自板卡的中断,也需要不断监测和测量来自板卡的中断和数据,所以它又有一个按时间触发的回调. 当前实现使用 RTC 中断作为恒定定时器源.我禁用内核 RTC 驱动程序 (CONFIG_RTC_DRV_CMOS) 并请求 IRQ 8 并将计时器回调 ..

使用延迟消除 Arduino ISR 中的限位开关

我有一个连接到 arduino Mega 2650 的限位开关,用于运动控制.限位开关的两个常开触点连接到 Arduino 引脚和地,因此当限位开关接合时,Arduino 引脚会短路接地. 正如预期的那样,我在此设置中遇到了弹跳问题.我在 ISR 中使用计数器确认了它.最后,我编写了以下代码,它似乎可以可靠地识别我的限位开关在任何给定时间点是接合还是断开. const int lsOute ..
发布时间:2022-01-01 21:43:23 其他开发

实时 Linux:禁用本地定时器中断

TL;DR:实时使用带有 NO_HZ_FULL 的 Linux 内核我需要隔离进程以获得确定性结果,但/proc/interrupts 告诉我仍然存在本地定时器中断(等等).如何禁用它? 长版: 我想确保我的程序没有被中断,所以我尝试使用实时 Linux 内核.我正在使用 arch Linux 的实时版本(AUR 上的 linux-rt)并且我修改了内核的配置以选择以下选项: CON ..
发布时间:2021-12-31 15:46:59 其他开发

如何在 C++ 中实现带有中断的计时器?

我正在使用 GCC 编译器和 C++,我想制作一个计时器,当倒计时为 0 时触发中断. 有什么想法吗?提前致谢. 编辑 感谢 Adam,我知道该怎么做. 现在.多个计时器并行运行怎么样? 实际上,这些计时器用于非常基本的事情.在 NCURSES 中,我有一个清单.当我按下一个键时,其中一个会改变颜色 5 秒钟.如果我按下另一个键,列表中的另一件事也会做同样的事情.这就 ..
发布时间:2021-12-31 15:31:50 C/C++开发

Java长时间运行任务线程中断与取消标志

我有一个长时间运行的任务,例如: public void myCancellableTask() {而(一些条件){checkIfCancelRequested();做一些工作();}} 可以取消任务(请求取消并且 checkIfCancelRequested() 检查取消标志).通常,当我编写这样的可取消循环时,我使用一个标志来指示已请求取消.但是,我知道我也可以使用 Thread.inte ..
发布时间:2021-12-28 23:05:27 Java开发

正在运行时中断汇编指令

当中断到达 CPU 时,如果它被确认,则通过在跳转到处理程序之前保存当前地址位置来处理它.否则将被忽略. 我想知道汇编指令调用是否被中断. 例如 mvi a, 03h ;将 3 值放入 acc.在 8080 组装 单行指令可以中断吗?或者如果不是,它是原子的?? 是否总能保证“一行汇编指令"总是原子的?? 如果没有“lock"关键字,即在 8080 程序集中,那么原子性 ..

delphi 定时器的滴答声比定时器服务中断例程快

嗨,我被要求为某人维护一个基于 Delphi 5 的程序,该程序使用一个计时器对象每 50 毫秒进行一次滴答,并且在每次超时时运行单线程代码块.我只是想知道,如果执行此代码块所花费的时间长于计时器滴答间隔会发生什么,这会不会很糟糕?例如,它会导致访问冲突等问题吗?Delphi默认是如何处理这种情况的?非常感谢. 解决方案 计时器的滴答声不会中断您的代码. 计时器滴答以窗口消息的形式传 ..
发布时间:2021-11-26 20:15:02 其他开发

ARM Cortex-M处理器硬故障处理中的冗余代码

来自 FreeRTOS.org,关于调试硬故障&其他例外在 ARM Cortex-M3 和 ARM Cortex-M4 微控制器上,根据 FreeRTOS 人员的说法,我们可以使用以下代码来调试 ARM Cortex-M 硬故障- /* 故障处理程序实现调用一个名为prvGetRegistersFromStack().*/静态无效HardFault_Handler(无效){__asm 不稳定(" ..
发布时间:2021-11-17 22:41:55 其他开发