深入理解计算机系统 第八章 异常控制流(1)

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

异常可以分为四类:中断(interrupt)、陷阱(trap)、故障(fault)和终止(abort)。
异常的类别
类别            原因                           异步/同步            返回行为
中断      来自I/O设备的信号           异步                总是返回到下一条指令
陷阱      有意的异常                       同步                总是返回到下一条指令
故障      潜在可恢复的错误            同步                可能返回到当前指令
终止      不可恢复的错误                同步                不会返回
进程
进程的经典定义就是一个执行中程序的实例。系统中的每个程序都运行在某个进程的上下文(context)中。上下文是由程序正确运行所需的状态组成的。这个状态包括存放在内存中的程序的代码和数据,它的栈、通用目的寄存器的内容、程序计数器、环境变量以及打开文件描述符的集合。
一、逻辑控制流
即使在系统中通常有许多其他程序在运行,进程也可以向每个程序提供一种假象,好像它在独占的使用处理器。如果想用调试器单步执行程序,我们会看到一系列的程序计数器(PC)的值,这些值唯一的对应于包含在程序的可执行目标文件中的指令,或是包含在运行时动态链接到程序的共享对象中的指令。这个PC值的序列叫做逻辑控制流,或者简称逻辑流。
二、并发流
一个逻辑流的执行在时间上与另一个流重叠,称为并发流(concurrent flow),这两个流被称为并发的运行。
多个流并发的执行的一般现象被称为并发(concurrency)。一个进程和其他进程轮流运行的概念称为多任务(multitasking)。一个进程执行它的控制流的一部分的每一时间段叫做时间片(time slice)。因此,多任务也叫做时间分片(time slicing)。
如果两个流并发的运行在不同的处理器核或者计算机上,那么我们称它们为并行流(parallel flow),它们并行的运行(running in parallel),且并行的执行(parallel execution)。
三、私有地址空间
进程也为每个程序提供一种假象,好像它独占的使用系统地址空间。在一台n位地址的机器上,地址空间是2^n个可能地址的集合,0,1,…,2^n-1进程为每个程序提供它自己的私有地址空间。
四、用户模式和内核模式
处理器通常是用某个控制寄存器中的一个模式位(mode bit)来提供这种功能的,该寄存器描述了进程当前享有的特权。当设置了模式位时,进程就运行在内核模式中(有时叫做超级用户模式)。一个运行在内核模式的进程可以执行指令集中的任何指令,并且可以访问系统中的任何内存位置。
没有设置模式位时,进程就运行在用户模式中。用户模式中的进程不允许执行特权指令(privileged instruction)。也不允许用户模式中的进程直接引用地址空间中内核区内的代码和数据。
五、上下文切换
操作系统内核使用一种称为上下文切换(context switch)的较高层形式的异常控制流来实现多任务。
内核为每个进程维持一个上下文(context),上下文就是内核重新启动一个被抢占的进程所需的状态。它由一些对象的值组成。
在进程执行的某些时刻,内核可以决定抢占当前线程,并重新开始一个先前被抢占了的进程,这种决策就叫做调度(scheduling),是由内核中称为调度器(scheduler)的代码处理的。当内核选择一个新的进程运行时,我们说内核调度了这个进程。在内核调度了一个新的进程运行后,它就抢占当前线程,并使用一种称为上下文切换的机制来将控制转移到新的进程,上下文切换1)保存当前进程的上下文,2)恢复某个先前被抢占的进程被保存的上下文,3)将控制传递给这个新恢复的进程。

猜你喜欢

转载自www.cnblogs.com/zhishuiyushi/p/11755597.html
今日推荐