Operating System


Operating System

OS是管理计算机硬件与软件资源的程序,同时为用户和应用程序提供抽象接口

换句话说,OS是

  1. 资源管理者:管理CPU、内存、磁盘、网络、设备
  2. 服务提供者:给程序提供文件、进程、线程、系统调用等接口
  3. 安全保护者:隔离程序、防止错误破坏系统

核心职能

  1. 进程管理
    • 谁在用CPU,什么时候切换
    • 调度、同步、进程间通信(IPC)
  2. 内存管理
    • 虚拟内存、页表、Cache
    • 分配和回收内存
  3. 文件系统管理
    • 文件、目录、inode、page cache
    • 提供统一的文件操作接口
  4. I/O与设备管理
    • 中断、DMA
    • 控制硬件访问
  5. 系统调用接口
    • 用户态程序如何合法访问内核资源
    • 用户态 <-> 内核态切换

为什么需要操作系统

  1. 硬件复杂,难以直接操作
  2. 程序隔离,一个程序崩溃不影响其他程序
  3. 资源共享,多个程序同时运行,OS负责调度
  4. 安全与稳定,防止非法访问、保护系统完整性

OS的三大目标

  1. 管理资源
  2. 隔离程序
  3. 提供抽象

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
    • 页错误/内存访问模式
    • 锁争用/假共享
    • 系统调用开销