小墨の博客

梦想需要付诸行动,否则只能是梦

Linux 中 PID 的大小及范围

在 Linux 系统中,每个进程都有一个唯一的进程号(PID),用于标识系统中的某个进程。PID 的大小和范围受系统架构和内核配置的限制。


默认 PID 范围

在 32 位系统中,默认的最大 PID 值为 32768。 在 64 位系统中,默认的最大 PID 值可以达到 2^22(约 4194304)。

这些默认值可以通过文件 /proc/sys/kernel/pid_max 查看和修改。例如:

cat /proc/sys/kernel/pid_max

修改 PID 最大值

可以通过以下命令调整 PID 的最大值,但不能超过系统允许的上限:

echo 4194304 > /proc/sys/kernel/pid_max

此命令将最大 PID 值设置为 4194304(64 位系统的上限)。如果尝试设置超过此值的数字,系统会拒绝更改。

内核行为

当 PID 达到最大值时,内核会从 300 开始重新分配,而不是从 1 开始。这是为了避免与系统进程(如 init 进程,PID 为 1)冲突。

内核源码中的限制

在 Linux 内核源码中,PID 的默认值和最大值由以下定义控制:

PID_MAX_DEFAULT:默认最大值,32 位系统为 32768。

PID_MAX_LIMIT:最大允许值,64 位系统为 4194304。

源码路径为 include/linux/threads.h,相关代码如下:

#define PID_MAX_DEFAULT (CONFIG_BASE_SMALL ? 0x1000 : 0x8000)
#define PID_MAX_LIMIT (CONFIG_BASE_SMALL ? PAGE_SIZE * 8 : \
(sizeof(long) > 4 ? 4 * 1024 * 1024 : PID_MAX_DEFAULT))

实际应用

在实际使用中,PID 的范围可以根据需求调整。例如,高并发服务器可能需要更大的 PID 范围以支持更多的进程和线程。

通过命令 ulimit -u 可以查看当前用户允许的最大进程数,这也间接影响了 PID 的分配。


张小弟之家

本文链接:
文章标题:

本站文章除注明转载/出处外,均为原创,若要转载请务必注明出处。转载后请将转载链接通过邮件告知我站,谢谢合作。本站邮箱:admin@only4.work

尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。

    发表评论:

    搜索
    本文二维码
    标签列表
    站点信息
    • 文章总数:561
    • 页面总数:19
    • 分类总数:96
    • 标签总数:215
    • 评论总数:71
    • 浏览总数:422909

    | | |
    | |  Z-Blog PHP