探讨 Linux CPU 的上下文切换

💡 原文中文,约3300字,阅读约需8分钟。
📝

内容提要

Linux是一个强大的多任务操作系统,支持同时运行的任务数量远远大于CPU的数量。上下文切换有三种类型:进程、线程和中断。过多的上下文切换会降低系统性能。

🎯

关键要点

  • Linux是一个强大的多任务操作系统,支持同时运行的任务数量远大于CPU数量。
  • 任务并非真正同时进行,而是通过CPU轮流分配给任务,造成多任务同时运行的错觉。
  • CPU上下文是指CPU寄存器和程序计数器的状态,是运行任务前必不可少的环境。
  • CPU上下文切换是保存上一个任务的上下文并加载新任务的上下文的过程。
  • CPU上下文切换有三种类型:进程上下文切换、线程上下文切换和中断上下文切换。
  • 进程上下文切换涉及内核空间和用户空间的切换,通常在系统调用时发生。
  • 系统调用过程中会有两次CPU上下文切换,但不涉及进程切换。
  • 进程上下文切换比系统调用更复杂,需要保存和加载进程的虚拟内存和内核状态。
  • 线程上下文切换比进程上下文切换消耗的资源少,因为线程共享虚拟内存。
  • 中断上下文切换是为了快速响应事件,保存进程状态以便恢复。
  • 过多的上下文切换会消耗CPU时间,导致系统性能下降。
➡️

继续阅读