stop调度类

摘自笔者原创的《Linux原理》草稿相关段落。本文基于5.15.133版本讨论。

2.4.1 stop

2.4.1.1 stop简介

众所周知,Linux内核包含五个调度类。它们分别是stop,deadline,RT,CFS和Idle。每次调度,其调度的顺序按照排序先后进行。所以,stop调度类拥有每次调度的最高优先权。

在stop机制中,可以借用经济学中消费者和生产者的概念来比喻该机制运行中非常重要的两部分内容,即migration内核线程以及向该线程添加工作内容的各种机制。

2.4.1.2 消费者 - migration内核线程

与CFS调度类每次调度都从运行队列中挑选一个符合调度条件的任务来运行不同,stop调度类每次调度只有一个任务接受调度,它就是migration内核线程。

如果我们使用ps命令加grep命令寻找一下migration线程的存在,会发现每个CPU核心都有一个自己专属的migration线程。

stop调度类_第1张图片

上图是在一台CPU为Intel Core 11400, 运行Ubuntu 20.04操作系统的计算机上操作的结果。可以看到该计算机有12颗CPU核心,每个CPU核心都有与自己核心编号相对应的migration线程。

在分析migration线程的运行机制之前,我们先来了解一些与之密切相关的背景知识。 kernel/stop_machine.c中,Linux内核为每一刻CPU核心定义了cpu_stoppper结构体类型的变量cpu_stopper。

cpu_stopper结构体包含了该核心上运行

你可能感兴趣的:(Linux,linux)