进程组,作业与会话

一、进程组、作业、会话
1.进程组(process group)
     每个进程除了有一个进程ID(保存在PCB当中),还属于一个进程组。进程组由一个或多个进程组成,通常和一个作业相关联,可以接收来自同一终端的各种信号。每个进程组有一个唯一的进程组ID。
     每个进程组都有一个组长进程,组长进程的ID等于组ID。
     组长进程可以组建一个进程组。只要进程组中有一个进程存在,这个进程组就存在。
2.作业(job)
      当命令行上运行一个进程时,就会变成一个作业,这个作业可能是一个进程,也可能是多个进程。
     shall有且只能运行一个前台作业,当前台有作业时,就不会运行其他作业,shell在后台运行(此时不能接收指令),当作业终止,shall被提到前台,可以接收指令
     shell分前后台来控制的不是进程而是作业或者进程组。一个前台作业可以由多个进程组成,一个后台作业也可以由多个进程组成。 shell可以运行一个前台作业和任意多个后台作业。(作业控制)
     *作业和进程组区别:如果作业中某个进程又创建子进程(fork),则子进程不属于作业,属于进程组。一旦前台作业运行结束,shell就把自己提到前台,若原来前台进程还在(子进程还没终止 ),则自动变为后台进程组
3.会话(session )
     会话是一个或多个进程组的集合。一个会话可以有一个控制终端。建立与控制终端连接的会话首进程被称为控制进程(一般bash就是控制进程)。一个会话中几个进程组可被分为一个前台进程组和一个或多个后台进程组。
     一个会话中,应该包括控制进程(会话首进程)、一个前台进程组和任意后台进程组。
     ctrl+c(SIGINT信号),ctrl+\(SIGQUOT),ctrl+Z(SIGTSTP)内核发送相应的信号给 前台进程组中所有进程。
     切换用户就是当前会话首进程起新进程组,每次su会加载新bash,每次打开终端也会新起一个bash

二、终端
1.基本概念
     用户通过登录系统后获得一个shell进程,这个终端称为shell进程的 控制终端,控制终端是保存在PCB中的信息。fork时会复制PCB中的信息,所以由shell进程启动的其他进程的控制终端也是这个终端。默认情况下(未重定向)每个进程的标准输入、标准输出和标准作物都指向控制终端。在控制终端输入一些特殊的控制键可给前台进程发送信号(ctrl+
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值