第八章 异常控制流(上)

异常控制流:

在硬件层,异常是由处理器中的事件触发的控制流中突变。控制流传递给一个软件处理程序,该处理程序进行一些处理,然后返回控制给被中断的控制流。

异常就是控制流中的突变,用来响应处理器状态中的某些变化。异常处理过程如下:

每个异常都分配了一个唯一的非负整数的异常号。在运行时,处理器检测发生了一个事件,并且确定了相应的异常号k,随后,处理器触发异常,方法是间接执行调用,通过异常表的表目k,转到相应的处理程序。

 

异常的类别:

1、中断:异步发生,来自处理器外部的I/O设备的信号的结果,将控制返回给应用程序控制流中的下一条指令;

2、陷阱:有意的异常,同步发生。当程序想要请求服务时,执行syscall指令会导致一个到异常处理程序的陷阱。陷阱处理程序将控制返回给应用程序控制流的下一条指令。

3、故障:由错误程序引起。同步发生。根据故障是否能被修复,故障处理程序要么重新执行引起故障的指令,要么终止。

4、终止:不可恢复的致命错误造成的结果。同步发生,不会返回。

 

进程:

进程定义:一个执行中程序的实例。

进程提供给应用两个重要的抽象:

1、逻辑控制流。它提供给每个程序一个假象,好像它是独占地使用处理器。

2、私有地址空间。它提供给每个程序一个假象,好像它是独占地使用主存。

 

进程是轮流使用处理器的,每个进程执行它的流的一部分,然后被抢占,然后轮到其他进程。

 

并发流:一个逻辑流的执行在时间上和另一个流重叠

并发:多个流并发的执行的现象

多任务:一个进程和其他进程轮流运行,多任务也叫时间分片

 

 

用户模式和内核模式:

处理器通常是用某个控制寄存器中的一个模式位来提供此功能。

运行应用程序代码的进程初始是在用户模式中的。进程从用户模式转为内核模式的唯一方法是:通过诸如中断、故障等异常。

 

上下文切换:

操作系统内核使用一种称为上下文切换的异常控制流来实现多任务。

内核为每个进程维持一个上下文。上下文是内核重新启动一个被抢占的进程所需的状态。

当内核代表用户执行系统调用时,可能会发生上下文切换。如果系统调用因为等待某个事件发生阻塞,那么内核可以让当前进程休眠,切换到另一个程序。

中断也可能引起上下文切换。

posted @ 2019-01-06 17:45  凌晨六点半  阅读(130)  评论(0编辑  收藏  举报