点击访问 Linux 命令大全 >>
本章节将简单的介绍操作系统中进程基础知识。
进程一个比较正式的说法是:进程是操作系统的一种抽象概念,用来表示正在运行的程序。通俗的来说,就是在 Windows 系统中打开的一个程序,例如:QQ、微信、电子邮箱软件均是一个进程。
进程的概念主要有两点:
第一:进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。
第二:进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。
Linux 是一种多用户、多进程的操作系统,在 Linux 内核中,维护着一张表,这张表记录了当前系统中运行的所有进程的各种信息。Linux 内核会自动完成对进程的控制和调度,内核中一些重要的进程信息包括:
进程的内存地址
进程当前状态信息
进程正在使用的资源
进程的优先级信息
进程的属主信息
Linux 提供了让用户可以对进程进行监视和控制的工具。这方面,Linux 对系统进程和用户进行一视同仁,使用户能够用一套工具控制这两种进程。
下面将讨论进程几个常用的参数,如:PID、PPID、UID和EUID等。
PID是系统为每个进程分配的一个系统唯一标识符,相当于你的身份证号码。用ID确定进程的方法是非常有好处的,对于计算机而言,认识数字永远比认识字符串方便得多。
Linux不仅自己使用PID来确定进程,还要求用户在管理进程时也提供相应的PID。几乎所有的进程管理工具都接受PID号,而不是进程名称。
在 Linux 中,所有的进程都必须由另一个进程创建,除了在系统引导时,由内核自主创建的那几个进程。当一个进程被创建时,创建它的那个进程被称作父进程,而这个进程则相应地被称作子进程。子进程使用 PPID 指定谁是当前进程的父进程(PPID等于父进程的PID)。
Linux 中只有进程的创建者和root用户才有权利对该进程进行操作。于是,记录一个进程的创建者就非常必要了。进程的UID就是其创建者的用户ID号,用于标识进程的属主。
Linux 还为进程保存了一个“有效用户ID号”,被称作EUID。这个特殊的UID号用来确定进程对某些资源和文件的访问权限。在绝大部分情况下,进程的UID和EUID是一样的。
进程的 GID 是其创建者所属组的 ID 号。当进程创建一个新文件的时候,这个文件将采用该进程的 GID。
进程同样拥有一个 EGID 号,即有效的组 ID 号,我们可以通过 setgid 程序设置。