0

0

【Linux系统编程】进程概念与基本创建

絕刀狂花

絕刀狂花

发布时间:2025-07-23 11:02:22

|

144人浏览过

|

来源于php中文网

原创

在这篇文章中,我们将探讨一个重要的概念——进程。让我们逐步了解什么是进程以及如何理解它。

  1. 进程的概念

    那么,进程到底是什么呢?我们可以通过观察电脑的任务管理器来直观地理解:

    【Linux系统编程】进程概念与基本创建 这里展示了当前正在运行的进程,这些进程实际上就是我们当前打开的程序。

    因此,我们得出结论:进程就是正在运行的程序。

    但进程的本质是什么呢?我们继续探讨:

    【Linux系统编程】进程概念与基本创建 我们知道,一个可执行程序本质上是一个二进制文件。当我们运行这个程序时,它会被加载到内存中,即将程序中的指令和数据加载到内存。

    【Linux系统编程】进程概念与基本创建 此时,这个程序就变成了一个进程了吗?这就像一个人进入学校是否就变成了学生一样。一个人要成为学生,需要在学校里有学籍信息。同样的,一个程序被加载到内存中,并不意味着它就变成了进程。操作系统需要对内存中的多个进程进行管理。

    那么,操作系统如何管理这些进程呢?

  2. 进程描述—PCB

    为了描述进程,操作系统使用了一个称为进程控制块(PCB)的数据结构。

    【Linux系统编程】进程概念与基本创建 操作系统对进程的管理实际上是对PCB数据结构的管理。

    因此,回到我们之前的讨论:

    进程可以被定义为:一个正在执行的程序及其在操作系统中的状态信息的集合,这些信息通过PCB进行管理。

  3. task_struct—PCB的一种

    在Linux中,描述进程的结构体称为task_struct。task_struct是Linux内核中的一种数据结构,包含进程的信息,并被加载到RAM中。

  4. task_struct内容分类

    task_struct中包含以下内容:

    可以在内核源代码中找到它,所有运行在系统中的进程都以task_struct链表的形式存在于内核中。

    我们之前提到:

    PCB即进程属性的集合与可执行文件的属性有一定的关系。

  5. 查看进程

    那么,如何查看进程呢?

    首先,我们编写一个代码和makefile:

    【Linux系统编程】进程概念与基本创建 编辑myprocess.c

    【Linux系统编程】进程概念与基本创建 保存并退出。然后编写makefile:

    方科销售分析系统
    方科销售分析系统

    “方科”为仿代码站ERP系列品牌,仿代码站专注于应用型程序制作,提倡“仿客”概念,仿功能而不仅仅是改代码,所有的代码都应当自行编写,争取超过原有程序。销售分析系统为仿代码站站长根据多年店铺经营经验原创制作,能够为小型店铺的进货提供有效数据支持。根据本系统的数据,可以得出一段时间内的耗货量,有助于减少货物积压所造成的不必

    下载

    【Linux系统编程】进程概念与基本创建

    然后:

    【Linux系统编程】进程概念与基本创建 生成了一个可执行程序myprocess。我们运行这个程序时,操作系统会将其加载到内存,并为其创建PCB(在Linux中是task_struct),此时它就变成了进程。

    【Linux系统编程】进程概念与基本创建 我们如何查看这个进程呢?

    【Linux系统编程】进程概念与基本创建 让进程继续运行,我们再打开一个终端,然后输入命令:

    【Linux系统编程】进程概念与基本创建 就可以看到我们刚才运行的进程。简单解释一下这条命令(我们将在后续文章中详细讲解):

    ps axj | head -1 && ps axj | grep myprocess 这是逻辑与连接的两条命令。首先,ps axj显示当前系统中所有进程的详细信息,但我们不想查看所有信息,因此通过管道连接head -1只显示ps axj输出的第一行(即表头信息)。然后,&&后面连接另一条指令,过滤出包含关键字myprocess的进程信息。下面的grep进程可以忽略,因为它也被过滤出来了,当然可以屏蔽掉。

    【Linux系统编程】进程概念与基本创建 只剩下我们需要查看的进程。然后,我们再打开一个终端:

    【Linux系统编程】进程概念与基本创建 再次运行该程序,然后:

    【Linux系统编程】进程概念与基本创建 我们可以看到两个进程。

    我们观察一下显示的信息:

    【Linux系统编程】进程概念与基本创建 我们看到有一个PID,这是我们之前提到的进程的唯一标识符。两个PID不同,因此它们是不同的进程,尽管是同一个可执行程序生成的。

    除了上述查看进程的方式,还有其他方法:

    【Linux系统编程】进程概念与基本创建 proc实际上是process的缩写。/proc目录是Linux系统中的一个特殊目录,提供了有关当前运行进程和内核状态的信息。需要注意的是,它与普通文件不同,它不是一个真正的文件系统,而是通过内核在内存中维护的一个虚拟文件系统。只有在操作系统启动时,它才存在,并不存储在磁盘上。但在这里我们似乎没有看到myprocess。

    这里有很多数字,它们代表什么呢?

    【Linux系统编程】进程概念与基本创建 这些数字是蓝色的,表示它们是目录/文件夹。因此:当一个进程被创建时,操作系统会在proc目录下创建一个以新进程的PID命名的文件夹。

    【Linux系统编程】进程概念与基本创建 我们可以进入查看:

    【Linux系统编程】进程概念与基本创建 这里有很多内容,这些内容实际上是当前进程的相关属性信息。我们可能还不理解这些内容,但:

    【Linux系统编程】进程概念与基本创建 这两个路径不就是对应程序的路径吗?这表明进程的属性与文件的属性有一定的关系。

    然后:

    【Linux系统编程】进程概念与基本创建 我们当前在proc目录中这个进程PID对应的目录里。前面提到,PID对应的目录是在进程创建时在proc目录下新建的。如果我们终止对应的进程(CTRL+c):

    【Linux系统编程】进程概念与基本创建 就无法查看这个目录的内容了。

    【Linux系统编程】进程概念与基本创建 我们也无法返回上一级目录。因为进程终止后,操作系统会在proc目录下删除这个进程PID对应的目录及其内容。因此,proc目录中的内容是动态变化的。

这篇文章到这里结束,下一篇文章我们将继续探讨与进程相关的内容。

相关专题

更多
mysql标识符无效错误怎么解决
mysql标识符无效错误怎么解决

mysql标识符无效错误的解决办法:1、检查标识符是否被其他表或数据库使用;2、检查标识符是否包含特殊字符;3、使用引号包裹标识符;4、使用反引号包裹标识符;5、检查MySQL的配置文件等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

182

2023.12.04

Python标识符有哪些
Python标识符有哪些

Python标识符有变量标识符、函数标识符、类标识符、模块标识符、下划线开头的标识符、双下划线开头、双下划线结尾的标识符、整型标识符、浮点型标识符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

280

2024.02.23

java标识符合集
java标识符合集

本专题整合了java标识符相关内容,想了解更多详细内容,请阅读下面的文章。

254

2025.06.11

c++标识符介绍
c++标识符介绍

本专题整合了c++标识符相关内容,阅读专题下面的文章了解更多详细内容。

121

2025.08.07

golang结构体相关大全
golang结构体相关大全

本专题整合了golang结构体相关大全,想了解更多内容,请阅读专题下面的文章。

197

2025.06.09

golang结构体方法
golang结构体方法

本专题整合了golang结构体相关内容,请阅读专题下面的文章了解更多。

189

2025.07.04

treenode的用法
treenode的用法

​在计算机编程领域,TreeNode是一种常见的数据结构,通常用于构建树形结构。在不同的编程语言中,TreeNode可能有不同的实现方式和用法,通常用于表示树的节点信息。更多关于treenode相关问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

535

2023.12.01

C++ 高效算法与数据结构
C++ 高效算法与数据结构

本专题讲解 C++ 中常用算法与数据结构的实现与优化,涵盖排序算法(快速排序、归并排序)、查找算法、图算法、动态规划、贪心算法等,并结合实际案例分析如何选择最优算法来提高程序效率。通过深入理解数据结构(链表、树、堆、哈希表等),帮助开发者提升 在复杂应用中的算法设计与性能优化能力。

17

2025.12.22

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

23

2026.01.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 4.7万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

MongoDB 教程
MongoDB 教程

共17课时 | 2.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号