首页 > 运维 > linux运维 > 正文

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

絕刀狂花
发布: 2025-07-23 11:02:22
原创
138人浏览过

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

  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:

    豆包AI编程
    豆包AI编程

    豆包推出的AI编程助手

    豆包AI编程 483
    查看详情 豆包AI编程

    【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目录中的内容是动态变化的。

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

以上就是【Linux系统编程】进程概念与基本创建的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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