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

这篇具有很好参考价值的文章主要介绍了进程组,会话的基础概念,以及进程组,会话,控制终端,前台后台之间的联系(系列文章第二篇)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

  • 进程,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 进程中运行的其他进程会继承会话的信息。

前台进程组、后台进程组

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

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

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

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

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

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

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

总结

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

最后的最后,如果你觉得我的这篇文章写的不错的话,请给我一个赞与收藏,关注我,我会继续给大家带来更多更优质的干货内容文章来源地址https://www.toymoban.com/news/detail-442896.html

到了这里,关于进程组,会话的基础概念,以及进程组,会话,控制终端,前台后台之间的联系(系列文章第二篇)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 无涯教程-进程 - 组&会话&控制

    在本章中,我们将熟悉进程组,会话和作业控制。 进程组(Process Groups )   -   进程组是一个或多个进程的集合,一个进程组由一个或多个共享相同进程组标识符(PGID)的进程组成。 会话(Sessions)                    -  它是各种进程组的集合。 作业控制(Job Control)      -  这

    2024年02月11日
    浏览(36)
  • MacOS终端下查看进程和端口号,以及结束该进程的指令

    查看进程和端口号: 该命令将列出所有当前正在监听的端口和进程。 结束进程: 例如: sudo kill 22433 即可关闭9090端口,之前我就是因为该端口号被占用导致springboot启动累类报错 将[进程ID]替换为要结束的进程的ID,可以使用以下命令查看进程ID: 将[进程名]替换为要查找的进

    2024年02月11日
    浏览(44)
  • 进程概念与进程控制

    1.冯诺伊曼体系结构: 数据按照二进制存储 数据存储在存储器(内存)当中 输入设备 存储器 中央处理器 输出设备 2.操作系统: 先组织,再描述 系统调用与库函数: 系统调用 系统调用指运行在用户空间的程序向操作系统内核请求需要更高权限运行的服务。它通过软中断向

    2024年02月16日
    浏览(31)
  • # Linux终端控制字符详解以及简单应用实践

    了解Linux终端控制字符及输出彩色文字的方法 在根据映射表进行转换之前,如果字符是以下14个代码中的一个【00(NUL)、07(BEL)、08(BS)、09(HT)、0a(LF)、0b(VT)、0c(FF)、0d(CR)、0e(SO)、0f(SI)、18(CAN)、1a(SUB)、1b(ESC)、7f(DEL)】,则字符是控制字符。

    2024年02月17日
    浏览(32)
  • 前端将file文件传给后台,后台将文件传给前台(包含上传下载)

    在开发过程中,经常会遇见对文件的处理。 例如:在上传、下载文件时,需要在前端选完文件传到后台传到服务器;或者文件从后台,经过特定需求的处理在返回给前台。 中间处理过程各种各样,但有两个过程是固定的 前端传给后台 后台返回给前端 经常用到的上传就是对

    2024年02月11日
    浏览(52)
  • 关于进程、线程、协程的概念以及Java中的应用

    本文将从“操作系统”、“Java应用”上两个角度来探究这三者的区别。 在我本人的疑惑中,我有以下3个问题。 在“多道程序环境下”,允许多个程序并发执行,此时它们将失去封闭性,并具有间断性以及不可再现性的特征,因此需要引入进程的概念。 进程是程序执行的过

    2024年02月08日
    浏览(62)
  • Android实现监听APP启动、前台和后台

    前言 在我们开发的过程中,经常会遇到需要我们判断app进入后台,或者切换到前台的情况。比如我们想判断app切换到前台时,显示一个解锁界面,要求用户输入解锁密码才能继续进行操作;我们想判断app切换到后台,记录一下log;或者当用户切换回前台时,我们想刷新一下页

    2024年02月11日
    浏览(39)
  • SpringBoot微信小程序商城源码(前台+后台)

    🍓🍓 文末获取联系 🍓🍓 产品介绍   本产品用java技术开发的小程序前后台源码代码和视频开发教程。   产品主要包含一套Spring Boot小程序商城代码和一套小程序开发全栈实战项目视频课程。 小程序商城源代码介绍:   系统由:Spring Boot后端API,web管理后台 和 微信小

    2024年02月10日
    浏览(86)
  • Linux下进程及其进程地址空间以及一些进程的控制函数

    今天我们来分享一下Linux下的进程和进程地址空间以及一些进程的控制函数。 进程是操作系统分配资源的基本单位,一个进程是一个程序的一次执行过程。每启动一个进程,操作系统就会为它分配一块独立的内存空间,用于存储PCB、数据段、程序段等资源。每个进程占有一块

    2024年02月08日
    浏览(92)
  • 【Linux】进程基础概念【下篇】

    目录 1. 基本概念 2. 常见环境变量 常见环境变量指令 (1. PATH (2. HOME (3. SHELL 3.环境变量的组织形式 (1)通过代码如何获取环境变量 (2)普通变量与环境变量的区别 (3)命令行参数 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数。

    2024年02月09日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包