电脑技术学习

UNIX 进程揭秘

dn001

  分配给系统管理员的许多工作之一是确保用户的程序正确运行。因为系统上存在其他并发运行的程序,所以此任务变得更加复杂。由于种种原因,这些程序可能会失败、挂起或行为异常。在构建更可靠的系统时,了解 Unix® 环境如何创建、管理和销毁这些作业是至关重要的步骤。

  开发人员还必须积极了解内核如何管理进程,因为与系统的其他部分和睦相处的应用程序会占用更少的资源,并且不会频繁地给系统管理员带来麻烦。由于导致僵死进程(将在稍后对其进行描述)而频繁重新启动的应用程序明显是不可取的。对控制进程的 UNIX 系统调用的了解可以使开发人员编写能够在后台自动运行的软件,而不是需要一个始终保持在用户屏幕上的终端会话。

  管理这些程序的基本构件就是进程。进程是赋予某个由操作系统执行的程序的名称。如果您熟悉 ps 命令,则您应该熟悉进程清单,如清单 1 所示。

  清单 1. ps 命令的输出

sunbox#ps -ef
   UID  PID PPID  C  STIME TTY     TIME CMD
  root   0   0  0 20:15:23 ?      0:14 sched
  root   1   0  0 20:15:24 ?      0:00 /sbin/init
  root   2   0  0 20:15:24 ?      0:00 pageout
  root   3   0  0 20:15:24 ?      0:00 fsflush
 daemon  240   1  0 20:16:37 ?      0:00 /usr/lib/nfs/statd
...

  前三列对这里的讨论非常重要。第一列列出用于运行该进程的用户身份,第二列列出进程的 ID,第三列列出该进程的父进程 ID。最后一列是进程的描述,通常是所运行的二进制文件的名称。每个进程都被分配一个标识符,称为进程标识符(Process IdentifIEr,PID)。进程还有父进程,在大多数情况下就是启动它的进程的 PID。

标签: