跳转至

操作系统概述

什么是操作系统

操作系统(Operating System,OS)是管理计算机硬件和软件资源的系统软件。它是应用程序和硬件之间的中间层,负责让多个程序共享 CPU、内存、磁盘和网络资源。

为什么要学操作系统

理解你写的程序到底干什么。 你调用一个 printf,背后涉及系统调用、用户态和内核态的切换、缓冲区管理、设备驱动。不理解操作系统,你写的程序就是个黑盒子。

写出更高效的程序。 理解进程调度、内存分页、缓存机制,你就能写出对系统更友好的代码。

面试中的硬通货。 操作系统是计算机考研和大厂面试的核心科目。进程与线程的区别、死锁的条件、虚拟内存的原理——这些问题出现的频率极高。

为后续学习打基础。 计算机网络、数据库、分布式系统,这些高阶课程都建立在操作系统概念之上。

核心知识模块

进程与线程

  • 进程是程序的一次执行实例,拥有独立的地址空间
  • 线程是进程内的执行单元,同一进程的线程共享地址空间
  • 进程间通信(IPC):管道、消息队列、共享内存、信号量
  • 线程同步:互斥锁、条件变量、读写锁

内存管理

  • 虚拟内存:每个进程有自己的虚拟地址空间,操作系统负责映射到物理内存
  • 分页与分段:内存管理的两种基本方式
  • 页面置换算法:LRU、FIFO、Clock 等
  • 内存分配:堆和栈的区别,malloc 的底层实现

文件系统

  • 文件的组织方式:目录树结构
  • 磁盘调度算法:SCAN、C-SCAN、SSTF
  • 文件系统的实现:inode、日志文件系统

I/O 与设备管理

  • I/O 模型:阻塞、非阻塞、多路复用(select/poll/epoll)
  • 设备驱动的角色
  • 中断处理机制

并发与同步

  • 临界区问题
  • 经典同步问题:生产者-消费者、读者-写者、哲学家就餐
  • 死锁的四个必要条件和预防策略

怎么学

先建立整体框架。 先理解操作系统的核心职责(管理 CPU、内存、磁盘、设备),然后逐个击破。

边学边做实验。 操作系统是实践性很强的课程。推荐做 xv6 实验——MIT 的教学操作系统,代码量小,结构清晰。

画图辅助理解。 进程状态转换、内存地址映射、磁盘调度——画出来就清楚了。

不要跳过 Linux 命令。 ps、top、strace、lsof 这些工具能让你看到操作系统的实际行为。

本模块资源

资源 类型 说明
MIT 6.S081 课程 MIT 操作系统课程,基于 xv6,有完整实验
OSTEP 教材 Operating Systems: Three Easy Pieces,免费在线教材
Berkeley CS162 课程 Berkeley 操作系统课程,有视频和作业
xv6 实践 MIT 教学操作系统,代码量约 1 万行