会话是一个或者多个进程组的集合。
一个会话可以包含一个或者多个进程组,但只能有一个前台进程组,其它的都是后台进程组;每一个会话都有一个会话首领(leader),即创建会话的进程。一个会话可以有控制中断、也可没有控制中断,在有控制中断的情况下也只能连接一个控制中断,这通常是登录到其它中断设备或者伪终端设备,一个会话中的进程组可被分为一个前台进程组以及一个或者多个后台进程组。
会话的首领进程连接一个中断以后,该终端就成为会话的控制中断,与控制中断建立连接的会话首领进程被称为控制进程;产生在终端上的输入和信号将发送给会话的前台进程组中的所有进程,譬如CTRL+C(产生SIGINT信号)、CTRL+Z(产生SIGSTP信号)、CTRL+\(产生SIGQUIT信号)等等这些由控制终端产生的信号。
当用户在某个中断登录时,一个新的会话就开始了;当我们在Linux系统下打开了多个控制终端时,实际上就是创建了多个终端会话。
一个进程组有组长进程ID标识,而对于会话来说,会话的首领进程的进程组ID将作为该会话的标识,也就是会话ID(sid),在默认情况下,新创建的进程会继承父进程的会话ID。