美文网首页
04-30 中断与异常

04-30 中断与异常

作者: 林亨权 | 来源:发表于2018-05-01 16:28 被阅读6次

1.中断与异常

在计算机的世界里,不存在一丝温度.

它只会沿着写好的代码,心无旁骛地执行下去,这是它的优点,也是它的缺点--因为写代码的人不可能把所有意外情况都考虑周全.

比如说,你要求计算机走一万步,那他就只会走一万步,不管路上是否有车,是否会对自己的安危产生威胁.

鉴于这种情况,人们很聪明地发明了一种机制---中断与异常.

中断与异常,在原理上是一样的:在计算机运算的时候,如果遇到突发情况,比如说BUG,硬件损坏.死循环等.这时计算机会主动跳转到一个专门处理突发情况的代码区域,对不同的突发情况进行处理.

而这种突发情况,我们可以分为两种:

一种是计算机遇到突发情况,自发跳转.这种情况,我们称之为"异常".

一种是我们在计算机运行的过程中,通过外部设备人为地截断计算机运行,比如说强制关机,任务管理器强制关闭等,这种情况,我们称之为"中断".

2. IDT

中断和异常,虽然截断方式不同,但它们最终是由操作系统统一管理.

根据不同的情况,中断与异常这两种情况之下,还可以进行进一步的细分.而操作系统负责为每一种细分的情况都提供一种处理函数.这些处理函数,学名叫陷阱处理器.

那么,操作系统(或者更深入地讲,是CPU)是如何将每一种细分情况,与每一种处理函数,一一对应的呢?

这时,我们就采用了一种最原始的方法,写一个表格,把细分情况与处理函数一一对应的关系,都写在上面.

而这个表,就叫做IDT

操作系统在启动的时候,最早的任务,就是准备好这样的一张IDT表,以便应付接下来可能出现的突发情况.

我们可以通过两种方式查询到这张表:

第一,使用windbg配合VirtualKD配置好双机调试环境,加载完符号,输入命令!idt /a

(搞这个环境时,加载符号是个坑,加载的命令是SRV*C:\symbols*

http://msdl.microsoft.com/download/symbols,同时要把reload的勾给打上.不过最后我还是没能执行!idt /a的命令,原因极有可能出在加载符号上.)

第二步,使用PC-Hunter查看IDT

这个方法我还没尝试,暂且略过.

相关文章

  • 04-30 中断与异常

    1.中断与异常 在计算机的世界里,不存在一丝温度. 它只会沿着写好的代码,心无旁骛地执行下去,这是它的优点,也是它...

  • 中断与异常

    通常CPU执行的指令有两种,分别是操作系统内核程序和用户自编程序。因此操作系统将CPU的状态划分为两种,分为用户态...

  • 中断与异常

  • 中断、异常与并发

    0. 前言 记得在学习《计算机系统组成原理》和阅读CSAPP时,对异常控制流(异常)、并发等内容似懂非懂、雾里看花...

  • 中断/异常

    中断/异常,是操作系统的驱动力,就好比汽车的发动机、飞机的引擎 是什么? 中断是CPU对系统发生的某个事件作出的一...

  • 嵌入式学习笔记19.12.13

    异常:中断 各中断: 异常向量表(各个异常子程序入口) __reset__handler(!!handler) ....

  • 可以响应中断的方法

    sleep() 抛出中断异常后会清楚中断标志位

  • 中断和异常

    中断(英语:Interrupt)是指处理器接收到来自硬件或软件的信号,提示发生了某个事件,应该被注意,这种情况就称...

  • 中断和异常

    中断和异常 早期计算机,各个程序只能串行的执行,一个程序放入计算机移入内存之后,要等待IO设备输出结束,这个程序才...

  • 中断和异常

    中断和异常.md 中断和异常的定义 中断(interrupt)指在程序执行过程中遇到急需处理的事件时,暂时中止现行...

网友评论

      本文标题:04-30 中断与异常

      本文链接:https://www.haomeiwen.com/subject/dxdtrftx.html