11.1 什么是进程
UNIX标准(特别是IEEE Std 1003.1,2004年版)把进程定义为:“一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源。”我们将在第12章介绍线程。目前,可以把进程看作正在运行的程序。
像Linux这样的多任务操作系统可以同时运行多个程序。每个运行着的程序实例就构成一个进程。在X视窗系统(通常简称为X)等视窗化系统中这一特点尤为明显。如同微软的Windows系统,X视窗系统提供了一个图形化的用户界面,它允许同时运行多个应用程序,每个应用程序可以在一个或多个窗口中显示。
作为多用户系统,Linux允许许多用户同时访问系统。每个用户可以同时运行许多个程序,甚至同时运行同一个程序的许多个实例。系统本身也运行着一些管理系统资源和控制用户访问的程序。
正如我们在第4章看到的,正在运行的程序或进程由程序代码、数据、变量(占用着系统内存)、打开的文件(文件描述符)和环境组成。一般来说,Linux系统会在进程之间共享程序代码和系统函数库,所以在任何时刻内存中都只有代码的一份副本。