linux内核原理--进程,线程

发布时间:2026/10/20 21:34:12
linux内核原理--进程,线程 进程进程组会话线程父子进程线程组孤儿进程兄弟进程兄弟线程1.核心概念逐个解释进程Process操作系统资源分配的最小单位。拥有独立的虚拟地址空间、打开文件表、信号处理等资源。进程是程序的一次执行实例。线程Thread操作系统CPU 调度的最小单位。线程依附于进程共享进程的地址空间和资源但拥有独立的栈、寄存器、程序计数器。一个进程至少包含一个线程主线程。父子进程父进程通过 fork() 创建子进程。子进程继承父进程的部分属性环境变量、文件描述符、信号处理等但拥有独立的 PID 和地址空间写时复制 COW。子进程终止时父进程应通过 wait() 回收其资源否则子进程变为僵尸进程。兄弟进程由同一父进程创建的多个子进程互为兄弟进程。兄弟进程之间彼此独立无直接层级关联不共享地址空间通信需通过 IPC。孤儿进程父进程先于子进程终止子进程失去父进程。操作系统会将孤儿进程的 PPID 重新设置为 init 进程PID 1或 systemd 收养。孤儿进程不是异常状态被收养后可正常执行直至终止。进程组Process Group一个或多个进程的集合用于批量信号管理。每个进程组有一个进程组 IDPGID通常等于组长进程的 PID。同一管道线如 ls | grep | wc中的命令通常属于同一进程组。向进程组发送信号如 kill -9 -pgid可同时影响组内所有进程。会话Session一个或多个进程组的集合用于终端控制。会话首进程Session Leader通常是登录 Shell。一个会话可包含一个前台进程组和多个后台进程组。终端断开会向会话首进程发送 SIGHUP导致会话内进程默认终止。线程组Thread GroupLinux 特有的概念。同一进程内的所有线程属于同一个线程组。线程组 IDTGID等于主线程的 PID。用户态调用 getpid() 实际返回的是 TGID。线程组内的线程通过 clone() 创建共享 mm_struct地址空间、files_struct文件表等。kill -9 pid 会终止整个线程组即整个进程。兄弟线程同一进程内的多个线程互为兄弟线程。它们共享进程的地址空间、全局变量、堆、文件描述符等是最紧密的协作关系。通信成本极低直接内存读写但需通过锁、原子操作等机制同步。2.关系总览┌─────────────────────────────────────────────────────────────┐ │ 操作系统 │ │ ┌───────────────────────────────────────────────────────┐ │ │ │ 会话Session │ │ │ │ ┌─────────────────┐ ┌─────────────────────────┐ │ │ │ │ │ 进程组1│ │ 进程组2│ │ │ │ │ │ ┌───────────┐ │ │ ┌───────────┐ │ │ │ │ │ │ │ 进程 A │ │ │ │ 进程 B │ │ │ │ │ │ │ │ ┌───────┐ │ │ │ │ ┌───────┐ │ │ │ │ │ │ │ │ │ 线程1│ │ │ │ │ │ 线程1│ │ │ │ │ │ │ │ │ ├───────┤ │ │ │ │ └───────┘ │ │ │ │ │ │ │ │ │ 线程2│ │ │ │ └───────────┘ │ │ │ │ │ │ │ └───────┘ │ │ └─────────────────────────┘ │ │ │ │ │ └───────────┘ │ │ │ │ │ └─────────────────┘ │ │ │ └───────────────────────────────────────────────────────┘ │ │ │ │ 进程 A 和进程 B无亲缘关系通过 IPC 通信 │ │ 进程 A 的线程1/2兄弟线程共享地址空间 │ └─────────────────────────────────────────────────────────────┘3.层级关系与归属层级组成单位关键标识作用会话一个或多个进程组SID会话 ID终端控制、作业管理进程组一个或多个进程PGID进程组 ID信号批量分发进程一个或多个线程PID进程 ID资源分配、地址空间隔离线程组一个或多个线程TGID 主线程 PIDLinux 内核对线程的归类线程执行单元TID线程 IDCPU 调度4.Linux 中的 ID 辨析在 Linux 中这些概念通过不同的 ID 区分PID进程/线程的唯一标识。对主线程而言PID TGID对子线程而言PID 是其独立 TID。TGID线程组 IDgetpid() 的返回值。同一进程内所有线程 TGID 相同。PGID进程组 IDgetpgrp() 的返回值。SID会话 IDgetsid() 的返回值。PPID父进程 ID。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询