zoukankan      html  css  js  c++  java
  • [原]80386中断和异常

    中断为改变程序环境提供了一个严格定义的上下文切换机制。
    80386可以有256个中断。 被分为5类: 外部硬件中断, 非屏蔽中断, 软件中断, 内部中断,及异常, 复位;
    外部硬件, 软件, 非屏蔽中断 由用户定义.
    中断按其中断号的优先级来提供服务: 基于五种层次的优先级, 基于类型号的优先级.

    保护模式的中断描述符表:
    中断描述符是门描述符. 最多包括256个门. 可以定以为陷阱门, 中断门, 任务门. 中断门, 陷阱门允许控制转交给当前的任务的其他服务程序(内核属于当前任务的一部分, 内核中的驱动程序, 单内核). 任务门主要用来任务切换(控制转交给不同的任务, 微内核).

    中断描述符包括:段选择符, 偏移量, 访问权限, 类型. 这些标识了服务程序入口点. 描述符的访问权限, 标识了有效性, DPL特权级, T陷阱门还是中断门. 陷阱门在上下文切换时并不清除IF, 来禁止外部硬件中断.

    一般来讲, 外部硬件中断由中断门描述符配置. 一旦相应了中断, 则IF置位, 禁止中断. 除非软件重新允许接口(中断保存现场, 要置位), 不可能接受其他硬件中断. 另一方面内部中断, 使用陷阱门描述(系统调用, 不设置IF, 允许硬件中断).

    中断指令:
    CLI
    STL
    LIDT
    INT n
    IRET
    INTO
    BOUND
    HLT
    WAIT
    设置IF标志位, 清除标志位. 保护模式下, 会比较当前特权级和IOPL特权, 如果小于IO则失败, 产生一般性保护异常.
    INTO中断溢出指令, 可能溢出的算术指令后面. 异常 4
    BOUND检查阵列索引寄存器置是否在最大最小之间, 异常 5
    HLT等待外部中断;
    WAIT忙查询外部设备.

    在启动中断门时, 80386自动清除if, 可以屏蔽外部中断. 如果要允许中断可以在isr中 sti来重新允许外部中断. 否则只可在结束时的iret来允许.

    8259a


    作者:liyonghelpme 发表于2010/6/11 13:45:00 原文链接
    阅读:196 评论:0 查看评论
  • 相关阅读:
    javascript 备忘 细节 相关
    内存泄漏
    css相关 细节 优化 备忘
    nodeType
    事件冒泡 模型
    两个感叹号作用
    非冒泡事件
    DOM 对象
    Quartz2D 之 绘制文本
    Voilin 与 乐谱
  • 原文地址:https://www.cnblogs.com/liyonghelpme/p/4273550.html
Copyright © 2011-2022 走看看