Chinaunix

标题: Linux系统的中断问题?(急,在线等) [打印本页]

作者: zmyspring    时间: 2005-03-30 14:06
标题: Linux系统的中断问题?(急,在线等)
请问各位:在Linux2.4内核版本里0-17这些中断中,哪些是不可屏蔽中断,哪些是可屏蔽中断?


表一、中断向量和异常事件对应表
中断向量号    异常事件     Linux的处理程序  
0                 除法错误      Divide_error  
1                 调试异常      Debug  
2                 NMI中断      Nmi  
3             单字节,int 3     Int3  
4                溢出          Overflow  
5                边界监测中断  Bounds  
6                无效操作码    Invalid_op  
7               设备不可用    Device_not_available  
8               双重故障       Double_fault  
9              协处理器段溢出  Coprocessor_segment_overrun  
10               无效TSS          Incalid_tss  
11            缺段中断        Segment_not_present  
12                堆栈异常    Stack_segment  
13            一般保护异常   General_protection  
14                   页异常    Page_fault  
15                             Spurious_interrupt_bug  
16              协处理器出错   Coprocessor_error  
17               对齐检查中断    Alignment_check
作者: peng    时间: 2005-03-30 14:25
标题: Linux系统的中断问题?(急,在线等)
请教一下,你屏蔽他们是做什么用啊?
作者: zmyspring    时间: 2005-03-30 14:48
标题: Linux系统的中断问题?(急,在线等)
因为是多处理器系统,在指定cpu上屏蔽一些可屏蔽的中断就可以提高这些cpu的效率
作者: albcamus    时间: 2005-03-30 15:10
标题: Linux系统的中断问题?(急,在线等)
[quote]原帖由 "zmyspring"]因为是多处理器系统,在指定cpu上屏蔽一些可屏蔽的中断就可以提高这些cpu的效率[/quote 发表:


个人认为,只有一种情况下屏蔽中断是合理的:那就是为了同步(synchronization)。

比方说,SMP上防止多个cpu同时访问某个数据;防止当前代码被中断;防止当前代码被抢占,等等。
作者: kukoo    时间: 2005-03-30 15:46
标题: Linux系统的中断问题?(急,在线等)
NMI是不可屏蔽中断,从英文缩写就知道了。其它的应该都可以被屏蔽。
屏蔽中断当然不是为了提高效率了,没有中断计算机就是废铁:)
和多处理器就更没关系了。
屏蔽中断主要是系统在进行一些不允许被打扰的操作的时候,通常时间都很短。
0-17里面很多是异常,不是中断哦。

下面是教材上的:
80386有两根引脚INTR和NMI接受外部中断请求信号。INTR接受可屏蔽中断请求。NMI接受不可屏蔽中断请求。
在80386中,标志寄存器EFLAGS中的IF标志决定是否屏蔽可屏蔽中断请求。

异常是80386在执行指令期间检测到不正常的或非法的条件所引起的。
作者: zmyspring    时间: 2005-03-30 15:56
标题: Linux系统的中断问题?(急,在线等)
其实我是为了把自己的用户进程设置在特定的cpu上执行,并且不希望中断(异常)来打断进程,所以想尽可能屏蔽可以屏蔽的中断(包括异常)

从一些资料显示,0-19是内部中断,20-31空闲(Intel保留),32-255为用户
定义的外部中断,可以屏蔽的
作者: zmyspring    时间: 2005-03-30 15:59
标题: Linux系统的中断问题?(急,在线等)
谢谢上面几位的回复,特别感谢kukoo

如果你知道,请继续回复,感谢之至
作者: kukoo    时间: 2005-03-30 16:10
标题: Linux系统的中断问题?(急,在线等)
异常不可已屏蔽,异常是代码犯了错误(分可恢复和不可恢复),是可预知的,比如除0,访问swap到硬盘的页,如果这都可以屏蔽,你想想后果是什么。中断是不可预知的,所以有时需要暂时屏蔽一下。
作者: zmyspring    时间: 2005-03-30 16:27
标题: Linux系统的中断问题?(急,在线等)
--------------------------------------------------------------------------------

异常不可已屏蔽,异常是代码犯了错误(分可恢复和不可恢复),是可预知的,比如除0,访问swap到硬盘的页,如果这都可以屏蔽,你想想后果是什么。中断是不可预知的,所以有时需要暂时屏蔽一下。
---------------------------------------------------------------------------------
我再问个问题,是不是当进程在哪个cpu执行时发生的异常总是由该cpu去处理?
作者: kukoo    时间: 2005-03-30 16:44
标题: Linux系统的中断问题?(急,在线等)
应该是吧,不确认。比如缺页异常,缺页的页码是在当前cpu的cr2寄存器中的,其它cpu处理不了的。
作者: zmyspring    时间: 2005-03-30 16:46
标题: Linux系统的中断问题?(急,在线等)
[quote]原帖由 "kukoo"]应该是吧,不确认。比如缺页异常,缺页的页码是在当前cpu的cr2寄存器中的,其它cpu处理不了的。[/quote 发表:


非常感谢:)

但是还有个问题,软中断是由INT n指令产生的,溢出是由INT 0指令产生,它可以被屏蔽吗?
断点是由INT3产生的,它可以被中断吗?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2