gpt4 book ai didi

Linux 用户空间线程、内核线程、轻量级进程

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:34:29 25 4
gpt4 key购买 nike

我对所有这些实体以及它们在 Linux 中的互连方式感到有些困惑。 “Unix internals”一书指出,lightweight process (LWP) 是内核支持的用户线程,内核看不到进程内部的线程。 Linux 仍然如此吗?

据我了解,用户空间线程在进程内部调度,通过更高级别的抽象作为 pthread 库,无需内核干预。我说得对吗?

最佳答案

在 Linux 上的 pthreads 中,线程调度由内核处理。

在 Linux 中,线程或进程是通过 clone() 系统调用创建的(fork() 是 clone 的特例)。根据传递给克隆的选项,新创建的进程将更轻或更重(即具有单独的内存空间和一组单独的文件描述符等)。 pthread_create() 使用 clone(),分离量最小。

也可以根本不使用 native 线程,而是使用线程的完全用户空间实现,使用 setjmp()longjmp()。例如,这可用于实现一些解释性语言。但是,我不知道实际实现自己的用户空间调度程序的程序或库的具体示例。

还有一件事:“内核线程”通常用于指定在内核空间中运行的线程,即它是内核本身的一部分。在 ps 中,这样的线程是可识别的,因为它们被方括号括起来,如 [kthreadd]

关于Linux 用户空间线程、内核线程、轻量级进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39818104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com