UNIX 系统中的进程处理详解
1. UNIX 系统的多任务处理能力
UNIX 操作系统凭借一些简单却强大的概念闻名,例如标准输入输出、管道、文本过滤工具和树形文件系统等。它还是首个让用户能控制多个进程的小型计算机操作系统,这种能力被称为用户控制的多任务处理。也许你觉得多任务处理没什么大不了,毕竟在命令行末尾加上&让进程在后台运行是很常见的操作,而且你可能也了解子 shell 的概念。
2. 进程 ID 和作业编号
在 UNIX 系统中,所有进程在创建时都会被赋予一个编号,即进程 ID。当你在命令行末尾添加&让命令在后台运行时,会看到类似如下的输出:
$ alice &[1] 93这里,93 是alice进程的进程 ID,而[1]是 shell 分配的作业编号,并非操作系统分配。作业编号指的是当前在你的 shell 下运行的后台进程,而进程 ID 则涵盖了整个系统中所有用户的所有正在运行的进程。“作业” 通常指的是从你的 shell 中调用的命令行。
如果你在第一个后台作业仍在运行时启动更多后台作业,shell 会依次为它们编号,如:
$ duchess &[2] 102 $ hatter &[3] 104显然,1、2、3 比 93、102、104 更容易记忆。
当后台作业完成时,shell 打印的消息中会包含作业编号