linux - 进程控制 block ,Linux 中的进程描述符和 task_struct?

标签 linux process linux-kernel

我无法理解 Linux 中进程控制 block 和进程描述符之间的区别?

我看到这两种结构都被称为 task_struct,这些术语似乎可以互换使用 - 两者之间有什么区别?

非常感谢您的帮助!

最佳答案

这些术语(“进程控制 block ”或“进程描述符”)在 Linux 内核开发中都不被视为“艺术术语”。当然,没有正式的 Linux 内核词汇表,因此人们可以随意命名对他们有意义的东西。

相反,task_struct 是一种特定的 C 结构,Linux 内核使用它来维护有关任务 的状态。 Linux 中的一个任务大致对应一个线程。

每个用户进程至少有一个线程,因此每个进程映射到一个或多个task_structs。更具体地说,进程是碰巧共享某些资源的一个或多个任务——文件描述符、地址空间/内存映射、信号处理、进程和进程组 ID 等。进程中的每个线程都有自己的特定版本其他资源:寄存器/执行上下文、调度参数等。

一个进程只有一个线程是很常见的。在这种情况下,您可以考虑用单个 task_struct 来表示一个进程。

关于linux - 进程控制 block ,Linux 中的进程描述符和 task_struct?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47832778/

相关文章:

c++ - 如何在程序中间等待来自串口的输入

linux - 从虚拟 Linux 网络设备驱动程序发送的 RX 数据包被丢弃

linux - udev规则匹配雷凌wifi卡加载rt2800usb

linux - 如何在 linux 的 discord.py 中创建重启命令?即使它需要其他文件,如 shell 之类的

javascript - WebSocket 客户端无法通过企业代理连接到云服务器,除了网络浏览器! (超时)

Linux (Bash) - 使用 Acrobat Reader 中带有可编辑字段的表单创建 PDF

python - 如何在 Linux 中重定向屏幕后台进程的所有输出?

java - 如何从 Java 程序中运行 .jar 文件?

c - 如何从 C 程序调用可执行文件(使用 winapi)?

linux - printk() 打印到哪里?