深入理解 Linux 进程与线程的用户空间和内核空间组织及栈查看方法
1. 用户空间组织
在 Linux 系统中,用户空间的组织与进程和线程密切相关。以 countem.sh Bash 脚本的运行情况为例,我们来详细探讨用户空间的结构。
每个进程至少有一个执行线程,即 main() 线程。例如,有三个进程 P1 、 P2 和 Pn ,分别包含 1、3 和 2 个线程(包括 main() 线程),在 countem.sh 脚本的示例运行中, Pn 的 n 值为 362。需要注意的是,PID 为 2 的“进程”通常是单线程的内核线程 kthreadd 。
用户模式下的进程由多个段(技术上称为映射)组成,主要包括:
- 文本段(Text) :包含代码,权限为 r-x 。
- 数据段(Data segments) :权限为 rw- ,由三个不同的映射组成,分别是已初始化数据段、未初始化数据段(或 bss)和“向上增长”的堆。
- 库映射(Library mappings) :用于进程动态链接的每个共享库的文本和数据。
- 向下增长的栈(Downward-growin
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



