我无法理解Linux中的进程控制块和进程描述符之间的区别?
我已经看到这两种结构都被称为task_struct
,这些术语似乎可以互换使用 - 两者之间有什么区别?
非常感谢你的帮助!
答案 0 :(得分:0)
这些术语(" Process Control Block"或" Process Descriptor")均未被视为"艺术术语"在Linux内核开发中。当然,没有正式的Linux内核词汇表,所以人们可以随意调用对他们有意义的东西。
然而,相比之下,task_struct
是一个特定的C结构,Linux内核使用它来维护任务的状态。 Linux中的任务大致对应于一个线程。
每个用户进程至少有一个线程,因此每个进程都映射到一个或多个task_structs
。更具体地说,进程是碰巧共享某些资源的一个或多个任务 - 文件描述符,地址空间/内存映射,信号处理,进程和进程组ID等。进程中的每个线程都有自己的特定版本其他资源:寄存器/执行上下文,调度参数等。
一个进程只有一个线程是很常见的。在这种情况下,您可以将流程视为由单个task_struct
表示。