首页 / 知识库 / 进大厂必备计算机基础 / 计算机操作系统原理

11 - 从开机到跑起一个程序,OS 都做了什么

最后一章,我们不讲新知识,而是把前面所有零件串成一条完整的故事线。跟着「开机 → 打开一个程序 → 程序干活」走一遍,你会发现前面每一章都在这条线上各就各位。

第一幕:开机

你按下电源键:

  1. 主板上一段固化的小程序(BIOS/UEFI)先醒来,检查硬件是否正常。
  2. 它从硬盘上找到操作系统,把操作系统内核加载进内存。
  3. 内核开始运行,初始化各种管理机制:进程管理、内存管理(建立页表体系)、文件系统、加载设备驱动……
  4. 最后启动一堆后台服务,把登录界面显示给你。

此刻,那个「管家」(第 01、02 章)已经就位,随时准备接管一切。

第二幕:你双击一个程序

你双击 微信.exe

  1. 这个 .exe 只是硬盘上的一个程序(静态菜谱,第 03 章)。OS 通过文件系统(第 09 章)找到它在硬盘上的数据。
  2. OS 创建一个进程(第 03 章),给它分配一整套家当:一套独立的虚拟地址空间(第 08 章)、进程档案等。
  3. 把程序需要的代码/数据从硬盘装入内存——但用的是虚拟内存机制,暂时用不到的部分先不加载,按需再说(第 07、08 章)。
  4. 进程里创建出线程(第 03 章)来实际执行代码。

菜谱进了厨房,火开起来了,程序「活」了。

第三幕:程序开始干活

现在这个进程要和别人抢 CPU、访问内存、读写文件:

  1. 抢 CPU:它和其他几百个进程一起,被调度器(第 05 章)安排,靠时间片轮转(第 04 章)轮流用 CPU。切换时发生上下文切换
  2. 访问内存:它用虚拟地址访问内存,MMU 查页表翻译成物理地址(第 08 章)。要的数据不在内存?触发缺页中断,OS 从硬盘换回来。
  3. 多线程协作:内部多个线程共享数据,改公共数据时要加锁防止竞态,还要小心死锁(第 06 章)。
  4. 读写文件 / 上网:这些是「越权」操作,程序通过系统调用请 OS 代劳(第 02 章),OS 从用户态切到内核态帮它办。
  5. 加速:频繁访问的数据靠各级缓存(第 10 章)加速,读过的文件留在内存页缓存里。

一张图把 OS 的职责收进脑子里

                你的程序(进程 + 线程)

        ┌───────────────┼────────────────┐
        │               │                │
   要 CPU          要 内存           要 文件/设备
        │               │                │
        ▼               ▼                ▼
  进程调度         虚拟内存/分页      文件系统 + 驱动
 (时间片/优先级)   (MMU+页表+swap)   (inode/系统调用)
        │               │                │
        └───────────────┴────────────────┘

                 底层用「缓存 + 存储金字塔」加速


             硬件(CPU / 内存 / 硬盘 / 设备)

用一句话概括整个操作系统

操作系统就是那个替所有程序管好 CPU、内存、文件和设备,并保证大家互不干扰的「管家」。它用调度分配 CPU,用虚拟内存管理内存,用文件系统组织硬盘,用系统调用守住安全边界,用缓存把整体速度拉起来。

如果你能把这段话背后的道理讲清楚,操作系统的核心认知就已经建立了。

恭喜你学完了

回顾一下这一路:

  • 为什么需要 OS:硬件难用、程序会互相踩踏 → 需要一个管家(01、02)。
  • CPU 怎么分:进程/线程、时间片轮转、调度、并发的坑与锁(03~06)。
  • 内存怎么管:内存不够用 swap、虚拟内存与分页(07、08)。
  • 数据怎么存:文件系统、存储金字塔与缓存(09、10)。

接下来推荐你看 计算机组成原理,去搞懂这些「硬件」本身又是怎么运转的。


回到 README 目录 | 下一篇教程 → 计算机组成原理