参考文献

  • 趣谈Linux操作系统

进程

  • 在 Linux 里,要创建一个新的进程,需要一个老的进程调用 fork 来实现,其中老的进程叫作父进程(Parent Process),新的进程叫作子进程(Child Process)

进程ID

  • Linux采用延迟重用的算法来进行PID的分配,往简单了来说,原则就是
    • 位图记录进程 ID 的分配情况( 0 为可用,1 为已占用).
    • 将上次分配的进程 ID 记录到 last_pid 中,分配进程 ID 时,从 last_pid+1 开始找起,从位图中寻找可用的 ID .
    • 如果找到位图集合的最后一位仍不可用,则回滚到位图集合的起始位置,从头开始找.既然是位图记录进程 ID 的分配情况,那么位图的大小就必须要考虑周全.位图的大小直接决定了系统允许同时存在的进程的最大个数,这个最大个数在系统中称为 pid_max .回绕时并不是从 0 开始找起,而是从 300 开始找起.
1
2
3
4
# cat /proc/sys/kernel/pid_max
40960
# sysctl kernel.pid_max
kernel.pid_max = 40960

进程状态的切换

常用命令

top

ps

pgrep

kill

pkill