标签: interrupt

使 IRQ SMP Affinity 更改永久化

我必须永久更改中断的 smp_affinity。服务器重启时需要执行以下代码:

echo "1" > /proc/irq/152/smp_affinity_list
echo "2" > /proc/irq/151/smp_affinity_list
echo "3" > /proc/irq/150/smp_affinity_list
echo "4" > /proc/irq/149/smp_affinity_list
echo "5" > /proc/irq/148/smp_affinity_list
echo "6" > /proc/irq/147/smp_affinity_list
echo "7" > /proc/irq/146/smp_affinity_list
echo "8" > /proc/irq/145/smp_affinity_list
echo "9" > /proc/irq/144/smp_affinity_list
echo "10" > /proc/irq/143/smp_affinity_list
echo "11" > /proc/irq/142/smp_affinity_list
echo "12" > /proc/irq/141/smp_affinity_list
echo "13" > /proc/irq/140/smp_affinity_list
echo "14" > /proc/irq/139/smp_affinity_list
echo "15" > /proc/irq/138/smp_affinity_list
echo "16" > /proc/irq/137/smp_affinity_list
Run Code Online (Sandbox Code Playgroud)

我已将这些行添加到 /etc/rc.local 文件中,但更改并未应用于系统。我还添加了 echo "test" > /root/test ,它被正确执行,所以 rc.local 文件被执行。系统运行的是 Debian 6.0。

debian interrupt smp

6
推荐指数
1
解决办法
7463
查看次数

什么决定了中断是 IO-APIC-edge 还是 IO-APIC-level?

查看/proc/interruptsx86 Linux 上的内容,我看到一些中断IO-APIC-edge是IO-APIC-level.

我想知道是什么决定了中断类型,是中断产生设备、中断控制器(APIC)、Linux内核还是BIOS?

(我想知道的原因是因为我将 PCI 卡从双处理器 Pentium III 系统IO-APIC-level移到了双处理器 Xeon 系统,在那里它被识别为IO-APIC-edge)

linux pci hardware interrupt x86

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

时间中断之后是否总是会调用调度程序?

当定时器中断发生时,ISR 被调用来服务该中断。

是否可以假设每个计时器中断都以调用调度程序结束,下一个进程应该继续运行?

可以概括地说每个中断都必须以调度程序调用结束吗?

linux scheduling interrupt linux-kernel

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

如何以编程方式检测设备何时引发中断?

如何以编程方式检测设备何时引发中断?这可能发生在设备连接或断开连接时。

\n\n

还有这种情况:例如:当手指放在指纹扫描仪上时,会引发中断。如何检测并可能捕获此中断?

\n\n

我想使用 Gtkmm 编写一个应用程序,这样当发生事件(例如插入 CD 或插入随身碟)时,我会捕获这些设备引发的中断,并使用它在我的应用程序中执行涉及这些设备的操作。

\n\n

如果在 Gtkmm 中无法完成,我可以在较低级别捕获中断并通知 Gtkmm 应用程序吗?

\n\n

我正在检查 GParted 的行为方式。它最初显示/dev/sda,当我连接我的随身碟时,它自动打开files应用程序。当我检查 GParted 时,设备的下拉菜单中不存在随身碟。仅当我在 GParted 菜单中选择 \xe2\x80\x9cRefresh Devices\xe2\x80\x9d 或Ctrl+时,它才会出现R。

\n

linux signals devices interrupt

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

Ctrl+c 和 Ctrl+z 中断/暂停作业

要终止挂起的作业,我使用Ctrl+c向挂起的作业发送中断信号。有时这不会停止工作,至少不会立即停止。然后我可以使用Ctrl+z暂停作业,然后用kill %1(或任何作业编号)终止它。

为什么+在干扰工作方面比Ctrl+z更强大?有时,甚至+ 都不起作用。在这种情况下是否可以使用其他组合键?CtrlcCtrlz

我试过了stty -a,但列出的其他组合键都没有为我做任何事情。

shell terminal signals interrupt

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

VMware 下的 Linux 虚拟机何时需要“irqbalance”?

我在 VMware Enterprise 5.5 中有一个 Linux 场。这些虚拟机(大部分)是 64 位 amd64 Debian Jessie 服务器,带有 SysVinit,而不是 systemd。VM 已安装open-vm-tools。

我对他们的以太网和磁盘控制器进行了半虚拟化。

半虚拟驱动程序是虚拟化平台不必模拟其他设备的驱动程序,例如 Intel E1000 NIC 或 LSI Logic SAS SCSI 适配器。这些半虚拟驱动程序基本上通过放弃模拟层来消除中间人,这通常会导致性能显着提高。

可以lspci | egrep "PVSCSI|VMXNET"看出,以太网和磁盘现在已实现半虚拟化:

3:00.0 Serial Attached SCSI controller: VMware PVSCSI SCSI Controller (rev 02)
0b:00.0 Ethernet controller: VMware VMXNET3 Ethernet Controller (rev 01)
Run Code Online (Sandbox Code Playgroud)

对 is进行 cat 操作/proc/interrupts很容易表明存在与它们相关的中断以及半虚拟化取决于的功能:

56:    6631557          0   PCI-MSI 1572864-edge      vmw_pvscsi
57:   72647654          0   PCI-MSI 5767168-edge      eth0-rxtx-0
58:   44570979 …
Run Code Online (Sandbox Code Playgroud)

linux debian vmware interrupt

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

单个进程执行输出的中断时间线

我正在学习《操作系统概念》第九版这本书。第一章1.2.1部分计算机系统操作,我看不懂图1.3: 单个进程执行输出的中断时间线

任何人都可以为我对此做出快速解释吗?特别是关于该图的峰值?

io interrupt

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

除了 USR1 和 USR2 之外,我还可以安全地使用哪些信号来实现自定义中断行为?(在Python中)

我有一个复杂的应用程序,其中 USR1 和 USR2 已定义为具有明确定义且不可替换的用途。

Linux 中有大量不同的信号。是否可能有另一种(可能是已弃用的)可以安全使用,而不会期望操作系统触发破坏性行为?

process kill signals python interrupt

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

为什么 SIGINT 在脚本的后台进程上不起作用?

我在脚本中有以下内容:

yes >/dev/null &
pid=$!
echo $pid
sleep 2
kill -INT $pid
sleep 2
ps aux | grep yes
Run Code Online (Sandbox Code Playgroud)

当我运行它时,输出显示它yes在脚本结束时仍在运行。但是,如果我以交互方式运行命令,则进程将成功终止,如下所示:

> yes >/dev/null &
[1] 9967
> kill -INT 9967
> ps aux | grep yes
sean ... 0:00 grep yes
Run Code Online (Sandbox Code Playgroud)

为什么 SIGINT 在交互式实例中终止进程而不在脚本化实例中终止?

编辑

以下是一些可能有助于诊断问题的补充信息。我编写了以下 Go 程序来模拟上述脚本。

package main

import (
    "fmt"
    "os"
    "os/exec"
    "time"
)

func main() {
    yes := exec.Command("yes")
    if err := yes.Start(); err != nil {
        die("%v", err)
    }

    time.Sleep(time.Second*2)

    kill := exec.Command("kill", …
Run Code Online (Sandbox Code Playgroud)

process signals shell-script interrupt background-process

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

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

我正在通过 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_code并current->thread.trap_no最终调用force_sig. 然而,一旦中断处理程序被执行,如上面的例子,它如何最终进入所需进程的上下文并生成信号?

kernel signals interrupt linux-kernel

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