有人可以帮我解决一些我无法掌握的操作系统概念 - 重新中断

时间:2010-12-04 00:39:32

标签: operating-system interrupt interrupt-handling

很抱歉,我不确定这是否适合问这个问题,但我希望这是可以接受的,如果不是,请道歉! :)

我目前正在操作系统理论中的一个模块,我有一些我无法理解的概念 - 这是提出问题的正确位置吗?

我的主要问题是中断。当CPU检测到存在中断时,我知道它必须找出此中断源自何处。我的理解如下,任何人都可以告诉我这是否正确,并解释我的知识中的一些空白?

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

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

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

此外,当中断被称为“服务”时,这是什么意思?

非常感谢,对于很长的段落感到抱歉,我对这方面的许多方面感到有些困惑!

2 个答案:

答案 0 :(得分:3)

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

当网卡需要告诉CPU已收到一些数据时,它会向"中断引脚发送一个号码"在CPU上。通常,这将是一个8位数。该号码称为"中断级别"。

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

维护中断只是意味着运行与中断相关的代码:如果是网卡,则意味着从网卡读取数据包并将其复制到内存(可能是内存)在网卡本身是有限的)。您询问"作为中断周期的一部分接收的中断级别标识符是否用作中断向量的索引"。这只是说出我们刚刚做了什么的另一种方式:来自卡的信号(中断级别)被CPU用作表中的索引("中断向量")。在那里,它找到要运行的代码的地址;该代码由网卡的设备驱动程序(或者可能是操作系统)放在那里。

当ISR函数返回时,CPU将寄存器恢复为接收中断时的状态,因此可以恢复执行,就像没有发生任何事情一样。想到这一点的一种方法是,中断是一种允许CPU同时运行多个程序(您的程序和网卡驱动程序)的机制。

中断的相同概念也可以用于"软件中断",而不是来自CPU外部的信号,它来自内部。

答案 1 :(得分:0)

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

一个中断被认为是服务,OH HANG ON,我必须让DOG OUT。,当中断完成的'工作'时结冰。

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

我'服务'狗中断请求。