Appearance
进程资源对象详解 —— task_struct 挂着的每一样,逐篇展开
这是 ../task-struct.md 的下钻子目录。父篇从"内核视角"总览了一个进程 = 一个
task_struct+ 它用指针挂出去的一组资源对象;但每一样资源对象本身都值得单独讲透——它的内核结构长什么样、怎么被共享、怎么观测、有哪些坑。本子目录一样一篇。
先读父篇 ../task-struct.md 建立全局观(尤其那张"完整共享规则总表"),再按需下钻到这里的某一篇。
子纲:这些资源对象各是什么
| 分类 | 资源对象 | 内核结构 | 本目录文档 | 一句话 |
|---|---|---|---|---|
| ★ 私有字段 | task_struct 本体 | 各私有字段 | task-private.md | pid/tgid/comm、进程树、状态机(R/S/D/T/Z+TASK_KILLABLE)、五层调度参数、thread_struct(寄存器+内核栈)、统计计数、四套组织结构的全套详解 |
| ★ 五大数据对象 | 地址空间 | mm_struct | mm-struct.md | VMA 集合+页表根+段边界;mm_users/mm_count 两个引用计数;线程共享/fork 复制(CoW) |
| 打开文件表 | files_struct | files-struct.md | fd→file→inode 三层; files_struct 内部结构+fdtable 动态扩容; struct file 完整字段表(f_count/f_pos/f_op/private_data); dup/fork/线程/SCM_RIGHTS 四种共享语义; close-on-exec 原子性; fd 分配算法与泄漏检测 | |
| 文件系统上下文 | fs_struct | fs-struct.md | pwd(当前目录 dentry)、root(chroot/pivot_root 隔离)、umask(新建文件权限掩码);多线程 chdir 的坑 | |
| 信号 | sighand_struct / signal_struct | signals-kernel.md · signals-user.md · signals-alternatives.md | 内核篇:处理动作表(全进程共享)+未决集(分进程级/线程级)+每线程屏蔽字;信号送给谁、投递时机、实时信号排队 | |
| 凭证 | cred | cred.md | real/effective/saved/fs 四种 uid;setuid 变身;capabilities 拆分 root 权限 | |
| ★ 隔离/限额 | 命名空间+限额 | nsproxy + cgroup | namespaces-cgroups.md | 容器底座:8 种 namespace 隔离视图 + cgroup v1/v2 资源限额;容器怎么拼起来 |
| ★ 补充资源 | IO 上下文 + seccomp + rseq | io_context / seccomp / rseq / robust_list | io-context.md | AIO 上下文与 IO 调度优先级、seccomp BPF 系统调用过滤(Chrome/Docker 沙箱基石)、rseq 无锁 per-CPU 操作、robust_list 线程死后代理解锁 |
为什么单独拆:父篇每样只给了一段;而如
task_struct的私有字段(状态机/四套查找结构/PI 优先级继承)、fs_struct的 chroot/pivot_root 对比、io_context的 AIO 流程——展开都各有不少内容和坑。父篇负责"串起来看全局",本目录负责"逐个挖透每一类"。
与其它目录的关系
- 地址空间还牵涉 ../../elf/mmap.md(映射)、../../elf/memory-layout.md(段布局)、../../cache/tlb.md(页表翻译)——mm-struct.md 只讲"作为进程资源对象的
mm_struct本身",细节转那几篇。 - 文件系统上下文还牵涉 ../../container/overview.md(容器的 pivot_root + mount namespace)——fs-struct.md 讲 chroot/pivot_root 的隔离原理。
- 信号还牵涉 ../../crash/signals.md(哪些信号导致崩溃、如何反推 bug)——signals-kernel.md 讲内核信号机制与数据结构、signals-user.md 讲用户态编程指南、signals-alternatives.md 讲什么时候不该用信号(性能替代方案),三角互补。
- 打开文件牵涉 ../../tools/network/lsof.md(观测 fd)。
- 创建时的复制/共享统一见 ../process-creation.md §三、../thread-creation.md。
- 完整共享规则总表见 ../task-struct.md §三。