Linux 作为一个多任务操作系统,其核心功能之一就是进程调度。调度器的任务是决定哪个进程应该获得 CPU 时间片,以及运行多久。

CFS 调度器 (Completely Fair Scheduler)

自 Linux 2.6.23 以来,默认的调度器是 CFS(完全公平调度器)。CFS 的目标是为所有任务提供公平的 CPU 时间。

虚拟运行时间 (vruntime)

CFS 不再使用传统的时间片概念,而是引入了虚拟运行时间。每个进程维护一个 vruntime 变量,记录了该进程已经运行的虚拟时间。CFS 总是选择 vruntime 最小的进程来运行。

进程的优先级通过权重(Weight)来体现。高优先级进程的虚拟时间增长得慢,从而获得更多的实际 CPU 时间。

进程状态

  • TASK_RUNNING: 进程正在运行或在就绪队列中等待运行。
  • TASK_INTERRUPTIBLE: 进程正在睡眠(阻塞),等待某些条件(如 I/O),可以被信号唤醒。
  • TASK_UNINTERRUPTIBLE: 深度睡眠,不可被信号唤醒(通常在等待磁盘 I/O)。
  • TASK_ZOMBIE: 僵尸进程,进程已结束但父进程尚未回收其资源。

上下文切换

上下文切换是指 CPU 从一个进程切换到另一个进程的过程,包括保存当前进程的状态(寄存器、栈指针等)和恢复下一个进程的状态。过于频繁的上下文切换会降低系统性能。

点赞(30) 打赏

评论列表 共有 4 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部