前言
这个系列的文章有四篇,其目的是为了搞清楚:
-
进程,shell,shell进程,终端,控制终端,前台进程,后台进程,控制进程,前台进程组,后台进程组,会话,守护进程,init进程,用户进程,系统进程
它们之间的联系与区别 - 系列文章第一篇传送门:全面理解shell进程、终端、控制终端的概念,以及它们之间有什么区别与联系?(系列文章第一篇)
- 系列文章第二篇传送门:全面理解守护进程的基础概念,以及如何创建一个守护进程(系列文章第三篇)
- 系列文章第四篇传送门:全面理解前台进程,后台进程的概念,以及之间如何切换,init进程与系列文章大总结(系列文章第四篇)
那么接下来,就请我一点一点为大家解开,这里的庐山真面目
进程组、会话的基础概念
进程组的基础概念:
- 在 Unix 和 Linux 系统中,进程可以按照功能或者其他标准组织成进程组。
- 进程组是一组相关进程的集合,它们可以接收来自同一个终端的信号。
- 每个
进程组
都有一个唯一的进程组 ID
(PGID),该 ID与
进程组中的领头进程(即创建该进程组的进程)的进程 ID(PID)相同
。 - 进程组可以用于同时发送信号给一组相关进程,例如在需要停止或恢复一组进程时。
- 进程组的生命周期从首进程创建该组的时刻开始,到最后一个成员进程退出该组的时刻结束。
会话的基础概念:
- 会话(session)是一个更高级别的抽象概念,用于表示一个或多个进程组的集合。
-
每个会话都有一个唯一的会话 ID
(SID),与
会话的领头进程(即创建会话的进程)的 PID 相同
。 - 会话用于对一组相关进程组进行管理,例如在注销时关闭所有相关进程组。
一个会话可以有一个关联的控制终端,但也可以没有。
- 当一个会话有关联的控制终端时,该会话称为前台会话,而其他没有关联控制终端的会话称为后台会话。
进程组与会话之间的关系
现在我们来看一下 进程组 和 会话 之间的关系。
-
进程组和会话是两个层次的概念:进程组是进程的组织方式,而会话是进程组的组织方式。换句话说,一个会话可以包含多个进程组,而一个进程组可以包含多个进程。会话和进程组的关系是为了更好地对进程进行组织和管理,以便对进程进行信号发送和资源控制等操作。
-
以登录 Shell 为例:
- 当用户登录时,系统会启动一个shell进程,然后
shell进程会创建一个新的会话与新的进程组,并自己成为该会话的领头进程与该进程组的领头进程
,shell进程的pid,gid,sid都是相同的,之后shell进程将我们的远程终端设置成为这个会话的控制终端。 - 这个新的进程组成为前台进程组,它可以接收来自控制终端的信号。之后,用户在 Shell 进程中运行的其他进程会继承会话的信息。
- 当用户登录时,系统会启动一个shell进程,然后
-
以登录 Shell 为例:
前台进程组、后台进程组
- 只有前台进程组,才会拥有控制终端,一个会话中最多只能有一个前台进程组,当然也可以没有前台进程组。
- 只有前台进程组中的进程才能从控制终端中读取输入。当用户在控制终端中输入终端字符生成信号后,该信号会被发送到前台进程组中的所有成员。
更进一步理解,进程组、会话、控制终端、以及前台后台它们之间的联系
-
进程组:进程组是一组有关联的进程的集合。每个进程组都有一个唯一的进程组ID,并且每个进程都属于某个进程组。进程组的概念使得系统能够将一组相关的进程作为一个整体进行管理和调度。
-
会话:会话是一个或多个进程组的集合。每个会话都有一个唯一的会话ID,所有在同一个会话中的进程都共享该会话ID。在一个会话中,可以有多个进程组,但只有一个进程组可以成为前台进程组,其他的则为后台进程组。同时,会话中也可以只有后台进程组,没有前台进程组。
-
前台进程组与后台进程组:在一个会话中,任意时刻只有一个进程组可以成为前台进程组。前台进程组有权利读取终端的输入,而后台进程组则没有。当用户在终端中按下某些特殊的键时(如Ctrl+C),产生的信号将会发送给前台进程组中的所有进程。
-
控制终端:控制终端是与会话关联的一个特殊的设备,它负责处理用户的输入和输出。一个会话在创建时可以有一个关联的控制终端,且在该会话的生命周期内,控制终端只能更改一次。一个控制终端同一时间只能关联一个会话。
以上概念的关系可以总结为:多个相关的进程组成一个进程组,多个相关的进程组又可以组成一个会话。在一个会话中,有一个前台进程组和一个或多个后台进程组或者没有前台进程组,全是后台进程组。控制终端则关联到会话,负责接收用户的输入并将其传递给前台进程组,同时也负责显示来自前台进程组的输出
。文章来源:https://www.toymoban.com/news/detail-442896.html
总结
- 进程组是一种将进程组织在一起的方法,会话则是将进程组组织在一起的方法。进程组和会话之间的关系是为了更好地对进程进行组织和管理。
- 多个相关的进程组成一个进程组,多个相关的进程组又可以组成一个会话。在一个会话中,有一个前台进程组和一个或多个后台进程组或者没有前台进程组,全是后台进程组。控制终端则关联到会话,负责接收用户的输入并将其传递给前台进程组,同时也负责显示来自前台进程组的输出
最后的最后,如果你觉得我的这篇文章写的不错的话,请给我一个赞与收藏,关注我,我会继续给大家带来更多更优质的干货内容
。文章来源地址https://www.toymoban.com/news/detail-442896.html
到了这里,关于进程组,会话的基础概念,以及进程组,会话,控制终端,前台后台之间的联系(系列文章第二篇)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!