Operating System
Operating System
OS是管理计算机硬件与软件资源的程序,同时为用户和应用程序提供抽象接口
换句话说,OS是
- 资源管理者:管理CPU、内存、磁盘、网络、设备
- 服务提供者:给程序提供文件、进程、线程、系统调用等接口
- 安全保护者:隔离程序、防止错误破坏系统
核心职能
- 进程管理
- 谁在用CPU,什么时候切换
- 调度、同步、进程间通信(IPC)
- 内存管理
- 虚拟内存、页表、Cache
- 分配和回收内存
- 文件系统管理
- 文件、目录、inode、page cache
- 提供统一的文件操作接口
- I/O与设备管理
- 中断、DMA
- 控制硬件访问
- 系统调用接口
- 用户态程序如何合法访问内核资源
- 用户态 <-> 内核态切换
为什么需要操作系统
- 硬件复杂,难以直接操作
- 程序隔离,一个程序崩溃不影响其他程序
- 资源共享,多个程序同时运行,OS负责调度
- 安全与稳定,防止非法访问、保护系统完整性
OS的三大目标
- 管理资源
- 隔离程序
- 提供抽象
OS提供了哪些抽象
| 硬件 | OS抽象 |
|---|---|
| CPU | 进程/线程 |
| 内存 | 虚拟地址空间 |
| 磁盘 | 文件 |
| 网卡 | Socket |
| GPU | 驱动 + API |
OS把难用的硬件变成好用的接口
框架
进程 / 线程
│
├── 调度
├── 同步
├── IPC
│
内存管理
│
├── 虚拟内存
├── 页表 / TLB
├── Cache
│
文件系统
│
├── inode
├── page cache
│
I/O 与设备
│
├── 中断
├── DMA
│
系统调用 & 内核态
大纲
并发模型
- 进程概念:资源容器、隔离、创建/销毁
- 线程概念:执行单元、共享资源、独立栈
- 调度:时间片、抢占、上下文切换成本
- 同步:锁、原子操作、条件变量
- IPC:管道、共享内存、消息队列、socket
- 轻量线程vs内核线程
- TLS
- 伪共享
内存管理
- 虚拟内存&地址空间
- 页表&TLB
- 栈/堆/全局/代码区
- Cache层次与访问局部性
- 内存分配策略:slab/buddy/malloc/pool
- false sharing
- 内存对齐
- 访问模式
文件系统
- 文件与目录结构
- inode与目录项
- page cache、延迟写
- 常见文件系统特性(ext4/NTFS/F2FS)
I/O与设备
- 中断与中断向量
- DMA概念与流程
- DMA与GPU资源上传
- 阻塞vs非阻塞I/O
- CPU与设备的数据搬运
- 异步I/O模型(epoll/aio/IOCP)
系统调用&内核态
- 用户态vs内核态
- 系统调用机制(trap/syscall)
- 常见系统调用举例
- 系统调用成本分析(模式切换、Cache/TLB冲刷)
- 高频syscall优化策略
- 轮询vs内核事件
性能陷阱
- Cache miss/TLB miss
- 页错误/内存访问模式
- 锁争用/假共享
- 系统调用开销