StackSense ← 回到地图
系统基础 / OS

操作系统

操作系统是所有基础设施坐落的地板:进程怎么调度、内存怎么映射、I/O 怎么多路复用,直接决定了你写的服务的上限。这个模块的目标不是背概念,而是通过 xv6 这种能编译跑起来的教学内核把抽象拆开看一遍,之后再看 Linux 的行为就有参照物。

操作系统是所有基础设施坐落的地板:进程怎么调度、内存怎么映射、I/O 怎么多路复用,直接决定了你写的服务的上限。这个模块的目标不是背概念,而是通过 xv6 这种能编译跑起来的教学内核把抽象拆开看一遍,之后再看 Linux 的行为就有参照物。

学完后你应该能回答

进程 / 虚拟内存 / fork

  1. 进程和线程共享什么、不共享什么?fork 之后的写时复制是怎么实现的?
  2. 页表多级结构解决了什么问题?一次 TLB miss 的代价大概多大,TLB shootdown 是怎么回事?
  3. 缺页中断(page fault)的处理流程是什么?major fault 和 minor fault 的区别?
  4. 从用户态系统调用到内核态执行,中间走过哪些步骤(陷入、上下文切换、返回)?
  5. Copy-on-write 在 fork 之后的具体时机是什么?一个大内存进程 fork + exec 的代价为什么还相对小?
  6. huge page / transparent huge page 解决的是什么问题?数据库为什么常常建议关 THP?
  7. 进程状态 R / S / D / Z 各意味着什么?D 状态为什么连 SIGKILL 都杀不掉?
  8. ASLR / NX / KASLR 分别在哪一层工作?它们各防哪类攻击?

文件系统 / I/O / 多路复用

  1. mmap 和 read/write 在性能上的区别是什么?什么场景下应该用 mmap,什么场景下反而更慢?
  2. epoll 相比 select/poll 的优势在哪?边缘触发(ET)和水平触发(LT)怎么选?
  3. io_uring 和 epoll 的核心区别是什么?它解决了哪些 epoll 解决不了的问题?
  4. 零拷贝系统调用(sendfile、splice、tee、MSG_ZEROCOPY)各自适合什么场景?
  5. 写入磁盘链路 write → page cache → writeback → device queue,fsync / fdatasync 分别等到哪一步?
  6. ext4、XFS、Btrfs 在日志方式、元数据并发、snapshot 上的主要差异?数据库选型时怎么考虑?
  7. direct I/O(O_DIRECT)绕开 page cache 的代价和收益?为什么 PostgreSQL 不用它而 MySQL/InnoDB 用?

调度 / cgroup / 容器

  1. Linux 的 CFS 和 EEVDF 调度器是怎么分配 CPU 时间的?nice 值和 cgroup cpu.weight 的关系是什么?
  2. cgroup v1 和 v2 的核心差异?容器里的 CPU / 内存限制底层走的是哪些 controller?
  3. OOM killer 怎么打分(oom_score / oom_score_adj)?为什么内存最多的进程不一定先被杀?
  4. futex 和用户态 mutex 的关系?无竞争时为什么几乎不走系统调用?
  5. 容器隔离涉及哪些 namespace(pid / net / mnt / uts / ipc / user)?user namespace 为什么是安全的关键?
  6. seccomp / capabilities / AppArmor / SELinux 分别在哪一层限制进程?runc 默认拒绝哪些 syscall?
  7. CFS 的 cpu.cfs_period_us / cpu.cfs_quota_us 组合会产生什么 throttle 现象?在线上延迟敏感服务上为什么常常要关 CPU limit?

性能 & 观测

  1. 如何用 strace 定位一个卡住的进程?perf 采样和 bpftrace 追踪各适合什么问题?
  2. USE 方法(Utilization / Saturation / Errors)在排查机器卡顿时具体怎么逐项看?
  3. perf record 采样栈为什么需要 frame pointer / libunwind / DWARF 三选一?它们各自的 overhead 和准确度差在哪?
  4. eBPF 为什么被称为”内核里安全跑程序”?verifier 拦住了哪些类型的坑?
  5. Top-down 方法学四象限(Frontend / Bad Speculation / Backend / Retiring)怎么判断一个热点循环到底卡在哪?

核心概念

Lab

资料

工具