Operating system 有人能帮我理解一些我不能理解的操作系统概念吗?重新中断

Operating system 有人能帮我理解一些我不能理解的操作系统概念吗?重新中断,operating-system,interrupt,interrupt-handling,Operating System,Interrupt,Interrupt Handling,对不起,我不确定这是不是一个合适的地方问这个问题,但我希望这是可以接受的,如果不是,我道歉!:) 我目前正在学习操作系统理论的一个模块,我有一些我无法掌握的概念——这是提问的正确地方吗 我的主要问题是关于中断。当CPU检测到有一个中断时,我知道它必须找出这个中断的起源。我的理解如下,谁能告诉我这是否正确,并解释一下我知识中的一些差距 为了让CPU检测中断的起源,它可以查询所有对象以识别源,但是这些基于I/O的问题需要很长时间。相反,它使用中断周期,并期望数据总线上有一个中断标识符。如果是8位数据

对不起,我不确定这是不是一个合适的地方问这个问题,但我希望这是可以接受的,如果不是,我道歉!:)

我目前正在学习操作系统理论的一个模块,我有一些我无法掌握的概念——这是提问的正确地方吗

我的主要问题是关于中断。当CPU检测到有一个中断时,我知道它必须找出这个中断的起源。我的理解如下,谁能告诉我这是否正确,并解释一下我知识中的一些差距

为了让CPU检测中断的起源,它可以查询所有对象以识别源,但是这些基于I/O的问题需要很长时间。相反,它使用中断周期,并期望数据总线上有一个中断标识符。如果是8位数据总线,则有256个中断级别(即2^8)。(这是为什么?)

因此,为每个可能的中断级别编写一个中断服务例程(ISR),并将其存储在由处理器标准化的固定位置(中断向量)的表中。在我的笔记中说“在得到地址之前必须知道位置”(这是什么意思?)

作为中断周期的一部分接收的中断级别标识符被用作中断向量的索引(有人能稍微分解一下吗?)。我的理解是,一个值,即中断级别标识符被传递给CPU,并用于指向中断向量

另外,当中断被称为“服务”时,它意味着什么


非常感谢你,很抱歉写了这么长的一段话,我只是对其中的许多方面感到有点困惑

中断工作的很大一部分是允许CPU被其他设备(如接收到数据包的网卡)中断。我发现首先理解这个用例更容易

当网卡需要告诉CPU已接收到一些数据时,它会向CPU上的“中断引脚”发送一个数字。通常是8位数字。该数字称为“中断级别”

CPU的构建方式允许它跳转到一些代码来处理中断,然后返回到它正在做的事情。这是内置的硬件,所以它必须简单:有一个表将每个中断级别与要调用的函数的地址相匹配。该功能称为“中断服务程序”。正如您所说,这个表的位置是标准化的,因为它是在表中查找的硬件(因此它的地址在芯片中是硬编码的)

为中断提供服务仅仅意味着运行与中断相关联的代码:对于网卡,这意味着从网卡读取数据包并将其复制到内存(据推测,网卡上的内存本身是有限的)。您询问“作为中断周期的一部分接收的中断级别标识符用作中断向量的索引”。这只是我们刚才所做的另一种方式:来自卡的信号(中断级别)被CPU用作表中的索引(“中断向量”)。在那里,它找到要运行的代码的地址;该代码是由网卡的设备驱动程序(或者可能是操作系统)放在那里的

当ISR函数返回时,CPU将寄存器放回接收到中断时的状态,这样就可以像什么都没有发生一样继续执行。考虑这一点的一种方法是,中断是一种允许CPU同时运行多个程序(您的程序和网卡驱动程序)的机制


同样的中断概念也可用于“软件中断”,即信号不是来自CPU外部,而是来自内部

你的问题中肯定有很多问题。 让我谈谈其中一个问题

一个中断被称为serv,哦,等等,我必须让狗出去,当“工作”完成时,中断就结束了

在我愚蠢的例子中,我被狗抓门打断了。我停止了我正在做的事情(在输入单词服务的过程中),让狗出去,然后继续输入

我“服务”了狗的请求