Linux进程概述

进程的概念

进程是 Linux 事务管理的基本单元,所有的进程均拥有自己独立的处理环境和系统资源。进程的环境由当前系统状态及其父进程信息决定和组成,将某个可执行文件加载到内存中运行,那么就会演变成一个或者是多个进程。(产生多个进程的原因是进程在运行的时候可以再创建新的进程,但是加载的时候只有一个进程),为了更好的理解进程,以我们平时在 Linux 环境下运行一个 C 程序为例进行说明:
代码很简单,:

如下是在终端执行的命令:

从上述可以看出,可执行文件在存储时,可以分为:代码区(text)、数据区(data)和未初始化数据区(bss)三部分。对于一个进程来说,一个进程是一个运行着的程序段,一个进程主要包括在内存中宏申请的空间,代码(加载的程序,包括代码段,数据段,BSS)、堆、栈以及内核进程信息结构,打开的文件、上下文信息以及挂起的信 等。下面列出了可执行文件和进程的结构:

图中仅仅知识呈现出一小部分内容,结构体 struct task_struct 主要包括线程基本信息、内存信息、tty 终端信息,当前目录信息、打开的文件描述符以及信 信息,除了这些,还有其他进程属性,例如:PID、PPID、UID、EUID。下图是一个关于结构体的一个示意图:

而对于内核进程状态来说略有差异,其状态定义如下:

如上图所示的任务列表一样,所有执行的项目有个项目列表,所以也应该有一个链表,将所有的 串起来,比如应该有如下所示的数据结构:

对于每一个任务来说,都应该有一个,作为这个任务的唯一标识。在里面涉及到任务的,有下面几个:

上述中,是,是,对于任何一个进程,如果只有主线程,那么是自己,也是自己,指向的还是自己。

但是,如果一个进程创建了其他进程,那么就会有所变化了。线程有自己的,就是进程的主线程, 指向的就是进程的主线程。

父进程 (PPID)

任何进程(除 init 进程)都是由另一个进程创建,该进程称为被创建进程的父进程,被创建的进程称为子进程,父进程 无法在用户层修改。父进程的进程 (PID)即为子进程的父进程 (PPID)。

进程组 (PGID)

在 系统中,进程拥有自己的进程 (PID)和进程组 (PGID),进程组是一个或者多个进程的集合,它们与同一作业相关联,可以接收来自同一终端的各种信 。每个进程组都有唯一的进程组 ,进程组 可以在用户层进行修改。

为了更好的说明上述几个“ ”之间的区别,给出如下所示的代码:

运行代码,得到的结果如下所示:

小结

上述就是本次关于 Linux 进程的一个概述,仅仅是一个概述,没有从很深的层面去分析,而且关于 Linux 进程的内容还有很多,这次只是说了其中一方面,不积硅步,无以至千里,加油呀。

Linux进程概述

文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux24752 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年5月17日
下一篇 2021年5月17日

相关推荐