操作系统的运行机制(详解版)
将I/O结构的时候提到,现代操作系统是中断驱动(interrupt driven)的。如果没有进程需要执行,没有 I/O 设备需要服务,而且没有用户需要响应,那么操作系统会静静地等待某个事件的发生。
事件总是由中断或陷阱引起的。陷阱(trap,或异常(exception))是一种软件生成的中断,或源于出错(如除数为零或无效存储访问),或源于用户程序的特定请求(执行操作系统的某个服务)。这种操作系统的中断特性规定了系统的通用结构。对于每种中断,操作系统有不同代码段来处理。中断服务程序用于处理中断。
由于操作系统和用户共享计算机系统的硬件和软件,需要确保用户程序的出错仅仅影响自己。由于共享,一个程序错误(bug)可能会对多个进程造成不利的影响。例如,如果一个进程陷入死循环,那么这个死循环可能阻止许多其他进程的正确运行。多道程序系统可能出现更多微妙错误,一个错误程序可能修改另一程序另一程序数据甚至操作系统本身。
如果对这些错误不加以预防,那么计算机只能一次执行一个进程,否则所有输出都值得怀疑。操作系统的正确设计必须确保错误程序(或恶意程序)不会造成其他程序的错误执行。
双重模式与多重模式的执行
为了确保操作系统的正确运行,必须区分操作系统代码和用户代码的执行。大多数计算机系统采用硬件支持,以便区分各种执行模式。
至少需要两种单独运行模式:用户模式(user mode)和内核模式(kernel mode)(也称为监视模式(supervisor mode)、系统模式(system mode)或特权模式(privileged mode))。计算机硬件可以通过一个模式位(mode bit)来表示当前模式:内核模式(0)和用户模式(1)。
有了模式位,就可区分为操作系统执行的任务和为用户执行的任务。当计算机系统执行用户应用时,系统处于用户模式。然而,当用户应用通过系统调用,请求操作系统服务时,系统必须从用户模式切换到内核模式,以满足请求,如图 1 所示。正如将会看到的,这种架构改进也可用于系统操作的许多其他方面。
发表评论