为什么'kernal_thread()`没有列为Linux的系统调用?

为什么'kernal_thread()`没有列为Linux的系统调用?,linux,linux-kernel,system-calls,Linux,Linux Kernel,System Calls,我想知道为什么内核线程()没有列为系统调用 Linux应用程序程序员从来都不需要创建内核线程吗 Linux应用程序程序员是否可以访问该函数 谢谢。应用程序程序员通常需要使用该列表中的克隆系统调用创建“内核调度线程”,也称为“操作系统线程”或“本机线程” 然而,“内核线程”只是内核用于运行内核代码以实现其内部目的的线程。它们仅由内核上下文代码创建和使用。每个软件都负责创建和管理自己的线程以完成自己的工作,包括用户空间应用程序和内核本身 kernel\u thread是中定义的内核函数,它不向用户空

我想知道为什么
内核线程()
没有列为系统调用

Linux应用程序程序员从来都不需要创建内核线程吗

Linux应用程序程序员是否可以访问该函数


谢谢。

应用程序程序员通常需要使用该列表中的克隆系统调用创建“内核调度线程”,也称为“操作系统线程”或“本机线程”

然而,“内核线程”只是内核用于运行内核代码以实现其内部目的的线程。它们仅由内核上下文代码创建和使用。每个软件都负责创建和管理自己的线程以完成自己的工作,包括用户空间应用程序和内核本身


kernel\u thread
是中定义的内核函数,它不向用户空间公开。它是内部内核API的一部分,而不是系统调用

应用程序程序员通常需要使用该列表中的
clone
syscall创建“内核调度线程”,也称为“OS线程”或“本机线程”

然而,“内核线程”只是内核用于运行内核代码以实现其内部目的的线程。它们仅由内核上下文代码创建和使用。每个软件都负责创建和管理自己的线程以完成自己的工作,包括用户空间应用程序和内核本身


kernel\u thread
是中定义的内核函数,它不向用户空间公开。它是内部内核API的一部分,而不是系统调用

正如您所熟悉的,它们是两个地址空间一个用户和内核,正常函数将在用户空间中运行,但当您使用在内核空间中实现的一些函数调用时,您不能直接使用它们,因此要访问它们,我们需要系统调用

所以现在的问题是为什么内核线程()没有列在系统调用中

(回答是“另一个家伙”) 内核程序员或常用的设备驱动程序使用kernal_thread()函数在内核空间中创建线程。因此,它们的实现是在内核空间中进行的,并且仅由内核开发人员或编程人员使用。(注意:-如果为用户空间的某些功能提供了一个接口,该接口将作为系统调用结束,因为用户没有该功能的接口,因此手册页中没有该功能的文档)


如果您想阅读有关内核空间函数的文档,请下载内核源代码并查看“Documentation”文件夹,或查看源代码中的相应函数,它们没有什么注释。

正如您所熟悉的,它们是两个地址空间,一个用户和内核,普通函数将在用户空间中运行,但当您使用在内核空间中实现的一些函数调用时,您不能直接使用它们,因此要访问它们,我们需要系统调用

所以现在的问题是为什么内核线程()没有列在系统调用中

(回答是“另一个家伙”) 内核程序员或常用的设备驱动程序使用kernal_thread()函数在内核空间中创建线程。因此,它们的实现是在内核空间中进行的,并且仅由内核开发人员或编程人员使用。(注意:-如果为用户空间的某些功能提供了一个接口,该接口将作为系统调用结束,因为用户没有该功能的接口,因此手册页中没有该功能的文档)


如果您想阅读有关内核空间函数的文档,请下载内核源代码并检查“Documentation”文件夹或检查源代码中的各个函数,它们没有什么注释。

如果您阅读手册页的第一句话,系统调用通常不会直接调用,而是通过glibc中的包装函数调用(或者其他一些库),这意味着您无法直接执行它。请尝试使用glibc提供的标准c库。@alvits您的意思是
kernel\u thread()
在glibc中吗?否。
kernel\u thread()的头文件
位于kernel-devel包中。对于应用程序,请使用
pthread.*
,这是对
clone
的系统调用的包装器。如果您阅读了该手册页的第一句话,系统调用通常不会直接调用,而是通过glibc(或者其他库)中的包装器函数调用,这意味着您无法直接执行它。请尝试使用glibc提供的标准c库。@alvits您的意思是
kernel\u-thread()
在glibc中吗?否。
kernel\u-thread()
的头文件在kernel-devel包中。对于应用程序,请使用
pthread.*
,它是系统调用
clone
的包装器。