Files
obsidian/操作系统/00_操作系统概述/00_操作系统概述.md

22 KiB
Raw Blame History

第00讲 操作系统概述

[!info] 课程信息 课程:操作系统(专业基础课,必修) 教材《计算机操作系统》第4版汤小丹 等,西安电子科技大学出版社 学时4 学时第1章 绪论) 先修课程C语言、数据结构、计算机组成原理 考核方式:平时成绩 40% + 闭卷笔试 60% 课程目标:理解 OS 基本原理 → 掌握系统编程 → 培养系统级思维


一、操作系统的概念

1.1 什么是操作系统

操作系统Operating System, OS管理计算机硬件与软件资源的系统软件,是用户与计算机硬件之间的接口。

┌─────────────────────────────────────┐
│            应用程序层                │  ← 用户直接使用
├─────────────────────────────────────┤
│          ★ 操作系统层 ★             │  ← 管理者与中介者
├─────────────────────────────────────┤
│            硬件层                    │  ← CPU、内存、设备
└─────────────────────────────────────┘

[!tip] 三种看待 OS 的视角

  • 用户视角OS 是一台"虚拟机"——隐藏硬件复杂性,提供易用的接口
  • 系统视角OS 是一个"资源管理者"——分配 CPU、内存、I/O 设备等
  • 软件视角OS 是一个"运行平台"——提供系统调用和运行环境

1.2 操作系统的目标

目标 含义 典型手段
方便性 降低用户使用计算机的难度 GUI、命令行、系统调用
有效性 提高系统资源的利用率 调度算法、虚拟内存、缓冲技术
可扩充性 便于扩充新功能 模块化、微内核架构
开放性 遵循标准,兼容互连 POSIX 标准、ABI 兼容

1.3 操作系统的作用

作用一:用户与硬件之间的接口

用户 / 应用程序
      │
      │  系统调用 (System Call)
      │  命令 (Shell)
      │  GUI (图形界面)
      ▼
┌─────────────┐
│  操作系统    │
└─────────────┘

作用二:计算机资源的管理者

OS 负责管理四大类资源:

作用三:扩充机器(虚拟机)

OS 在裸机之上叠加多层软件,将物理资源转化为功能更强、使用更方便的逻辑资源。


二、操作系统的发展历程

[!note] 发展驱动力 OS 的每一次变革,根本动力都是提高资源利用率方便用户使用

2.1 发展时间线

timeline
    title 操作系统发展历程
    1940s-1950s : 手工操作阶段
                 : 无操作系统
                 : 人工操作纸带/卡片
    1950s中后期  : 单道批处理系统
                 : 监督程序出现
                 : 自动按批处理作业
    1960s前期    : 多道批处理系统
                 : 多道程序并发执行
                 : 资源利用率大幅提升
    1960s中后期  : 分时系统
                 : 人机交互成为可能
                 : CTSS, MULTICS, UNIX
    1970s-1980s  : 实时系统
                 : 实时控制/实时信息处理
                 : 响应时间有严格保证
    1980s-1990s  : 网络操作系统
                 : 网络资源共享
                 : C/S 模式
    1990s-至今   : 分布式操作系统
                 : 多机协同, 透明性
                 : 云计算, 容器化

2.2 各阶段详解

1手工操作阶段1940s-1950s

  • 特点:无操作系统,用户独占全机
  • 工作方式:程序员通过纸带/卡片将程序输入计算机,手工控制运行
  • 问题
    • 用户独占资源CPU 利用率极低
    • 人工操作时间远大于计算时间
    • 上机需要预约机时

2单道批处理系统1950s中后期

  • 核心思想:引入监督程序Monitor,自动依次处理一批作业
  • 特征:作业成批输入,自动顺序执行,无交互能力
  • 改进:减少了人工干预时间
  • 不足内存中始终只有一个程序运行I/O 等待时 CPU 空闲
作业1 → [输入] → [计算] → [输出]
                        作业2 → [输入] → [计算] → [输出]
                                               作业3 → ...
CPU:  ████░░░░░░████████░░░░░░████████      ← CPU 仍大量空闲

[!warning] 单道批处理的瓶颈 当某作业进行 I/O 操作时CPU 处于空闲等待状态,系统资源利用率仍然不高。

3多道批处理系统1960s前期

  • 核心思想:内存中同时存放多道程序,利用 CPU 空闲时间切换到其他程序运行
  • 关键特征
    • 多道性:内存中有多道程序并发执行
    • 宏观并行:多道程序同时在系统中运行
    • 微观串行:任一时刻 CPU 只执行一道程序

[!important] 多道批处理的意义 多道程序设计技术是 OS 发展史上的里程碑。它引入了程序并发执行的概念,极大地提高了 CPU 和资源利用率。这也是后续 06_进程控制11_处理机调度 的基础。

  • 缺点:无交互能力(用户提交作业后无法干预)、平均周转时间长

4分时系统1960s中后期

  • 核心思想:多个用户通过终端同时使用一台计算机,每人获得"独占"的错觉
  • 关键技术时间片轮转 —— 每个用户/程序轮流使用一小段 CPU 时间
  • 特征
    • 多路性:多个用户同时使用
    • 独立性:各用户互不干扰
    • 交互性:用户可实时与系统对话
    • 及时性:响应时间通常在数秒内

[!example] 典型分时系统

  • CTSS1961MIT最早的分时系统之一
  • MULTICS1964MIT/Bell Labs/GE影响深远但过于复杂
  • UNIX1969Ken Thompson & Dennis Ritchie从 MULTICS 理念简化而来,成为现代 OS 的基石

5实时系统1970s-1980s

  • 定义:系统能及时响应外部事件请求,在规定时间内完成处理
  • 两种类型
类型 应用场景 示例
实时控制系统 工业过程控制、军事 飞行控制、导弹制导
实时信息处理 信息查询与处理 飞机订票系统、银行交易
  • 与分时系统的区别:实时系统强调确定性(硬实时)或高概率满足时限(软实时)

6网络操作系统1980s-1990s

  • 目标:实现网络中各计算机之间的资源共享与通信
  • 特征:基于 C/S 模式,提供文件共享、打印服务、网络通信等
  • 典型系统Novell NetWare、Windows NT Server

7分布式操作系统1990s-至今)

  • 目标:多台计算机协同工作,对外表现为一个统一的系统
  • 关键特征
    • 分布性:多台自治计算机协作
    • 透明性:用户感知不到资源的物理分布
    • 共享性:资源全局共享

[!tip] 分布式系统的演进 从集群计算 → 网格计算 → 云计算IaaS/PaaS/SaaS→ 容器编排Kubernetes分布式系统的理念在不断深化。现代云计算本质上是分布式操作系统的延伸。


三、操作系统的基本功能

graph TB
    subgraph OS["操作系统"]
        PM["处理机管理
Process Management"]
        SM["存储器管理
Memory Management"]
        DM["设备管理
Device Management"]
        FM["文件管理
File Management"]
        UI["用户接口
User Interface"]
    end

    PM --> CPU["CPU 分配与回收"]
    PM --> PROC["进程创建/撤销"]
    PM --> SCHED["进程调度"]
    PM --> SYNC["同步与通信"]
    PM --> DEAD["死锁处理"]

    SM --> ALLOC["内存分配与回收"]
    SM --> PROTECT["内存保护"]
    SM --> ADDR["地址映射"]
    SM --> VMEM["虚拟内存"]

    DM --> BUFFER["缓冲管理"]
    DM --> DEV_ALLOC["设备分配与回收"]
    DM --> DRIVER["设备驱动"]

    FM --> DIR["目录管理"]
    FM --> DISK["磁盘空间管理"]
    FM --> RW["文件读写"]

    UI --> CMD["命令接口"]
    GUI --> GUI_INT["图形接口"]
    UI --> SYSCALL["程序接口(系统调用)"]

    style OS fill:#1a1a2e,stroke:#e94560,color:#fff
    style PM fill:#16213e,stroke:#0f3460,color:#fff
    style SM fill:#16213e,stroke:#0f3460,color:#fff
    style DM fill:#16213e,stroke:#0f3460,color:#fff
    style FM fill:#16213e,stroke:#0f3460,color:#fff
    style UI fill:#16213e,stroke:#0f3460,color:#fff

3.1 处理机管理(进程管理)

处理机管理是 OS 的核心功能,负责对 CPU 资源 进行管理和调度。

主要任务:

  1. 进程控制:创建、撤销进程,控制进程状态转换 → 06_进程控制
  2. 进程调度:按照一定策略从就绪队列中选择进程投入运行 → 11_处理机调度
  3. 进程同步与通信:协调并发进程之间的关系,解决竞争与协作问题 → 08_进程间通信
  4. 死锁处理:预防、避免、检测和解除死锁 → 12_死锁

[!info] 进程 vs 程序

  • 程序:静态的代码和数据(存储在磁盘上的文件)
  • 进程:程序的一次执行过程,是动态的、有生命周期的
  • 一个程序可以对应多个进程(例如多次打开同一个浏览器)

3.2 存储器管理

存储器管理负责为程序分配内存空间,并确保各程序互不干扰。

功能 说明
内存分配与回收 按策略为进程分配内存,进程结束时回收
内存保护 确保每个进程只能访问自己的地址空间
地址映射 将逻辑地址转换为物理地址(需要 [[01_系统运行机制
虚拟内存 利用磁盘扩充内存容量,使程序不受物理内存限制

相关笔记:13_存储管理基础14_分页存储管理15_段式存储管理16_虚拟存储器

3.3 设备管理

设备管理负责管理各类 I/O 设备,完成用户提出的 I/O 请求。

  • 缓冲管理:在 CPU 与 I/O 设备之间设置缓冲区,缓解速度差异
  • 设备分配与回收:按策略为进程分配设备
  • 设备驱动:控制设备硬件完成实际的输入输出操作

[!tip] I/O 控制方式的演进 程序直接控制 → 中断驱动 → DMA → 通道。每种方式在 CPU 参与度和效率上逐步优化。详见 01_系统运行机制 中的中断机制。

3.4 文件管理

文件管理负责管理外存上的文件,为用户提供"按名存取"的能力。

  • 文件存储空间管理:管理磁盘空间的分配与回收 → 05_磁盘空间管理
  • 目录管理:通过目录结构组织文件,支持文件的按名查找
  • 文件读写与保护:控制文件的读、写、执行权限 → 09_文件系统

3.5 用户接口(用户与 OS 的通信手段)

接口类型 形式 说明
命令接口 Shell 命令 用户在终端输入命令(如 ls, gcc
图形接口 GUI 窗口操作 通过鼠标点击操作(如 Windows 桌面)
程序接口 系统调用 (System Call) 应用程序通过 API 请求 OS 服务

[!important] 系统调用 系统调用是应用程序与操作系统之间的唯一合法入口。当程序需要访问硬件资源(如读文件、分配内存、创建进程)时,必须通过系统调用陷入内核态执行。这是 01_系统运行机制 的核心内容。


四、操作系统的结构

[!note] 为什么要关注 OS 结构? 操作系统是一个极其复杂的大型软件。良好的结构设计能够提高系统的可靠性、可维护性和可扩展性

4.1 整体式结构Monolithic Structure

┌──────────────────────────────────┐
│           用户程序               │
├──────────────────────────────────┤
│                                  │
│        操作系统内核              │
│  ┌────┬────┬────┬────┬────┐     │
│  │进程│内存│设备│文件│调度│     │
│  │管理│管理│管理│管理│算法│     │
│  └────┴────┴────┴────┴────┘     │
│   所有模块在同一层,任意调用       │
│                                  │
├──────────────────────────────────┤
│           硬件                   │
└──────────────────────────────────┘
  • 特点:所有功能模块组织在一起,模块之间可以相互调用
  • 优点:结构简单、效率高(模块间直接函数调用)
  • 缺点:模块间耦合度高,一处错误可能导致整个系统崩溃;难以调试和维护
  • 典型代表:早期 UNIX

4.2 层次式结构Layered Structure

┌─────────────────────┐
│    第 N 层:用户接口  │
├─────────────────────┤
│  第 N-1 层:文件管理  │
├─────────────────────┤
│  第 N-2 层:设备管理  │
├─────────────────────┤
│  第 N-3 层:内存管理  │
├─────────────────────┤
│  第 N-4 层:进程管理  │
├─────────────────────┤
│  第 0 层:硬件抽象    │
└─────────────────────┘
每一层只调用下一层的服务
  • 特点:将 OS 划分为若干层,每层只能调用紧邻的下层
  • 优点:结构清晰、便于调试(逐层验证)、错误隔离
  • 缺点:层间调用带来性能开销;层次划分困难
  • 典型代表THE 系统Dijkstra, 1968、Windows NT 内核

4.3 微内核结构Microkernel

┌──────────────────────────────────────┐
│  用户态                               │
│  ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │
│  │文件  │ │网络   │ │设备   │ │用户  │ │
│  │服务  │ │服务   │ │驱动   │ │应用  │ │
│  └──┬───┘ └──┬───┘ └──┬───┘ └──┬───┘ │
│     │        │        │        │     │
│  ┌──┴────────┴────────┴────────┴──┐  │
│  │    消息传递 (IPC)               │  │
│  └──────────────┬─────────────────┘  │
├─────────────────┼────────────────────┤
│  内核态          │                    │
│  ┌──────────────┴────────────────┐   │
│  │  微内核                        │   │
│  │  · 进程调度                     │  │
│  │  · 内存管理(基本)              │  │
│  │  · 进程间通信 (IPC)             │  │
│  └───────────────────────────────┘   │
├──────────────────────────────────────┤
│              硬件                     │
└──────────────────────────────────────┘
  • 核心思想:将 OS 核心功能精简到最小(微内核),其余功能以用户态服务进程运行
  • 优点
    • 内核小而稳定,可靠性高
    • 服务进程崩溃不影响内核
    • 易于扩展新服务
  • 缺点:用户态与内核态之间的消息传递带来性能开销
  • 典型代表Mach、QNX、MINIX、L4、Windows NT混合结构

[!example] 现实中的微内核

  • QNX:用于汽车电子、航空航天等安全关键领域
  • Google Fuchsia:基于 Zircon 微内核
  • 鸿蒙 OS:采用微内核架构,用于 IoT 和移动设备

4.4 虚拟机结构Virtual Machine

┌──────┐ ┌──────┐ ┌──────┐
│ VM 1 │ │ VM 2 │ │ VM 3 │   ← 各 VM 运行独立的 OS
│Linux │ │Win   │ │macOS │
├──────┤ ├──────┤ ├──────┤
│Guest │ │Guest │ │Guest │   ← 客户机 OS
│ OS   │ │ OS   │ │ OS   │
└──┬───┘ └──┬───┘ └──┬───┘
   │        │        │
┌──┴────────┴────────┴──┐
│  虚拟机监控器 (VMM/Hypervisor) │   ← 硬件虚拟化
├───────────────────────┤
│        硬件            │
└───────────────────────┘
  • 核心思想:在硬件之上运行虚拟机监控器VMM/Hypervisor,将物理机器虚拟为多台逻辑机器
  • 优点
    • 完全隔离,安全性最高
    • 可以在同一硬件上运行不同 OS
    • 便于系统迁移和测试
  • 缺点:虚拟化带来性能损耗
  • 典型代表VMware、KVM、Xen、Hyper-V

[!tip] 容器化 vs 虚拟机

  • 虚拟机:虚拟化整个硬件,每个 VM 运行完整的 OS
  • 容器Docker共享宿主 OS 内核,只隔离用户空间,更轻量
  • 容器可以看作是操作系统层面虚拟化的产物

4.5 四种结构对比

结构 耦合度 性能 可靠性 可扩展性 代表
整体式 早期 UNIX
层次式 THE, Windows NT
微内核 较低 QNX, L4, Mach
虚拟机 最低 较低 最高 最好 VMware, KVM

五、操作系统的特征

[!important] 四大基本特征 理解这四个特征是学习后续所有章节的前提。

5.1 并发Concurrence

  • 并发:多个事件在同一时间间隔内发生(宏观同时,微观交替)
  • 并行Parallelism多个事件在同一时刻同时发生需要多核/多处理器)

[!tip] 并发 vs 并行

  • 单核 CPU只能实现并发(通过时间片轮转)
  • 多核 CPU可以实现并行(每个核心执行一个进程)
  • 并发是 OS 最基本、最重要的特征

5.2 共享Sharing

  • 互斥共享:资源一次只允许一个进程使用(如打印机)
  • 同时共享:资源可被多个进程同时访问(如磁盘文件、只读代码段)

并发和共享是 OS 的两个最基本的特征,它们互为存在条件

5.3 虚拟Virtual

  • 通过某种技术将一个物理实体变为多个逻辑实体
  • CPU 虚拟化:时分复用 → 每个进程感觉自己独占 CPU
  • 内存虚拟化:空分复用 → 虚拟内存技术让程序使用比实际更大的地址空间

5.4 异步Asynchronism

  • 进程的执行以不可预知的速度向前推进
  • 同一程序、同一数据,多次运行的结果可能不同(取决于调度和资源竞争)
  • OS 需要保证:只要运行环境相同,程序的最终结果一致

六、本讲小结

graph LR
    A["操作系统概述"] --> B["概念"]
    A --> C["发展历程"]
    A --> D["基本功能"]
    A --> E["系统结构"]
    A --> F["基本特征"]

    B --> B1["定义:系统软件"]
    B --> B2["目标:方便·有效·可扩·开放"]
    B --> B3["作用:接口·管理·扩充"]

    C --> C1["手工 → 批处理"]
    C --> C2["分时 → 实时"]
    C --> C3["网络 → 分布式"]

    D --> D1["处理机管理"]
    D --> D2["存储器管理"]
    D --> D3["设备管理"]
    D --> D4["文件管理"]
    D --> D5["用户接口"]

    E --> E1["整体式 / 层次式"]
    E --> E2["微内核 / 虚拟机"]

    F --> F1["并发·共享·虚拟·异步"]

    style A fill:#e94560,stroke:#333,color:#fff
    style B fill:#0f3460,stroke:#333,color:#fff
    style C fill:#0f3460,stroke:#333,color:#fff
    style D fill:#0f3460,stroke:#333,color:#fff
    style E fill:#0f3460,stroke:#333,color:#fff
    style F fill:#0f3460,stroke:#333,color:#fff

七、相关笔记

主题 链接
系统运行机制中断、MMU、系统调用 01_系统运行机制
进程控制fork、exec、wait、signal 06_进程控制
进程间通信 08_进程间通信
处理机调度 11_处理机调度
死锁 12_死锁
存储管理基础 13_存储管理基础
分页存储管理 14_分页存储管理
段式存储管理 15_段式存储管理
虚拟存储器 16_虚拟存储器
磁盘空间管理 05_磁盘空间管理
文件系统 09_文件系统
课程总导航 00_课程导航