操作系统的运行机制

160 阅读5分钟

点击阅读:操作系统系列文章


1. 操作系统的运行机制

1.1 应用程序和内核程序

  • 应用程序:用户平时直接使用的程序,如 QQ、微信等。

  • 内核程序:负责管理计算机的硬件资源和提供基本的系统功能,如进程管理、内存管理、设备驱动等。是系统资源的管理者。

很多内核程序组成了 操作系统内核,简称 内核内核是操作系统的核心部分,也是最接近硬件的部分。甚至可以说一个操作系统只需要内核就够了。

注:操作系统的功能未必都在内核中,如 GUI、shell 等。

1.2 特权指令和非特权指令

  • 特权指令:只有操作系统内核或特权级别的程序才能执行的指令。这些指令影响重大。
  • 非特权指令:普通用户程序可以执行的指令。

注:CPU在设计和生产时就划分了特权指令和非特权指令。

1.3 内核态和用户态

CPU 能判断出指令类型,但怎么区分此时正在运行的程序是应用程序还是内核程序?

CPU 的两种状态:

  • 内核态:又称核心态、管态。此时正在运行的程序是内核程序,此时可以执行特权指令。
  • 用户态:又称目态。此时正在运行的程序是用户程序,此时可以执行非特权指令。

注:程序状态寄存器 PSW,其中的一个二进制位表示 CPU 状态。

1.4 CPU 状态的切换

  1. 内核态 -> 用户态执行一条特权指令,修改 PSW 的标志位为用户态,操作系统让出 CPU 的使用权。
  2. 用户态 -> 内核态:由中断引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回 CPU 的使用权。

2. 中断和异常

2.1 中断的作用

中断是让操作系统内核夺回CPU使用权的唯一途径

2.2 中断的类型

image.png

2.2.1 内中断

内中断:与当前执行的指令有关,中断信号来自于 CPU 的内部。若当前执行的指令是非法的,则会产生一个中断信号。如执行除法指令时,发现除数为0。

有时候应用程序想请求操作系统内核的服务,此时会执行一条特殊的指令——陷入指令(非特权指令),该指令会引发一个内部中断信号系统调用就是通过陷入指令完成的。

2.2.2 外中断

外中断:与当前执行的指令无关,中断信号来源于CPU的外部。

  • 时钟中断:由时钟部件发来的中断信号。时钟部件每隔一个时间片会给 CPU 发送一个时钟中断信号。
  • I/O 中断:当输入输出完成时,向 CPU 发送中断信号。

2.3 中断机制的基本原理

不同的中断信号,需要不同的中断处理程序来处理。当 CPU 检测到中断信号后,会根据中断信号的类型去查询中断向量表,找到相应的中断处理程序内存中的存放位置。

3. 系统调用

3.1 什么是系统调用?

系统调用是操作系统提供给应用程序(编程人员)使用的接口,应用程序可通过系统调用来请求获得操作系统内核的服务

3.2 系统调用与库函数

  1. 操作系统:向上提供系统调用,使得上层程序能够请求内核的服务。
  2. 编程语言:向上提供库函数。有时会将系统调用封装成库函数,以隐藏系统调用的一些细节。
  3. 应用程序:可直接进行系统调用,也可以使用库函数。

注:有的库函数涉及系统调用,也有的不涉及系统调用

3.3 系统调用按功能分类

  1. 设备管理:完成设备的 请求/释放/启动 等功能。
  2. 文件管理:完成文件的 读/写/创建/删除 等功能。
  3. 进程控制:完成进程的 创建/撤销/阻塞/唤醒 等功能。
  4. 进程通信:完成进程之间的 消息传递/信号传递 等功能。
  5. 内存管理:完成内存的 分配/回收 等功能。

注:凡是与共享资源有关的操作,都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。这样可以保证系统的稳定性和安全性。

3.4 系统调用的过程

  1. 传递系统调用参数。
  2. 执行陷入指令(用户态)。
  3. 执行相应的内核程序处理系统调用(核心态)。
  4. 返回应用程序。

4. 操作系统引导(Boot)

开机的时候如何让操作系统运行起来?

image.png

主存包含 RAMROM

RAM 一般指内存。 ROM 里存的是 BIOS,其中就包含一个 ROM 引导程序,即自举程序

操作系统引导过程

  1. CPU从一个特定主存地址开始,取指令,执行ROM中的引导程序(先进行硬件自检,再开机)。
  2. 将磁盘的第一块——主引导记录读入内存,执行磁盘引导程序,扫描分区表。
  3. 从活动分区(又称主分区,即安装了操作系统的分区)读入分区引导记录,执行其中的程序。
  4. 从根目录下找到完整的操作系统初始化程序(即 启动管理器)并执行,完成“开机”的一系列动作。

点击阅读:操作系统系列文章