首页 > 其他 > 详细

第8章 异常控制流

时间:2015-11-22 21:39:03      阅读:252      评论:0      收藏:0      [点我收藏+]

第8章 异常控制流

 

控制转移序列叫做处理器的控制流

现代系统通过使控制流发生突变来对这些情况做出反应,这些突变被称为异常控制流(ECF。异常控制流发生在操作系统的各个层次。

8.1异常

异常是异常控制流的一种形式,一部分由硬件实现,一部分由操作系统实现。

异常就是控制流中的突变,用来响应处理器状态中的某些变化。在处理器中,状态变化称为事件。

 

 

任何情况下,当处理器检测到有事件发生时,他就会通过一张叫做异常表的跳转表,进行一个间接过程调用(异常),到一个专门设计用来处理这类事件的操作系统子程序(异常处理程序)。

 

 8.1.1 异常处理

系统中可能的每种类型的异常都分配了唯一的非负整数的异常号。在系统启动时,操作系统分配和初始化一张称为异常表的跳转表,使得条目K包含异常k的处理程序的地址。

 

异常号是到异常表中的索引,异常表的起始地址放在一个叫异常表基址寄存器的特殊CPU寄存器里。

异常类似于过程调用,但有一些重要的不同之处。

 

如果异常中断的是一个用户程序,就将状态恢复为用户模式

 

8.1.2 异常的类别

异常可分为四类:中断、陷阱、故障和终止。

1.  中断

中断是异步发生的,是来自处理器外部的I/O设备的信号结果。

硬件中断的异常处理程序通常称为中断处理程序

 

2.  陷阱和系统调用

陷阱是有意的异常,是执行一条指令的结果。陷阱处理程序将控制返回到下一条指令。陷阱最重要的用途是在用户程序和内核之间提供一个像过程一样的接口,叫做系统调用

3.  故障

故障由错误情况引起,它可能能够被故障程序修正。当故障发生时,处理器将控制转移给处理程序。如果处理程序能够修正这个错误的情况,它就将控制返回引起故障的指令,从而重新执行它。

4.  终止

终止是不可恢复的致命错误造成的结果,通常是一些硬件错误。

 

 

8.1.3 Linux/IA32系统中的异常

1.Linux/IA32故障和终止

l  除法错误

l  一般保护故障

l  缺页

l  机器检查

2.Linux/IA32系统调用

 

8.2 进程

进程的经典定义就是一个执行中的程序的实例。系统中的每个程序都是运行在某个进程的上下文的。

我们将关注进程提供给应用程序的关键抽象:

 

8.2.1 逻辑控制流

如果想用调试器单步执行程序,我们会看到一系列的程序计数器(PC)的值,这些值唯一地对应于包含在程序的可执行目标文件中的指令,或者是包含在运行时动态链接到程序的共享对象中的指令。这个PC值的序列叫做逻辑控制流,或者简称逻辑流

8.2.2并发流

一个逻辑流的执行在时间上与另一个流重叠,称为并发流,这两个流被称为并发地运行。

多个流并发地执行一般现象称为并发。一个进程和其他进程轮流运行概念称为多任务。一个进程执行他的控制流的一部分的每一时间段叫做时间片。多任务也叫时间分片。

如果两个流并发地运行在不同的处理器核或者

 

第8章 异常控制流

原文:http://www.cnblogs.com/disturbia/p/4986766.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!