PID 是什么意思

fanly 问答 2019-03-26 14:19:23 阅读(...)

在计算机领域,进程标识符(process identifier,又略称为进程 ID,或者 PID)是大多数操作系统的内核用于唯一标识进程的一个数值。这一数值可以作为许多函数调用的参数,以使调整进程优先级、杀死进程之类的进程控制行为成为可能。

PID

类 UNIX 系统

在类 UNIX 操作系统中,新进程都衍自系统调用 fork()。fork()调用会将子进程的 PID 返回给父进程,使其可以之指代子进程,从而在需要时以之为函数参数。例如,若以子进程 PID 为参数调用 waitpid(),可使父进程以休眠状态等待子进程结束;若以之为参数调用 kill(),便可结束对应子进程。

在各 PID 中,较为特别的是 0 号 PID 和 1 号 PID。PID 为 0 者为交换进程(英语:swapper),属于内核进程,负责分页任务;PID 为 1 者则常为 init 进程,主要负责启动与关闭系统。值得一提的是,1 号 PID 本来并非是特意为 init 进程预留的,而 init 进程之所以拥有这一 PID,则是因为 init 即是内核创建的第一个进程。不过,现今的许多 UNIX/类 UNIX 系统内核也有以进程形式存在的其他组成部分,而在这种情况下,1 号 PID 则仍为 init 进程保有,以与之前系统保持一致。

PID 的分配机制则因系统而异,一般从 0 开始,然后顺序分配,直到达到一个最大值(亦因系统而异),而后又从 300 开始重新分配;在 Mac OS X 和 HP-UX 下,则是由 100 开始重分配。在分配 PID 时,若遇到已分配的 PID,则直接跳过,继续递增查找下一个可分配 PID。

Microsoft Windows

Microsoft Windows 系列操作系统提供了一系列 API,以使开发者可以获取相关 PID,如用于获取当前进程 PIDGetCurrentProcessId()、返回其他进程 PID 的 GetProcessId()。在操作系统内部,进程 ID 与线程 ID 在同一个名字空间中,因此二者不会重合。

有些长时间运行的进程(如 MySQL 的守护进程)会将自己的 PID 写入一个文件,以使其他进程可寻获之。

本文链接:https://www.leiue.com/what-is-process-id

除非注明,否则均为泪雪网原创文章,转载必须以链接形式标明本文链接

收藏 1个人收藏 头像
走进科技生活方式

发表评论

登录后参与评论