带您进入内核开发的大门 | 内核中的线程

2020-07-08 00:00:00 创建 函数 线程 内核 调度

内核线程是直接由内核本身启动的进程。内核线程实际上是将内核函数委托给独立的进程,它与内核中的其他进程”并行”执行。内核线程经常被称之为内核守护进程。内核线程是被调度的实体,它被加入到某种数据结构中,调度程序根据实际情况进行线程的调度。 内核线程与用户态线程的作用类似,通常用于执行某些周期性的计算任务,或者在后台执行需要大量计算的任务。

本文主要介绍一下内核线程操作相关的API的使用,以及内核线程的实现基本原理,更深入的内容在后续文章中介绍。

内核线程操作函数

内核线程操作涉及的函数(API)主要是创建、调度和停止等函数。操作起来也是比较简单的。下面分别介绍一下这些接口的定义。 创建线程 创建线程的函数为kthread_create,如下是函数的原型,该函数实际上是函数kthread_create_on_node的一个宏定义。后者则是在某个CPU上创建一个线程。该函数的前两个参数分别是线程主函数指针和函数的参数,而后面的参数通过变参数的方式为线程命名。

#define kthread_create(threadfn, data, namefmt, arg...) \
       kthread_create_on_node(threadfn, data, NUMA_NO_NODE, namefmt, ##arg)

相关文章