Skip to content

Latest commit

 

History

History
190 lines (158 loc) · 6.06 KB

File metadata and controls

190 lines (158 loc) · 6.06 KB

🧩 操作系统扫盲文档

一、引言

当你打开电脑、点击图标、运行应用程序时,背后真正让这一切运作的核心——就是 操作系统(Operating System, 简称 OS)

1. 什么是操作系统

操作系统是一种管理计算机硬件与软件资源的系统软件。它位于 硬件应用程序 之间,为用户提供一个易于使用的接口,并为程序提供安全、受控的运行环境。

操作系统是“计算机的管理者”,也是“应用程序的服务员”。

2. 操作系统的主要功能

  • 资源管理:统一管理 CPU、内存、磁盘、网络等硬件资源。
  • 程序调度:决定哪个程序、什么时候、在什么条件下执行。
  • 文件与存储管理:为数据存取提供高层抽象,如文件系统。
  • 安全与隔离:保护不同程序之间互不干扰。
  • 用户交互:通过命令行或图形界面与用户沟通。

3. 操作系统的演进

  • 早期批处理系统:一次只能执行一个任务。
  • 多道程序系统:允许多个任务同时驻留内存,提高 CPU 利用率。
  • 分时系统:每个用户获得短时间的 CPU 使用权,实现“多人同时使用”。
  • 现代操作系统:支持多核并行、虚拟化、分布式、移动设备等。

4. 常见操作系统举例

类型 示例
桌面系统 Windows、macOS、Linux
服务器系统 Ubuntu Server、CentOS、Debian
移动系统 Android、iOS
嵌入式系统 RT-Thread、FreeRTOS、VxWorks

二、系统结构(System Structure)

1. 操作系统的层次结构

+---------------------------------------+
| 用户(User)                          |
+---------------------------------------+
| 应用程序(Applications)               |
+---------------------------------------+
| 操作系统(Operating System)           |
|   ├── 系统调用接口(System Call)     |
|   ├── 内核(Kernel)                 |
|   └── 驱动程序(Device Drivers)     |
+---------------------------------------+
| 硬件(Hardware)                       |
+---------------------------------------+

2. 操作系统的组成模块

模块 功能简述
进程管理 负责进程的创建、调度与终止
内存管理 控制内存分配与回收
文件系统 管理磁盘文件的读写、创建、删除
设备管理 管理输入输出设备
系统调用接口 提供程序与内核交互的统一接口

3. 内核设计模式

类型 特点 举例
单体内核 所有核心功能都在一个大内核中运行 Linux、早期 UNIX
微内核 仅保留核心功能,其他服务在用户态运行 Minix、QNX
模块化内核 支持模块加载,灵活可扩展 现代 Linux
混合内核 结合单体与微内核优点 Windows NT、XNU

4. 系统启动与系统调用示例

#include <unistd.h>
#include <sys/syscall.h>
int main() {
    syscall(SYS_write, 1, "Hello OS\n", 9);
    return 0;
}

三、进程管理(Process Management)

1. 进程的基本概念

  • 程序 vs 进程:程序是静态代码,进程是运行实例。
  • 特征:动态性、独立性、并发性、异步性。

进程状态图

     +-----------+
     | 新建(New) |
     +-----+-----+
           |
           v
     +-----------+
     | 就绪(Ready)|
     +-----+-----+
           |
           v
     +-----------+
     | 运行(Run) |
     +-----+-----+
       ^        |
       |        v
     +-----------+
     | 阻塞(Block)|
     +-----+-----+
           |
           v
     +-----------+
     | 终止(Exit)|
     +-----------+

2. 调度算法

算法 特点 场景
FCFS 先来先服务 批处理系统
SJF 短作业优先 CPU 密集型
RR 时间片轮转 分时系统
Priority 优先级调度 实时任务
MFQ 多级反馈队列 Linux 等通用系统

3. 上下文切换

保存当前进程状态并加载下一个进程状态,以实现多任务运行。

4. 线程与多线程

  • 线程是进程内最小执行单位。
  • 优点:并发性高、资源共享、开销小。
  • 用户线程 vs 内核线程:速度与阻塞行为不同。
  • 并发(Concurrency) vs 并行(Parallelism):单核交替 vs 多核同时。

5. 进程间通信(IPC)

机制 特点 场景
管道 单向通信 父子进程
消息队列 异步传递 事件系统
共享内存 最高效通信 高频交互
信号量/互斥锁 控制同步 并发控制
信号 内核通知事件 异常、终止

四、内存管理(Memory Management)

1. 内存层次结构

寄存器 → 高速缓存 → 主存(RAM) → 外存(硬盘)

2. 分配方式

  • 连续分配:简单但有碎片问题。
  • 分页:将内存划分为固定页框,程序分页。
  • 分段:按逻辑模块划分段。
  • 段页式结合:兼顾逻辑与物理效率。

3. 虚拟内存

  • 程序“以为”有完整内存,实际按需加载。
  • 缺页中断:访问未加载页面时触发。
  • 页表:记录虚拟页与物理页框映射。

页面置换算法

算法 思想
FIFO 先入先出
LRU 最近最少使用
OPT 理论最优
Clock LRU 近似实现

4. 内存保护与共享

  • 内存隔离防止互相干扰。
  • 共享内存加速通信。
  • 写时复制(COW)、内存映射文件(mmap)提升效率。

五、总结与推荐阅读

核心总结

  • 操作系统连接硬件与应用。
  • 系统结构决定能力。
  • 进程管理支持多任务。
  • 内存管理保障高效安全。
  • 虚拟内存让有限变无限。

推荐资料

  • 《操作系统概念》(Silberschatz)
  • 《现代操作系统》(Tanenbaum)
  • 《深入理解计算机系统》(CSAPP)
  • 《Linux 内核设计与实现》(Robert Love)