第一章 计算机系统概述:操作系统运行环境和操作系统结构
1.3 操作系统运行环境
一、CPU 执行的程序类型
操作系统内核程序:
- 是唯一能使用特权指令的程序,属于计算机底层软件,管理系统的各种资源。
- 核心功能: 时钟管理、中断机制(仅小部分属于内核);
- 原语: 最基础的可调用公共小程序;
- 系统资源管理: 进程管理、存储器管理、设备管理。
用户自编程序(应用程序):
- 不允许执行特权指令。
二、运行模式切换(通过 PSW 程序状态字控制器实现)
两种状态:
- 用户态(目态);
- 核心态(管态、内核态)—— 需与“发生”类概念区分,核心态下可执行特权指令(如输入/输出指令、时钟指令、系统调用指令等)。
状态切换方式:
- 内核态→用户态:执行一条修改 PSW 的特权指令;
- 用户态→内核态:由中断引起,硬件自动完成(这是用户态进入内核态的唯一途径)。
三、中断和异常
中断概念:
- 使操作系统内核强行夺回 CPU 控制权,让 CPU 从用户态切换到内核态。
中断分类:
| 类型 | 子分类 | 触发原因 & 处理 | 补充说明 |
|---|---|---|---|
| 内中断(异常) | 访管 / 自陷(trap) | 由陷入指令引发,用于调用内核功能(如缺页故障、非法操作码) | 属于软件中断(程序性异常) |
| 故障(fault) | 由错误条件引发,修复后可继续执行程序 | ||
| 终止(abort) | 由指令错误引发,无法修复,会终止应用程序 | ||
| 外中断(狭义中断) | 时钟中断 | 由时钟信号触发 | 属于硬件中断 |
| I/O 中断请求 | 由 I/O 设备请求触发 | 注:外部中断时,PC 值由中断隐指令自动保存,通用寄存器内容由 OS 保存。 |
四、中断机制的基本实现原理
检查中断信号:
- 内中断:CPU 执行指令时检查是否有异常;
- 外中断:每个指令周期末尾,CPU 检查是否有外中断信号。
找到中断处理程序:
- 通过中断向量表实现(与子程序调用的区别:中断处理需同时保存断点和 PSW 内容)。
五、系统调用
概念:
- 操作系统提供给应用程序的接口,使应用程序能请求内核服务(只能通过用户程序间接使用)。
系统调用与库函数的区别:
- 部分库函数是系统调用的封装;
- 部分库函数不依赖系统调用。
使用场景:
- 设备管理、文件管理、进程管理、进程控制、内存管理。
执行过程:
- 用户态传参 → 用户态陷入指令 → 核心态系统调用 → 返回用户态应用程序。
1.4 操作系统结构
计算机系统的层次结构(从下到上):
- 裸机(纯硬件);
- 操作系统内核(时钟管理、中断处理、原语等);
- 操作系统功能层(进程管理、存储器管理、设备管理等);
- 非内核功能(如 GUI);
- 应用程序(软件);
- 用户。
注:
- 内核中的原语是具有原子性的特殊程序,运行时不可被中断;若仅将原语层视为内核,则称为微内核。
操作系统内核框架分类
| 结构类型 | 核心特点 | 优点 | 缺点 | 典型案例 |
|---|---|---|---|---|
| 宏内核(大内核、单内核) | 系统功能都在内核中,运行于核心态 | 高性能,内核内部功能可直接调用 | 内核代码庞大、结构混乱,维护困难;某功能出错可能导致系统崩溃 | Windows、Android、iOS |
| 微内核 | 仅将最基础功能(时钟、中断、原语、进程通信等)放在内核中,其余功能在核外 | 结构清晰、方便维护、可靠性高 | 需频繁在核心态与用户态间切换,性能低 | Windows NT |
| 分层法 | 内核分为多层,每层仅能调用紧邻的底层功能 | 结构清晰,便于调试和验证;易于扩充和维护 | 设计困难,难界定层边界;效率低,执行时间长 | - |
| 模块化 | 内核划分为主模块 + 可加载模块,模块间协作 | 逻辑清晰、易于维护;可动态加载模块;模块间直接调用,效率高 | 模块太多,接口难定义;调试困难 | - |
| 外核 | 内核负责进程调度等,外核负责硬件资源的分配、回收、保护 | 用户可灵活使用硬件资源,减少虚拟资源映射层,提高效率 | 降低系统一致性,系统复杂度增加 | - |


雷达卡


京公网安备 11010802022788号







