操作系统的运行机制 - 图1

运行机制

什么是指令?指令和我们平时所说的代码优什么区别?

C语言代码 -> 翻译 -> 机器语言指令(一条高级语言的代码翻译过来可能会对应多条指令)


操作系统的运行机制 - 图2

问:CPU 如何判断当前是否可以执行特权指令?

操作系统的运行机制 - 图3

用程序状态字寄存器(PSW)中某标志位来标识当前处理器处于什么状态。如 0 为用户态,1 为核心态。

操作系统的运行机制 - 图4

问:操作系统中的哪些功能应该由内核程序执行?

在软件工程思想和结构程序设计方法的影响下诞生的现代操作系统,几乎都是层次式的结构。操作系统的各项功能分别被设置在不同的层次上。一些与硬件关联较紧密的模块,诸如时钟管理、中断处理、设备驱动等处于最底层。其次是运行频率较髙的程序,诸如进程管理、存储器管理和设备管理等。这两部分内容构成了操作系统的内核。这部分内容的指令操作工作在核心态。

内核是计算机上配置的底层软件,是计算机功能的延伸。不同系统对内核的定义稍有区别,大多数操作系统内核包括四个方面的内容。

操作系统内核

image.png

内核是计算机上配置的的底层软件,是操作系统最基本、最核心的部分。

实现操作系统内核功能的那些程序就是内核程序。

时钟管理

在计算机的各种部件中,时钟是最关键的设备。时钟的第一功能是计时,操作系统需要通过时钟管理,向用户提供标准的系统时间。另外,通过时钟中断的管理,可以实现进程的切换。诸如,在分时操作系统中,釆用时间片轮转调度的实现;在实时系统中,按截止时间控制运行的实现;在批处理系统中,通过时钟管理来衡量一个作业的运行程度等。因此,系统管理的方方面面无不依赖于时钟。

中断机制

引入中断技术的初衷是提高多道程序运行环境中 CPU 的利用率,而且主要是针对外部设备的。后来逐步得到发展,形成了多种类型,成为操作系统各项操作的基础。例如,键盘或鼠标信息的输入、进程的管理和调度、系统功能的调用、设备驱动、文件访问等,无不依赖于中断机制。可以说,现代操作系统是靠中断驱动的软件

中断机制中,只有一小部分功能属于内核,负责保护和恢复中断现场的信息,转移控制权到相关的处理程序。这样可以减少中断的处理时间,提高系统的并行处理能力。

原语

按层次结构设计的操作系统,底层必然是一些可被调用的公用小程序,它们各自完成一个规定的操作。其特点是:

  1. 它们处于操作系统的最底层,是最接近硬件的部分。
  2. 这些程序的运行具有原子性——其操作只能一气呵成(这主要是从系统的安全性和便于管理考虑的)。
  3. 这些程序的运行时间都较短,而且调用频繁。


通常把具有这些特点的程序称为原语(Atomic Operation)。定义原语的直接方法是关闭中断,让它的所有动作不可分割地进行完再打开中断。

系统中的设备驱动、CPU切换、进程通信等功能中的部分操作都可以定义为原语,使它们成为内核的组成部分。

系统控制的数据结构及处理

系统中用来登记状态信息的数据结构很多,比如作业控制块、进程控制块(PCB)、设备控制块、各类链表、消息队列、缓冲区、空闲区登记表、内存分配表等。为了实现有效的管理,系统需要一些基本的操作,常见的操作有以下三种:

  • 进程管理:进程状态管理、进程调度和分派、创建与撤销进程控制块等。
  • 存储器管理:存储器的空间分配和回收、内存信息保护程序、代码对换程序等。
  • 设备管理:缓冲区管理、设备分配和回收等。

操作系统的体系结构

操作系统的运行机制 - 图6

类比:

操作系统的体系结构问题与企业的管理问题很相似。

内核就是企业的管理层,负责一些重要的工作。只有管理层才能执行特权指令,普通员工只能执行非特权指令。用户态、核心态之间的切换相当于普通员工和管理层之间的工作交接。

  • 大内核:企业初创时体量不到,管理层的人会负责大部分的事情。有点事效率高;缺点是组织结构混乱,难以维护
  • 微内核:随着企业体量越来越大,管理层只负责最核心的一些工作。优点是组织结构清晰,方便维护;缺点是效率低。