全面理解进程组,会话的基础概念,以及进程组,会话,控制终端,前台进程组与后台进程组之间的联系(系列文章第二篇)

前言

这个系列的文章有四篇,其目的是为了搞清楚

那么接下来,就请我一点一点为大家解开,这里的庐山真面目

进程组、会话的基础概念

进程组的基础概念:

  • 在 Unix 和 Linux 系统中,进程可以按照功能或者其他标准组织成进程组。
  • 进程组是一组相关进程的集合,它们可以接收来自同一个终端的信号。
  • 每个进程组都有一个唯一的进程组 ID(PGID),该 ID 进程组中的领头进程(即创建该进程组的进程)的进程 ID(PID)相同
  • 进程组可以用于同时发送信号给一组相关进程,例如在需要停止或恢复一组进程时。
  • 进程组的生命周期从首进程创建该组的时刻开始,到最后一个成员进程退出该组的时刻结束。

会话的基础概念:

  • 会话(session)是一个更高级别的抽象概念,用于表示一个或多个进程组的集合。
  • 每个会话都有一个唯一的会话 ID(SID),会话的领头进程(即创建会话的进程)的 PID 相同
  • 会话用于对一组相关进程组进行管理,例如在注销时关闭所有相关进程组。
  • 一个会话可以有一个关联的控制终端,但也可以没有。
  • 当一个会话有关联的控制终端时,该会话称为前台会话,而其他没有关联控制终端的会话称为后台会话。

进程组与会话之间的关系

现在我们来看一下 进程组 和 会话 之间的关系。

  • 进程组和会话是两个层次的概念:进程组是进程的组织方式,而会话是进程组的组织方式。换句话说,一个会话可以包含多个进程组,而一个进程组可以包含多个进程。会话和进程组的关系是为了更好地对进程进行组织和管理,以便对进程进行信号发送和资源控制等操作。

    • 以登录 Shell 为例
      • 当用户登录时,系统会启动一个shell进程,然后shell进程会创建一个新的会话与新的进程组,并自己成为该会话的领头进程与该进程组的领头进程,shell进程的pid,gid,sid都是相同的,之后shell进程将我们的远程终端设置成为这个会话的控制终端。
      • 这个新的进程组成为前台进程组,它可以接收来自控制终端的信号。之后,用户在 Shell 进程中运行的其他进程会继承会话的信息。

前台进程组、后台进程组

  • 只有前台进程组,才会拥有控制终端,一个会话中最多只能有一个前台进程组,当然也可以没有前台进程组。
  • 只有前台进程组中的进程才能从控制终端中读取输入。当用户在控制终端中输入终端字符生成信号后,该信号会被发送到前台进程组中的所有成员。

更进一步理解,进程组、会话、控制终端、以及前台后台它们之间的联系

  • 进程组:进程组是一组有关联的进程的集合。每个进程组都有一个唯一的进程组ID,并且每个进程都属于某个进程组。进程组的概念使得系统能够将一组相关的进程作为一个整体进行管理和调度。

  • 会话:会话是一个或多个进程组的集合。每个会话都有一个唯一的会话ID,所有在同一个会话中的进程都共享该会话ID。在一个会话中,可以有多个进程组,但只有一个进程组可以成为前台进程组,其他的则为后台进程组。同时,会话中也可以只有后台进程组,没有前台进程组。

  • 前台进程组与后台进程组:在一个会话中,任意时刻只有一个进程组可以成为前台进程组。前台进程组有权利读取终端的输入,而后台进程组则没有。当用户在终端中按下某些特殊的键时(如Ctrl+C),产生的信号将会发送给前台进程组中的所有进程。

  • 控制终端:控制终端是与会话关联的一个特殊的设备,它负责处理用户的输入和输出。一个会话在创建时可以有一个关联的控制终端,且在该会话的生命周期内,控制终端只能更改一次。一个控制终端同一时间只能关联一个会话。

以上概念的关系可以总结为多个相关的进程组成一个进程组,多个相关的进程组又可以组成一个会话。在一个会话中,有一个前台进程组和一个或多个后台进程组或者没有前台进程组,全是后台进程组。控制终端则关联到会话,负责接收用户的输入并将其传递给前台进程组,同时也负责显示来自前台进程组的输出

总结

  • 进程组是一种将进程组织在一起的方法,会话则是将进程组组织在一起的方法。进程组和会话之间的关系是为了更好地对进程进行组织和管理。
  • 多个相关的进程组成一个进程组,多个相关的进程组又可以组成一个会话。在一个会话中,有一个前台进程组和一个或多个后台进程组或者没有前台进程组,全是后台进程组。控制终端则关联到会话,负责接收用户的输入并将其传递给前台进程组,同时也负责显示来自前台进程组的输出

最后的最后,如果你觉得我的这篇文章写的不错的话,请给我一个赞与收藏,关注我,我会继续给大家带来更多更优质的干货内容

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿宋同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值