温习 PID (Process identifier) 的概念

查看原文

大多数操作系统都有 PID 这个概念,用于给一个进程到唯一标识位,我们用它操作进程,例如发送信号,杀掉,调优先级等。

在 Unix 系统中,有 2 个 PID 是特殊的:0, 1

  • PID=0: 也叫 swapper 或 sched, 翻译大概叫交换进程。它专门用于处理分页,其实更多是内核的一部分。
  • PID=1: 通常是 init 进程,用于开关机和托管孤儿进程。历史上倒是没有标准说 1 号一定是 init,只是 kernel 最开始搞出来的进程就自然而然分配到了 1。
  • PID=N: 递增到上限后,不同的系统从诸如 100, 300 之类的低端数字重新开始递增,寻找可用的 PID 分配给新开出来的进程。有人认为太简单的 PID 分配算法容易造成系统漏洞。

当前 PID 在进程中可通过 getpid() 获取,在 Shell 中可通过 $$ 获取。在 Linux 中,上限 N 可在 /proc/sys/kernel/pid_max 中得到。