请教,中断向量表是谁产生的?
在学8086原理的时候,书上总是说,8086在内存中保存了1024byte的中断向量表,供256个函数入口地址,每个地址4字节。
那么,
1. 是谁取产生和保存了这个中断向量表到特定的地址空间? 是CPU取产生的? 是Dos操作系统去产生的?
2. 保存的位置(内存具体地址)是8086CPU决定的? 还是操作系统决定的?
3. 这256个中断地址和OS有关吗? 是不是别的OS可能就不是256个?
4. 如果是和CPU有关的,那么它是由CPU动态产生的? 那还不如固化到芯片里面。
重重疑问,望dx解答!!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
1、实模下的中断向量表是复位启动时由 bios 负责设置写入。
2、中断向量表的位置是由 processor 的初始状态决定,但在 OS 可以更改。
实际上,可以在 dos 系统中更改,只是 dos 系统没这么做而已
3、同上,x86 的中断向量最大只能是 256(1 byte)
4、同上,中断向量表由初始态决定,但可以由系统软件更改
先不去考虑任何具体的程序,如果中断向量表是可配置的,那么则程序可以自己去设或者固化在ROM上(有的比较低级的处理器是死的,中断入口地址是不可设的,比如51架构)。中断向量表的位置也分可配置或者定死,8086是定死,0:0~0:3ff,这个地址一般有可能固化在ROM上,或者内容也可以被修改。
这些性质都是由具体的处理器决定,不同的处理器对于中断的管理方式有一定区别。但中断向量表的思想却是比较通用的。我就曾经接触过一个项目,使用一款处理能力很强但编译器很烂的东西,我当时决定在里面采用中断驱动任务的形式,我还在里面采用了动态修改中断向量表的形式。现在想想这种方法多少有点变态
[ 本帖最后由 cjaizss 于 2009-7-22 23:39 编辑 ]
谢谢,那么是不是说:
1. 这个中断是由bios决定的? (来自主版bus的请求),不同的硬件256个中断向量不一样? 那么中断处理程序在哪里呢? 还是在bios里面? 硬件中断的地址设置不应该来自OS吧。
2. 也就是x86体系的256个中断向量全都是硬件中断?
3. 如果中断处理程序是包含在OS自带的驱动里面的,那么bios怎么知道自己设定的这256个入口地址对不对呢(固化的总是不变的吧)? 还是和OS相关?
对于固化在bios上加载以后,没有被系统修改的,中断向量表所中断处理程序在哪里呢? 仍然在bios里面?
想不出来... ...
IBM规定的,写在BIOS里面的,Intel后来掺和了。
也就是BIOS里面包含了256种中断驱动的小程序了?
谢谢!
BIOS中断的实现在BIOS里面,DOS不在。要说有多少个,我现在不写“底层”代码,不记得,有资料可以查。