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 查看评论
  • 相关阅读:
    Asp.net中导出Excel文档(Gridview)
    以太坊难度炸弹是什么?极大抑制矿工继续以POW方式挖矿!
    Solidity语言基础 和 Etherum ERC20合约基础
    BCH/BSV coin split troubleshooting
    比特币学习-Transaction的locktime属性
    在BCH硬分叉后防止重放攻击-2
    在BCH硬分叉后防止重放攻击-1
    区块链硬分叉-软分叉简单了解
    BTC和BCH 区别和联系?
    BCHABC/BCHSV的矛盾所在
  • 原文地址:https://www.cnblogs.com/liyonghelpme/p/4273550.html
Copyright © 2011-2022 走看看