小编Ash*_*sev的帖子

键盘中断如何最终成为进程信号

我正在通过 O'Reilly 的“理解 Linux 内核”学习 linux 内核,最近涵盖了信号和中断处理章节,坚持一些基本的 2.4 linux 版本,并就我所能理解的代码深入研究。

然而,我无法向自己解释,也无法在别处找到答案,比如说,当 actrl + c被按下以运行在 shell 中的进程时,发生的指令流是什么。

到目前为止我所做的:

  1. 一旦键盘按下 APIC 将 IRQ 线提升到 CPU
  2. 如果中断不可屏蔽,则 cpu 加载相应的 int。来自 IDT 的处理程序
  3. 比,一些关键的int。调用处理程序代码,进一步处理char从键盘设备在 APIC 中的寄存器到其他寄存器的按下

从这里对我来说很模糊。

不过我确实理解,中断处理不在进程上下文中,而异常在进程上下文中,因此很容易弄清楚异常如何更新current->thread.error_codecurrent->thread.trap_no最终调用force_sig. 然而,一旦中断处理程序被执行,如上面的例子,它如何最终进入所需进程的上下文并生成信号?

kernel signals interrupt linux-kernel

5
推荐指数
1
解决办法
7196
查看次数

标签 统计

interrupt ×1

kernel ×1

linux-kernel ×1

signals ×1