在这篇文章中,我们将探讨一个重要的概念——进程。让我们逐步了解什么是进程以及如何理解它。
进程的概念
那么,进程到底是什么呢?我们可以通过观察电脑的任务管理器来直观地理解:
这里展示了当前正在运行的进程,这些进程实际上就是我们当前打开的程序。
因此,我们得出结论:进程就是正在运行的程序。
但进程的本质是什么呢?我们继续探讨:
我们知道,一个可执行程序本质上是一个二进制文件。当我们运行这个程序时,它会被加载到内存中,即将程序中的指令和数据加载到内存。
此时,这个程序就变成了一个进程了吗?这就像一个人进入学校是否就变成了学生一样。一个人要成为学生,需要在学校里有学籍信息。同样的,一个程序被加载到内存中,并不意味着它就变成了进程。操作系统需要对内存中的多个进程进行管理。
那么,操作系统如何管理这些进程呢?
进程描述—PCB
为了描述进程,操作系统使用了一个称为进程控制块(PCB)的数据结构。
操作系统对进程的管理实际上是对PCB数据结构的管理。
因此,回到我们之前的讨论:
进程可以被定义为:一个正在执行的程序及其在操作系统中的状态信息的集合,这些信息通过PCB进行管理。
task_struct—PCB的一种
在Linux中,描述进程的结构体称为task_struct。task_struct是Linux内核中的一种数据结构,包含进程的信息,并被加载到RAM中。
task_struct内容分类
task_struct中包含以下内容:
可以在内核源代码中找到它,所有运行在系统中的进程都以task_struct链表的形式存在于内核中。
我们之前提到:
PCB即进程属性的集合与可执行文件的属性有一定的关系。
查看进程
那么,如何查看进程呢?
首先,我们编写一个代码和makefile:
编辑myprocess.c
保存并退出。然后编写makefile:

然后:
生成了一个可执行程序myprocess。我们运行这个程序时,操作系统会将其加载到内存,并为其创建PCB(在Linux中是task_struct),此时它就变成了进程。
我们如何查看这个进程呢?
让进程继续运行,我们再打开一个终端,然后输入命令:
就可以看到我们刚才运行的进程。简单解释一下这条命令(我们将在后续文章中详细讲解):
ps axj | head -1 && ps axj | grep myprocess 这是逻辑与连接的两条命令。首先,ps axj显示当前系统中所有进程的详细信息,但我们不想查看所有信息,因此通过管道连接head -1只显示ps axj输出的第一行(即表头信息)。然后,&&后面连接另一条指令,过滤出包含关键字myprocess的进程信息。下面的grep进程可以忽略,因为它也被过滤出来了,当然可以屏蔽掉。
只剩下我们需要查看的进程。然后,我们再打开一个终端:
再次运行该程序,然后:
我们可以看到两个进程。
我们观察一下显示的信息:
我们看到有一个PID,这是我们之前提到的进程的唯一标识符。两个PID不同,因此它们是不同的进程,尽管是同一个可执行程序生成的。
除了上述查看进程的方式,还有其他方法:
proc实际上是process的缩写。/proc目录是Linux系统中的一个特殊目录,提供了有关当前运行进程和内核状态的信息。需要注意的是,它与普通文件不同,它不是一个真正的文件系统,而是通过内核在内存中维护的一个虚拟文件系统。只有在操作系统启动时,它才存在,并不存储在磁盘上。但在这里我们似乎没有看到myprocess。
这里有很多数字,它们代表什么呢?
这些数字是蓝色的,表示它们是目录/文件夹。因此:当一个进程被创建时,操作系统会在proc目录下创建一个以新进程的PID命名的文件夹。
我们可以进入查看:
这里有很多内容,这些内容实际上是当前进程的相关属性信息。我们可能还不理解这些内容,但:
这两个路径不就是对应程序的路径吗?这表明进程的属性与文件的属性有一定的关系。
然后:
我们当前在proc目录中这个进程PID对应的目录里。前面提到,PID对应的目录是在进程创建时在proc目录下新建的。如果我们终止对应的进程(CTRL+c):
就无法查看这个目录的内容了。
我们也无法返回上一级目录。因为进程终止后,操作系统会在proc目录下删除这个进程PID对应的目录及其内容。因此,proc目录中的内容是动态变化的。
这篇文章到这里结束,下一篇文章我们将继续探讨与进程相关的内容。
以上就是【Linux系统编程】进程概念与基本创建的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号