【进程】PID进程ID
发布网友
发布时间:2024-09-05 10:31
我来回答
共1个回答
热心网友
时间:2024-10-03 08:54
进程ID,简称为PID,是Linux系统中为每个进程分配的唯一标识,由task_struct中的pid字段表示。对于无线程进程,pid即为其PID,与tgid相同。内核中的pid是每个task_struct的全局唯一线程ID,而tgid则代表进程中的主线程ID,线程的tgid与其所属线程组的主线程pid一致。
在Linux中,尽管PID实际上是LWP tid(Linux内核中的进程ID),但tgid才是操作系统意义上的PID。例如,进程38950通过fork产生了进程59822,此时59822的PID即为其tgid。
线程在Linux中被视为特殊进程,每个线程有自己的task_struct和PID,但它们共享内存资源。内核通过task_struct的tgid字段识别线程所属进程,每个进程是线程组,所有线程的tgid相同。
引入进程组的目的是解决多用户系统中资源公平调度的问题。通过将进程划分为进程组,如进程组A和进程组B,系统可以根据组进行调度,确保每个用户获得相对平等的CPU时间。Linux内核中的task_group结构用于表示进程组。
会话是登录后一系列相关进程的集合,每个shell窗口对应一个会话,其组长进程(如bash)的PID即为会话ID。会话可以有前台和后台作业,控制终端与会话领头进程(通常bash)连接,用于管理会话中的作业。
PID的申请涉及到pid结构体的使用,具体流程涉及从该结构体中获取PID。深入理解进程组、会话和控制终端的关系有助于理解守护进程的创建。
热心网友
时间:2024-10-03 08:53
进程ID,简称为PID,是Linux系统中为每个进程分配的唯一标识,由task_struct中的pid字段表示。对于无线程进程,pid即为其PID,与tgid相同。内核中的pid是每个task_struct的全局唯一线程ID,而tgid则代表进程中的主线程ID,线程的tgid与其所属线程组的主线程pid一致。
在Linux中,尽管PID实际上是LWP tid(Linux内核中的进程ID),但tgid才是操作系统意义上的PID。例如,进程38950通过fork产生了进程59822,此时59822的PID即为其tgid。
线程在Linux中被视为特殊进程,每个线程有自己的task_struct和PID,但它们共享内存资源。内核通过task_struct的tgid字段识别线程所属进程,每个进程是线程组,所有线程的tgid相同。
引入进程组的目的是解决多用户系统中资源公平调度的问题。通过将进程划分为进程组,如进程组A和进程组B,系统可以根据组进行调度,确保每个用户获得相对平等的CPU时间。Linux内核中的task_group结构用于表示进程组。
会话是登录后一系列相关进程的集合,每个shell窗口对应一个会话,其组长进程(如bash)的PID即为会话ID。会话可以有前台和后台作业,控制终端与会话领头进程(通常bash)连接,用于管理会话中的作业。
PID的申请涉及到pid结构体的使用,具体流程涉及从该结构体中获取PID。深入理解进程组、会话和控制终端的关系有助于理解守护进程的创建。