进程是linux下资源管理的基本单元,每个进程有自己独立的运行空间。
每个进程都有一个独立的进程控制块(PCB)来管理每个进程资源。
进程的资源分为两大部分:内核空间进程资源 和 用户空间进程资源。
其中,内核空间进程资源是指:PCB相关信息,即进程PID、PPID、UID等,包括进程控制块本身、打开的文件表项等等。简而言之,就是内核通过PCB可以访问到的资源。
用户空间进程资源是指:进程的代码段、数据段、堆、栈,以及可共享访问的库的内存空间。这些资源在进程退出的时候主动释放。
进程的状态
用户级进程 在linux 2.6中有如下几种状态:就绪/运行状态、可中断等待、不可中断等待、僵死状态、停止状态。
TASK_RUNNING:正在运行或处于就绪状态,就绪状态意味着进程申请到除了CPU以外的其他所有资源。
TASK_INTERRUPTIBLE:处在等待队伍,等待唤醒,可被中断唤醒。
TASK_UNINTERRUPTIBLE:处在等待队伍,等待唤醒,但是不可以被中断唤醒。
TASK_ZOMBIE:进程资源用户空间被释放,但内核中PCB并没有被释放,等待父进程回收。
TASK_STOPPED:进程被外部程序暂停,当再次允许的时候继续执行。
内核级进程状态,多两种:
TASK_TRACED、TASK_DEAD
linux中所有的进程都在上述状态中不停地切换。由调度算法决定,进程处于何种状态。
进程的基本属性
进程的基本属性包括:进程号PID、父进程号PPID、进程组号PGID
进程号是系统维护的唯一标识一个进程的正整数,进程号是无法在用户层修改的。
父进程号:除了init进程外,其他任何进程都是由另一个进程创建的。被创建的进程称作子进程,当前进程称作父进程。父进程无法在用户层修改。
进程组号:每一个进程拥有自己的进程组号。进程组是一个或多个进程的集合,他们与同一作业相关联,可以接收来自同一终端的各种信号。进程组号可以在用户层修改。
每个进程组都有一个组长进程,组长进程的进程号就是进程组号。组长进程退出,进程组还在,只要进程组有一个进程,则该进程组仍然存在。
会话:会话是一个或多个进程组集合。
控制终端
会话和控制终端有如下特点:
1、一个会话可以有一个控制终端,建立于控制终端连接的会话首进程被称为控制进程。
2、一个会话中的几个进程组可被分成为一个前台进程和几个后台进程,如果一个会话有一个控制终端,则它有一个前台进程。
3、无论何时终端键入中断键\退出键,会发送中断信号\退出信号给前台进程。