操作系统
进程管理、内存管理、文件系统 — 计算机的资源管理器
知识结构
学习路径
操作系统(Operating System)是计算机硬件和用户软件之间的"大管家"——它管理CPU、内存、设备,让你能同时打开十几个应用而不打架
系统调用(System Call)是用户程序请求操作系统服务的"正式通道"——你写的程序不能直接碰硬件,必须通过系统调用请内核代劳
线程(Thread)是进程内的"轻量级执行流"——同一进程的多个线程共享内存空间,可以并行处理不同任务,就像厨房里多个厨师共用同一套厨具做不同的菜
上下文切换(Context Switch)是操作系统暂停当前进程、恢复另一个进程执行的过程——它让多任务成为可能,但也是不容忽视的性能开销
竞争条件(Race Condition)是多个线程同时访问共享数据时,执行顺序影响结果的"竞速"问题——是并发编程中最常见也最难调试的 Bug 来源
互斥锁(Mutex)是"一把钥匙开一把锁",信号量(Semaphore)是"限流栏杆"——它们是操作系统解决并发同步问题的两大经典工具
生产者-消费者、读者-写者、哲学家就餐——这三个经典问题是并发同步的"面试题",掌握它们就掌握了 Mutex、信号量和条件变量的实战用法
死锁(Deadlock)是两个或多个线程互相等待对方释放资源,导致所有线程都无法继续执行的"僵局"——就像两个人面对面让路,你往左他往右,谁也过不去
每个程序都以为自己独占全部内存——这是操作系统的"障眼法",通过逻辑地址(虚拟地址)和物理地址的分离,让每个程序拥有独立的地址空间
分页(Paging)是将内存划分为固定大小的"页"(Page/Frame),通过页表实现虚拟地址到物理地址的灵活映射——是现代操作系统内存管理的基石
虚拟内存(Virtual Memory)让程序用比物理内存更大的地址空间——不常用的数据放在磁盘上,需要时再换进来,就像大学宿舍放不下的行李寄存到仓库
TLB(Translation Lookaside Buffer)是 CPU 内部的高速缓存,缓存最近使用的页表项——没有它,每次内存访问都要查 4 次页表,性能直接崩盘
文件系统(File System)是操作系统中管理持久数据的模块——它把磁盘的原始扇区组织成文件和目录,让应用程序不用关心数据到底存在磁盘的哪个柱面
目录(Directory)是文件系统中组织文件的"树形索引"——它把文件名映射到 inode,而文件分配策略决定了磁盘块如何分配给文件
设备驱动(Device Driver)是操作系统与硬件设备之间的"翻译官"——每种硬件设备都有自己独特的通信协议,而驱动程序把这些差异封装成统一的接口
中断(Interrupt)是硬件通知 CPU 的"紧急信号"——键盘被按下了、网卡收到数据了、磁盘读完了,都通过中断通知 CPU 来处理
DMA(Direct Memory Access)让硬件设备可以直接读写内存,不需要 CPU 参与每字节的数据搬运——是现代高速 I/O(网卡、磁盘、GPU)性能的基石