操作系统原理与xv6 Linux内核核心技术剖析 - 第1节
1.1 操作系统的定义与目标
1.1.1 操作系统的定义
操作系统(Operating System,OS)是计算机系统中最基本的系统软件,它负责管理计算机硬件资源、控制程序运行、改善人机交互界面,并为应用软件提供运行环境。从用户视角看,操作系统是用户与计算机硬件之间的接口;从系统视角看,操作系统是资源的管理者和分配者。
核心定义:操作系统是管理计算机硬件与软件资源的系统软件,它提供进程管理、内存管理、文件系统、设备管理和用户接口等核心功能。
1.1.2 操作系统的目标
| 目标维度 | 具体描述 | 衡量指标 |
|---|---|---|
| 方便性 | 为用户提供友好、高效的交互界面,屏蔽底层硬件复杂性 | 用户学习成本、操作效率 |
| 有效性 | 提高系统资源利用率,减少资源空闲和浪费 | CPU利用率、内存利用率、I/O吞吐量 |
| 可扩展性 | 支持新硬件、新功能的添加,不破坏现有系统结构 | 模块化程度、接口稳定性 |
| 开放性 | 遵循标准接口,支持不同厂商软硬件的互操作 | 标准符合度、兼容性测试通过率 |
xv6 视角:xv6 作为教学操作系统,其首要目标是方便性——让学习者能够通过阅读源码理解操作系统的核心机制,而非追求极致的性能或功能完备性。
1.2 操作系统的历史演变
1.2.1 批处理阶段(1950s – 1960s 中期)
早期计算机没有操作系统,用户直接使用机器语言编程。批处理系统的出现解决了人工操作效率低下的问题:用户将作业提交给操作员,操作员将一批作业装入计算机,由监控程序自动依次执行。
- 单道批处理:内存中仅有一道程序,CPU 在程序等待 I/O 时空闲
- 多道批处理:内存中同时驻留多道程序,当一道程序等待 I/O 时,CPU 切换执行另一道程序
- 关键问题:缺乏交互性,用户无法干预程序运行过程
1.2.2 分时系统(1960s 中期 – 1970s)
分时系统将 CPU 时间划分为很短的时间片,轮流分配给多个终端用户。由于时间片极短(通常为几十毫秒),每个用户都感觉自己独占了一台计算机。
- CTSS(Compatible Time-Sharing System):第一个实用的分时系统,由 MIT 开发
- Multics:分时系统的里程碑,影响了后来的 Unix 系统
- Unix:由 Ken Thompson 和 Dennis Ritchie 在贝尔实验室开发,奠定了现代操作系统的基础
1.2.3 实时系统(1970s 至今)
实时系统要求系统在严格的时间约束内完成特定任务,常用于工业控制、航空航天、医疗设备等场景。
| 类型 | 特点 | 典型应用 | 时间约束 |
|---|---|---|---|
| 硬实时 | 必须严格遵守截止时间,超时即视为系统失败 | 飞行控制系统、汽车安全气囊 | 微秒级 |
| 软实时 | 允许偶尔超时,但超时会降低系统服务质量 | 视频播放、在线游戏 | 毫秒级 |
1.3 操作系统的四大特征
1.3.1 并发(Concurrency)
并发是指两个或多个事件在同一时间间隔内发生。在操作系统中,宏观上多个程序同时运行,微观上单核 CPU 在任一时刻只能执行一个程序,通过快速切换实现并发。
并发 vs 并行:并发是逻辑上的同时执行(交替执行),并行是物理上的同时执行(多核同时运行)。xv6 在单核上通过时间片轮转实现进程并发。
1.3.2 共享(Sharing)
共享是指系统中的资源可以被多个并发执行的进程共同使用。共享方式分为两种:
| 共享方式 | 定义 | 示例 | 同步要求 |
|---|---|---|---|
| 互斥共享 | 资源在一段时间内只能被一个进程使用 | 打印机、磁带机 | 需要互斥锁 |
| 同时共享 | 资源允许多个进程同时访问 | 磁盘、内存(只读段) | 需要读写锁 |
1.3.3 虚拟(Virtualization)
虚拟技术将一个物理实体映射为多个逻辑实体,或者将多个物理实体映射为一个逻辑实体。操作系统通过虚拟化技术为用户提供比物理资源更丰富、更易用的资源视图。
- 虚拟处理器:通过分时复用,让每个进程感觉自己独占 CPU
- 虚拟内存:通过页表映射,让每个进程拥有独立的地址空间
- 虚拟设备:通过 SPOOLing 技术,将独占设备虚拟为共享设备
1.3.4 异步(Asynchronism)
异步是指进程的执行不是一贯到底的,而是以不可预知的速度向前推进。由于资源竞争和 I/O 等待,进程可能随时被暂停或恢复执行。
异步带来的挑战:进程执行顺序的不确定性可能导致竞态条件(Race Condition)。xv6 通过锁机制(spinlock)来保证临界区的互斥访问,确保异步环境下数据的一致性。
1.4 四大特征的内在联系
并发和共享是操作系统最基本的两个特征,虚拟和异步是前两个特征衍生出来的结果。