什么是进程
进程是正在执行的一个程序或命令,每个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。程序一旦运行就是进程。
进程可以看成程序执行的一个实例。进程是系统资源分配的独立实体,每个进程都拥有独立的地址空间。一个进程无法访问另一个进程的变量和数据结构,如果想让一个进程访问另一个进程的资源,需要使用进程间通信,比如管道,文件,套接字等。
进程分类
在Linux操作系统中,进程大致可以分为3中不同的类型,每种进程都有自己的特点和属性。
-
交互进程:由一个Shell启动的进程,交互进程既可以在前台运行,也可以在后台运行。
-
批处理进程:这种进程和终端没有联系,是一个进程序列。
-
监控进程:也称守护进程,是一个在后台运行且不受任何终端控制的特殊进程,用于执行特定的系统任务。
进程的组成
一个进程包含内核中的一部分地址空间和一系列数据结构。其中地址空间是内核标记的一部分内存以供进程使用,而数据结构则用来纪录每个进程的具体信息。
最主要的进程信息包括:
-
进程的地址空间图
-
进程当前的状态( sleeping、stopped、runnable 等)
-
进程的执行优先级
-
进程调用的资源信息
-
进程打开的文件和网络端口信息
-
进程的信号掩码(指明哪种信号被屏蔽)
-
进程的属主
进程的状态
可运行状态
:此时进程正在运行或者正在运行队列中等待准备运行等待状态(阻塞状态)
:此时进程在等待一个事件的发生或某种系统资源。在Linux系统中等待状态又细分为两种等待状态:可中断的等待状态和不可中断的等待状态-
可中断的等待状态
:处于可中断的等待状态的进程可以被某一信号中断
-
不可中断的等待状态
:处于不可中断的等待状态的进程不受信号的打扰,将一直等待事件的发生或等待某种系统资源
暂停状态
:处于暂停状态的进程被暂停运行僵死状态
:每个进程在运行结束后都会处于僵死状态,等待父进程调用进而释放系统资源,处于该状态的进程已经运行结束,但是它的父进程还没有释放其系统资源