Skip to content
进阶

一句话答案

用户态运行应用程序(受限),内核态运行 OS(特权),系统调用/异常/中断触发切换,切换有保存恢复寄存器开销。

核心要点

切换场景: 系统调用(read/write) / 异常(缺页) / 中断(IO完成)

开销: 保存/恢复寄存器 + 切换栈 + TLB/Cache 影响

减少切换: mmap / sendfile / 批量系统调用 / io_uring

追问与易错

追问方向:

  • 系统调用开销在哪?
  • 中断和系统调用区别?
  • 怎么减少态切换?

易错点:

  • ❌ 所有操作都需要切换——用户态计算不需要
  • ❌ 内核态比用户态快——不是更快是有更高权限

💡 记忆锚点

用户态像普通员工只能在工位干活(受限),内核态像管理员能进机房操作一切(特权)。要用管理员权限就得刷卡(系统调用trap),刷卡要时间(保存/恢复寄存器+切栈)。减少刷卡次数的办法:mmap直接映射不走read、sendfile让内核自己搬不来回切、io_uring批量提交系统调用。