是否有一个单独的内核级线程来处理用户进程的系统调用?

Posted

技术标签:

【中文标题】是否有一个单独的内核级线程来处理用户进程的系统调用?【英文标题】:Is there a separate kernel level thread for handling system calls by user processes? 【发布时间】:2019-07-19 13:36:57 【问题描述】:

我了解用户级线程是在用户空间中实现的,而内核级线程是在内核空间中实现的。我还读到用户级线程被映射到内核级线程以实际运行用户级线程。

    “实施”究竟是什么意思?这是否意味着线程控制块分别定义在用户空间和内核空间?

    进行系统调用时会发生什么?该系统调用在哪个内核线程(或用户线程 IDK)上运行?每个内核级堆栈都有自己的堆栈吗?

    我知道线程只是进程的一部分。当我们处理内核线程时,这里对应的进程是什么?什么是内核进程,你能举个例子吗?

我也参考了其他答案,但没有得到满意的结果。

【问题讨论】:

【参考方案1】:

它depends关于操作系统的实现。

但通常,就像在 Linux 中一样,系统调用在调用它的线程上执行。每个线程都有a user stack and a kernel stack。

有关详细信息,请参阅 How does a system call work 和 How is the system call in Linux implemented?。我希望this link 可以解决您关于“内核线程”的问题。

【讨论】:

以上是关于是否有一个单独的内核级线程来处理用户进程的系统调用?的主要内容,如果未能解决你的问题,请参考以下文章

线程的实现方式之内核支持线程和用户级线程

操作系统: 用户级线程和内核级线程

为啥阻塞系统调用会阻塞用户级线程的整个过程?

线程池

线程池

Linux第二章 Linux进程与线程(下)