相关疑难解决方法(0)

当发生中断时,管道中的指令会发生什么?

假设一个5级流水线架构(IF =指令获取,ID =指令解码,EX =执行,MEM =存储器访问,WB =寄存器写回).有4条指令必须执行.

(这些样本说明不准确,但我相信这一点会被理解)

在第五个时钟周期,这些指令将在管道中,如下所示.

添加a,b,c [IF ID EX MEM WB]

添加a,b,d [IF ID EX MEM]

添加a,b,e [IF ID EX]

添加a,b,f [IF ID]

现在,如果发生硬件中断,这些指令会发生什么.只有在执行流水线中的所有指令后才能处理中断吗?是否会以不同的方式处理软件中断和异常?

computer-architecture

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

为什么linux内核使用陷阱门来处理divide_error异常?

在内核2.6.11.5中,除零异常处理程序设置为:

set_trap_gate(0,&divide_error);
Run Code Online (Sandbox Code Playgroud)

根据"了解Linux内核",用户模式进程无法访问英特尔陷阱门.但是用户模式进程很可能也会生成一个divide_error.那么为什么Linux以这种方式实现呢?

[编辑]我认为问题仍然是开放的,因为set_trap_gate()将IDT条目的DPL值设置为0,这意味着只有CPL = 0(读取内核)代码才能执行它,因此我不清楚如何从该处理程序调用此处理程序用户模式:

#include<stdio.h>

int main(void)
{
    int a = 0;
    int b = 1;

    b = b/a;

    return b;
}
Run Code Online (Sandbox Code Playgroud)

这是编译的gcc div0.c.输出./a.out是:

浮点异常(核心转储)

因此看起来这不是由0陷阱代码划分处理的.

linux x86 kernel interrupted-exception

9
推荐指数
3
解决办法
3186
查看次数

陷阱,错误,失败和程序堕胎有什么区别?

我经常在C++面试问题中看到以下术语:

  • 程序中止
  • 错误
  • 失败
  • 陷阱

我不确定这些术语之间的区别是什么.有人可以提供清晰简洁的解释吗?

编辑:上下文问题是:" 当你删除指针两次时会发生什么? "但是知道这些术语之间的差异对我来说比对答案更重要.

c++ terminology

9
推荐指数
2
解决办法
810
查看次数

陷阱指令在操作系统中的作用是什么?

在学习操作系统概念时,我看到了术语陷阱指令。“执行 TRAP 指令以从用户模式切换到内核模式。” 我无法理解陷阱指令的作用。

operating-system

7
推荐指数
2
解决办法
9862
查看次数

信号、异常、硬件中断、陷阱

我读了这个答案,我想我有了一个清晰的想法。但这个答案又让我困惑了。

有人可以给我一个清晰的图片来说明信号、异常、硬件中断和陷阱之间的区别吗?

另外,我想知道这些块CPU抢占的内核代码中有哪些?

例子会很有帮助。

linux cpu kernel interrupt

3
推荐指数
1
解决办法
4118
查看次数

信号和系统调用的使用和关系

我学习linux编程有一段时间了,我知道signal&system call是完全不同的概念。

据我理解,system call是内核向外部提供的接口,signal是一种让进程从内核或其他进程接收信息的机制。他们对我来说是一种逆向过程。

我理解正确吗?

我的问题是:

这两个概念之间有更深或更简单的关系吗?

这似乎是一个愚蠢的问题,但有时我会将它们混合在一起,我需要仔细思考以区分它们。我试图得到一个简单的意见来帮助我理解它们之间的关系和区别。

linux signals system-calls

2
推荐指数
1
解决办法
2334
查看次数

使用 Control + C 突然结束进程是陷阱还是中断?

陷阱和中断之间的区别似乎很明显:陷阱是对内核的软件调用(例如通过异常),而中断与硬件(磁盘、I/O 和外设)相关。鼠标和键盘等设备...)(在此处了解有关差异的更多信息)。

知道了这一点,按 Control + C 结束进程应该属于什么类别?它是一个软件调用的调用,因此是一个陷阱,因为它可以从 Shell 等执行,还是一个中断,因为它是 CPU 从键盘接收的信号?或者中断完全在用户域之外,这意味着它是硬件在用户无法达到的级别上与 CPU 交互?

谢谢你!

c linux signals process interrupt

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

TRAP,软件中断和硬件中断之间的区别?

我只想知道它们之间的基本区别.

我在某些地方发现TRAP本质上也被称为软件中断,或类似异常.

另外软件中断和异常之间的基本区别是什么.

软件中断可以由INT指令生成,但TRAP只能通过除零等特定场景生成?是对的吗?

请为此查询提供合适的答案,其中包括s/w中断陷阱和异常.

embedded microcontroller interrupt interrupt-handling interrupted-exception

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