问题标签 [interrupt-handling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
x86 - 谁初始化 IDT、内核或处理器?
这是来自维基百科...
中断描述符表 (IDT) 是 x86 架构用来实现中断向量表的数据结构。处理器使用 IDT 来确定对中断和异常的正确响应...在 8086 处理器中,IDT 驻留在内存中从地址 0x0000 到 0x03ff 的固定位置...
这是来自http://www.linuxjournal.com/article/4048?page=0,1
当 start_kernel(在 /usr/src/linux/init/main.c 中找到)被调用时,它会调用 trap_init(在 /usr/src/linux/kernel/traps.c 中找到)。trap_init 通过宏 set_trap_gate(位于 /usr/include/asm/system.h)设置 IDT 并初始化中断描述符表,如“Offset Descriptionis”表所示。
我很困惑,因为这两个描述似乎对比...第一个说 IDT 与处理器相关并且独立于内核(实际上它甚至不位于内核中)。第二个说 Linux 内核初始化 IDT 并实现 ISR 的代码,而 ISR 的所有代码都位于内核中。
另外,当设备向 CPU 产生中断时,是内核还是处理器负责执行中断例程?请向我解释一下......提前谢谢你
c - 如何创建中断表
我的操作系统课有一个家庭作业,我需要为模拟操作系统编写一个中断表。从之前的任务中,我已经设置了适当的驱动程序:
我的理解是,我应该有一个中断类型数组,沿线interrupt_table[x]
,其中x
= 0 表示陷阱,x
= 1 表示时钟中断等。interrupt_table
应该包含指向每种中断类型的适当处理程序的指针,这应该然后打电话给合适的司机?我是否正确理解这一点?谁能指出我创建这些处理程序的正确方向?
谢谢您的帮助。
perl - perl 调用 shell——中断 ^C 停止 shell,而不是 perl
我想使用 Perl 脚本来批处理使用 system() 调用的重复操作。当出现问题并且我想中断这个脚本时,^C 被 shell 捕获,停止任何工作,并且 Perl 脚本愉快地进行下一个。
有没有办法可以调用该作业,以便中断将停止 Perl 脚本?
assembly - 中断返回(RTI)和子程序返回(RTS)的区别
我想知道从中断(RTI)返回和从子程序(RTS)返回有什么区别。两者是相同的还是两者之间有什么区别?
memory - 为什么 IA-32 架构在调用中断处理程序之前将 EFLAGS 寄存器压入堆栈?
仅仅是因为 EFLAGS 寄存器像开关一样工作吗?所以当它处于活动状态时,中断被启用,否则,它不是?
比如说,在 Java 程序中,它会是这样的,
interrupt-handling - 和 ISR 的下半部分
我在一次采访中被问到这个问题。为什么不允许中断服务程序的下半部分在其中休眠。我的回答是,由于在执行 ISR 时中断将被屏蔽,如果下半部分休眠,我们将错过一些中断。我无法思考其他任何事情。这是正确的答案吗?任何人都可以想到任何其他原因。
python - linux下python中访问并口中断
是否有任何诸如 python 模块之类的东西可以让我在 Linux 下访问并行端口中断(引脚 10)?
PS 不要回复“PyParallel”,除非你能给我提供一个工作示例!
assembly - 向量中断
向量中断和非向量中断有什么区别?
我认为所有中断都必须是向量中断...毕竟并非所有中断都有一个向量编号,因此不是一个具有特定 ISR [中断服务例程] 的向量
(ISR 地址将在页表中,位于 4 * 产生中断的设备中的向量 #;假设是 32 位地址架构)....
谢谢!
c++ - 中断处理程序中的浮点操作(PowerPC、VxWorks)
我还没有找到任何资源可以准确地回答我在我正在开发的软件中看到的问题,所以我会在这里问天才!
首先,我在 PowerPC 处理器上运行 VxWorks。
在尝试调试一个单独的问题时,我尝试在中断处理例程中抛出一些快速而肮脏的调试代码。它涉及一个双精度浮点运算来存储一个感兴趣的值(即,自从我看到最后一次中断进来以来已经过了多长时间),我稍后在我正在运行的线程中的处理程序之外使用它。我没有看到这方面的问题(当然,这需要更长的时间,但从时间上讲,我很满意;中断不会太快出现)但是 VxWorks 肯定不喜欢它。它在到达该代码时始终崩溃,这是重新启动系统的严重崩溃之一。我花了一些时间才找到作为问题根源的双重操作,我意识到它甚至不是双重“操作”,甚至从中断中调用的例程中返回一个常量双重失败也惨遭失败。
在 PowerPC(或一般的其他架构)上,在中断处理程序中执行浮点操作并在中断处理程序调用的函数中返回浮点(或其他类型)值通常存在问题?我不知道为什么这会导致程序崩溃。
(解决方法是将自上次中断以来的“滴答声”转换为自上次中断以来的“时间”,直到代码超出处理程序,因为它似乎可以很好地处理长整数操作。)
memory - 读取内存有问题
当我通过调试器运行我的代码时,经过一系列步骤后,它最终会丢失并无序执行命令。我不确定堆栈是否溢出或什么。
这是我通常得到的错误:
MSP430:在长度为 0x1d2 的第 0 页上的 0xffe2e 处读取内存块时出现问题:参数无效
关于它可能是什么的任何建议?我简要阅读了有关不处理某些中断的可能问题。
另外,我正在尝试用特定值填充我的 RAM,以便我可以判断堆栈是否溢出,关于如何填充整个 RAM 的任何建议,比如值 0x1234?
谢谢!