初识exception
一、exception的分类
根据此exception(异常)是否可以打断正在执行的指令,可以将exception分为 asynchronous exception 和 synchronous exception 两大类;asynchronous exception 即 interrupt exception; synchronous exception又可以细分为三种exception:trap、fault、abort。如下图所示。

对于interrupt。这种类型的exception不可以打断正在执行的指令,必须等到这条指令完成后才可以对interrupt作出反应(而其他三种却可以打断正在执行的指令)。一般interrupt由I/O设备产生,比如网络适配器,磁盘等。
对于trap。提到trap我们就不得不提system call。因为trap这种异常是我们在执行指令时故意引发的异常,用于system call。比如我们需要打印一些信息到command line窗口,在执行这个打印指令时就触发一个异常,然后system call 打印函数以打印信息到命令行窗口。
对于fault。我们在virtual memory中遇到的page fault就会触发fault exception,然后exception handler 进行page in操作,将缺失的page从disk搬移到main memory 。所以fault异常一般需要exception handler进行一定的处理以重新正确执行当前指令。
对于abort。不可恢复的致命错误会导致abort异常,一般是硬件故障。abort的异常handler会终止当前程式。
二、异常的运行过程
每一个异常(不是每一种异常)都会有异常号,一部分异常的异常号由处理器设计者给定,一部分由OS kernel的设计者给定。比如在IA32 system中,共有256个异常,前32个,0-31,由intel architect给定,后面的由OS给定,如下图所示。

步骤(参考下图):
1、根据 exception table base register 和 异常号 计算出异常表的入口地址
2、根据入口地址跳转到相应的exception handler。

三、exception与precedure call的区别
我们在观察exception的运行过程中,应该已经感觉到他们是非常相似的。不同点很多,其中最重要的一点是:有些异常处理完之后就再也不会来了(abort),或者只回来执行下一条指令(interrupt & trap),并不从被中断的点继续执行。列表如下。

四、参考资料
<<computer systems a programmer's perspective>> second edition p701-p717
初识exception的更多相关文章
- 初识Hadoop
第一部分: 初识Hadoop 一. 谁说大象不能跳舞 业务数据越来越多,用关系型数据库来存储和处理数据越来越感觉吃力,一个查询或者一个导出,要执行很长 ...
- 初识SpringMvc
初识SpringMvc springMvc简介:SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的 s ...
- MongoDB【第一篇】MongodDB初识
NoSQL介绍 一.NoSQL简介 NoSQL,全称是”Not Only Sql”,指的是非关系型的数据库. 非关系型数据库主要有这些特点:非关系型的.分布式的.开源的.水平可扩展的. 原始的目的是为 ...
- 学习笔记:java并发编程学习之初识Concurrent
一.初识Concurrent 第一次看见concurrent的使用是在同事写的一个抽取系统代码里,当时这部分代码没有完成,有许多的问题,另一个同事接手了这部分代码的功能开发,由于他没有多线程开发的经验 ...
- Android图片缓存之初识Glide
前言: 前面总结学习了图片的使用以及Lru算法,今天来学习一下比较优秀的图片缓存开源框架.技术本身就要不断的更迭,从最初的自己使用SoftReference实现自己的图片缓存,到后来做电商项目自己的实 ...
- Java初识
基础概念 特点: 完全面向对象,动态 解释性,简单.易移植,跨平台 安全健壮,高性能 多线程,分布式 三种核心机制: Java虚拟机 Java Virtual Machine 垃圾收集机制 Garba ...
- 蜗牛—JSP学习之JavaBean初识
初识: <%@ page language="java" import="java.util.*" pageEncoding="utf-8&qu ...
- Day15 HTML补充、初识JavaScript
一.上节回顾 上节回顾: HTML 头部信息:编码.title.style.link(导入css文件) 身体: 内联 块级 --->inline-block(既有内联效果又有块级效果) a标签: ...
- 初识Eclipse!!
Java之路 ——初识Eclipse 零.大纲 一.前言 二.获取Eclipse 三.运行Eclipse 四.创建及运行第一个Java Project 五.界面介绍 六.如何调试 七.获取插件 ...
随机推荐
- MySQL主从复制(Master-Slave)实践
MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展.多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能. 下图就描述了一个多个数 ...
- jq focus 在火狐(Firefox)下无效
今天写代码的时候发现,在blur事件里面写focus获取焦点无效, $input.blur(function(){ ……………… $input.focus(): } 而且只是在火狐下面无效而已,很明显 ...
- Jsoup系列学习(1)-发送get或post请求
简介 jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据. 官 ...
- LVM 管理减少swap分区空间增加到根分区
简介 LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现 ...
- Chrome Developer Tools:Timeline Panel说明
一.Timeline panel 概况 Timeline工具栏可以详细检测出Web应用在加载过程中,时间花费情况的概览.这些应用包括下载资源,处理DOM事件, 页面布局渲染或者向屏幕绘制元素. 如下图 ...
- url中的特殊符号含义
1. # 10年9月,twitter改版.一个显著变化,就是URL加入了"#!"符号.比如,改版前的用户主页网址为http://twitter.com/username改版后,就变 ...
- [No0000A8]Word中设置图片下的题注及插入多级列表编号
1.什么是题注? 2.怎么实现一个可以自动更新的题注? 只有先定义好文档编号后,才可以设置出正确的图片下标题注. 文章的结构可以通过导航窗口导航. 导航窗口打开方式. 3.设置好文档编号后,怎样插入 ...
- java中transient关键字的作用
Java有个特点就是序列化,简单地来说就是可以将这个类存储在物理空间(当然还是以文件的形式存在),那么当你从本地还原这个文件时,你可以将它转换为它本身.这可以极大地方便网络上的一些操作,但同时,因为涉 ...
- Redis的使用场景 by 杨卫华
转载自新浪微博架构师杨卫华的博客 http://timyang.net/tag/redis/,省略了部分内容 按:杨卫华在2010年就已经测试了Redis的性能,并给出了初步的结论:“Redis性能惊 ...
- 【三石视频教程】当FineUIPro遇到ReportViewer
FineUIPro 下个版本(v2.8.0)即将支持 ReportViewer,为此三石特别制作了一期视频教程,供大家参考. 运行效果图: 视频下载:http://pan.baidu.com/s/ ...