免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4655 | 回复: 7
打印 上一主题 下一主题

请教,中断向量表是谁产生的? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-22 23:15 |只看该作者 |倒序浏览
10可用积分
在学8086原理的时候,书上总是说,8086在内存中保存了1024byte的中断向量表,供256个函数入口地址,每个地址4字节。

那么,
1. 是谁取产生和保存了这个中断向量表到特定的地址空间? 是CPU取产生的? 是Dos操作系统去产生的?
2. 保存的位置(内存具体地址)是8086CPU决定的? 还是操作系统决定的?
3. 这256个中断地址和OS有关吗? 是不是别的OS可能就不是256个?
4. 如果是和CPU有关的,那么它是由CPU动态产生的? 那还不如固化到芯片里面。

重重疑问,望dx解答!!!

最佳答案

查看完整内容

1、实模下的中断向量表是复位启动时由 bios 负责设置写入。2、中断向量表的位置是由 processor 的初始状态决定,但在 OS 可以更改。  实际上,可以在 dos 系统中更改,只是 dos 系统没这么做而已3、同上,x86 的中断向量最大只能是 256(1 byte)4、同上,中断向量表由初始态决定,但可以由系统软件更改

论坛徽章:
0
2 [报告]
发表于 2009-07-22 23:15 |只看该作者
原帖由 jeanlove 于 2009-7-22 23:15 发表
在学8086原理的时候,书上总是说,8086在内存中保存了1024byte的中断向量表,供256个函数入口地址,每个地址4字节。

那么,
1. 是谁取产生和保存了这个中断向量表到特定的地址空间? 是CPU取产生的? 是Dos操 ...


1、实模下的中断向量表是复位启动时由 bios 负责设置写入。
2、中断向量表的位置是由 processor 的初始状态决定,但在 OS 可以更改。
  实际上,可以在 dos 系统中更改,只是 dos 系统没这么做而已
3、同上,x86 的中断向量最大只能是 256(1 byte)
4、同上,中断向量表由初始态决定,但可以由系统软件更改

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
3 [报告]
发表于 2009-07-22 23:33 |只看该作者
先不去考虑任何具体的程序,如果中断向量表是可配置的,那么则程序可以自己去设或者固化在ROM上(有的比较低级的处理器是死的,中断入口地址是不可设的,比如51架构)。中断向量表的位置也分可配置或者定死,8086是定死,0:0~0:3ff,这个地址一般有可能固化在ROM上,或者内容也可以被修改。
这些性质都是由具体的处理器决定,不同的处理器对于中断的管理方式有一定区别。但中断向量表的思想却是比较通用的。我就曾经接触过一个项目,使用一款处理能力很强但编译器很烂的东西,我当时决定在里面采用中断驱动任务的形式,我还在里面采用了动态修改中断向量表的形式。现在想想这种方法多少有点变态

[ 本帖最后由 cjaizss 于 2009-7-22 23:39 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2009-07-23 10:08 |只看该作者
原帖由 mik 于 2009-7-22 23:27 发表


1、实模下的中断向量表是复位启动时由 bios 负责设置写入。
2、中断向量表的位置是由 processor 的初始状态决定,但在 OS 可以更改。
  实际上,可以在 dos 系统中更改,只是 dos 系统没这么做而已
3、 ...


谢谢,那么是不是说:

1. 这个中断是由bios决定的? (来自主版bus的请求),不同的硬件256个中断向量不一样? 那么中断处理程序在哪里呢? 还是在bios里面? 硬件中断的地址设置不应该来自OS吧。
2. 也就是x86体系的256个中断向量全都是硬件中断?
3. 如果中断处理程序是包含在OS自带的驱动里面的,那么bios怎么知道自己设定的这256个入口地址对不对呢(固化的总是不变的吧)? 还是和OS相关?

论坛徽章:
0
5 [报告]
发表于 2009-07-23 10:50 |只看该作者
原帖由 cjaizss 于 2009-7-22 23:33 发表
先不去考虑任何具体的程序,如果中断向量表是可配置的,那么则程序可以自己去设或者固化在ROM上(有的比较低级的处理器是死的,中断入口地址是不可设的,比如51架构)。中断向量表的位置也分可配置或者定死,80 ...


对于固化在bios上加载以后,没有被系统修改的,中断向量表所中断处理程序在哪里呢? 仍然在bios里面?

想不出来... ...

论坛徽章:
0
6 [报告]
发表于 2009-07-23 10:52 |只看该作者
IBM规定的,写在BIOS里面的,Intel后来掺和了。

论坛徽章:
0
7 [报告]
发表于 2009-07-23 14:53 |只看该作者
原帖由 prolj 于 2009-7-23 10:52 发表
IBM规定的,写在BIOS里面的,Intel后来掺和了。


也就是BIOS里面包含了256种中断驱动的小程序了?

谢谢!

论坛徽章:
0
8 [报告]
发表于 2009-07-24 07:58 |只看该作者
BIOS中断的实现在BIOS里面,DOS不在。要说有多少个,我现在不写“底层”代码,不记得,有资料可以查。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP