有人能给我解释一下在中断服务程序中发生了什么吗(虽然它取决于具体的程序,一个一般的解释就足够了)?这对我来说一直是一个黑盒子。
4zcjmb1e1#
在interrupt handlers上有一个很好的维基百科页面。中断处理程序,也称为中断服务例程(ISR),是操作系统或设备驱动程序中得回调子例程,其执行由中断得接收触发.中断处理程序有许多功能,这些功能根据中断产生得原因与中断处理程序完成其责任得速度而变化.基本上,当一个硬件(硬件中断)或某个操作系统任务(软件中断)需要运行时,它会触发一个中断。如果这些中断没有被屏蔽(忽略),操作系统将停止正在做的事情,并调用一些特殊代码来处理这个新事件。一个很好的例子是从硬盘上阅读,硬盘很慢,你不想让你的操作系统等待数据返回;你想让操作系统去做其他的事情,所以你设置了系统,当磁盘有请求的数据时,它会产生一个中断,在磁盘的中断服务程序中,CPU将获取现在准备好的数据,并将其返回给请求者。ISR通常需要快速发生,因为硬件的缓冲区可能有限,如果旧数据没有足够快地取出,新数据将覆盖这些缓冲区。快速完成ISR也很重要,因为当CPU正在处理一个ISR时,其他中断将被屏蔽,这意味着如果CPU不能足够快地处理它们,数据可能会丢失。
kx5bkwkv2#
最小16位示例
最好的理解方法是自己做一些最小的例子。首先学习如何创建一个最小的引导加载器操作系统,并在QEMU和真实的硬件上运行它,正如我在这里解释的那样:https://stackoverflow.com/a/32483545/895245现在您可以在16位真实的模式下运行:
movw $handler0, 0x00 mov %cs, 0x02 movw $handler1, 0x04 mov %cs, 0x06 int $0 int $1 hlthandler0: /* Do 0. */ irethandler1: /* Do 1. */ iret
movw $handler0, 0x00
mov %cs, 0x02
movw $handler1, 0x04
mov %cs, 0x06
int $0
int $1
hlt
handler0:
/* Do 0. */
iret
handler1:
/* Do 1. */
这将按顺序进行:
Do 1.
请注意处理器如何在地址0处查找第一个处理程序,以及在4处查找第二个处理程序:这是一个称为IVT的处理程序表,每个条目有4个字节。Minimal example that does some IO以使处理程序可见。
0
4
保护模式
现代操作系统在所谓的保护模式下运行。这种模式下的处理有更多的选择,因此更复杂,但精神是一样的。Minimal example
另请参阅
相关问题:在汇编代码中,“int 0x80”是什么意思?
btqmn9zl3#
当8086正在执行一个程序时,一个中断中断中断了指令的正常执行顺序,把它的执行转移到另一个称为中断服务程序(ISR)的程序上。执行完毕后,控制又返回到主程序。
jfewjypa4#
中断用于使程序执行暂时停止.微处理器响应中断服务例行程序,该例行程序是指示微处理器如何处理中断得短程序或子程序.
4条答案
按热度按时间4zcjmb1e1#
在interrupt handlers上有一个很好的维基百科页面。
中断处理程序,也称为中断服务例程(ISR),是操作系统或设备驱动程序中得回调子例程,其执行由中断得接收触发.中断处理程序有许多功能,这些功能根据中断产生得原因与中断处理程序完成其责任得速度而变化.
基本上,当一个硬件(硬件中断)或某个操作系统任务(软件中断)需要运行时,它会触发一个中断。如果这些中断没有被屏蔽(忽略),操作系统将停止正在做的事情,并调用一些特殊代码来处理这个新事件。
一个很好的例子是从硬盘上阅读,硬盘很慢,你不想让你的操作系统等待数据返回;你想让操作系统去做其他的事情,所以你设置了系统,当磁盘有请求的数据时,它会产生一个中断,在磁盘的中断服务程序中,CPU将获取现在准备好的数据,并将其返回给请求者。
ISR通常需要快速发生,因为硬件的缓冲区可能有限,如果旧数据没有足够快地取出,新数据将覆盖这些缓冲区。快速完成ISR也很重要,因为当CPU正在处理一个ISR时,其他中断将被屏蔽,这意味着如果CPU不能足够快地处理它们,数据可能会丢失。
kx5bkwkv2#
最小16位示例
最好的理解方法是自己做一些最小的例子。
首先学习如何创建一个最小的引导加载器操作系统,并在QEMU和真实的硬件上运行它,正如我在这里解释的那样:https://stackoverflow.com/a/32483545/895245
现在您可以在16位真实的模式下运行:
这将按顺序进行:
Do 1.
Do 1.
个hlt
:停止执行请注意处理器如何在地址
0
处查找第一个处理程序,以及在4
处查找第二个处理程序:这是一个称为IVT的处理程序表,每个条目有4个字节。Minimal example that does some IO以使处理程序可见。
保护模式
现代操作系统在所谓的保护模式下运行。
这种模式下的处理有更多的选择,因此更复杂,但精神是一样的。
Minimal example
另请参阅
相关问题:在汇编代码中,“int 0x80”是什么意思?
btqmn9zl3#
当8086正在执行一个程序时,一个中断中断中断了指令的正常执行顺序,把它的执行转移到另一个称为中断服务程序(ISR)的程序上。执行完毕后,控制又返回到主程序。
jfewjypa4#
中断用于使程序执行暂时停止.微处理器响应中断服务例行程序,该例行程序是指示微处理器如何处理中断得短程序或子程序.