进程和线程是当代计算机系统最重要的两个概念,通常,程序是不能参与并发执行的,否则,程序的运行也就失去了意义,为了让程序并发执行,并且可以对并发执行的程序加以描述和控制,引入了“进程的概念”。深入理解进程的概念有助于我们深入了解计算机的工作原理。
系统为并发执行的程序配备了一个专门的数据结构,称为进程控制块(PCB),系统利用进程控制块来描述进程的基本情况和活动过程,进而控制和管理进程。这样,程序段、相关的数据段、PCB三部分便构成了进程实体。因此,进程可以有如下定义:
程序的一次执行、程序及其数据在处理机上顺序执行时所发生的活动、具有独立功能的程序在一个数据集合上运行的过程,是系统进行资源分配和和调度的独立单位。
进程有以下特征:
-
动态性
表现在,由创建而产生,由调度而执行,由撤销而消亡。 -
并发性
是指多个进程实体同存于内存中,且能在一段时间内同时运行。而程序是不能参与并发执行的。 -
独立性
指进程实体是一个能独立运行,独立获得资源,和独立接收调度的基本单位。 -
异步性
是指进程是按异步方式运行的,即按各自独立的、不可预知的速度向前推进。
进程的三种基本状态
- 就绪状态
指进程已处于准备好的状态,即进程已经分配到除CPU以外的所有必要的资源,只要在获得cpu,便可立即执行。 - 执行状态
这是指进程已获得CPU,其程序正在执行的状态。 - 阻塞状态
指正在执行的进程,由于发生某时间(如I/O请求、申请缓冲区失败等)暂时无法继续执行的状态,亦即进程的执行受到阻塞。
为了满足进程控制块对数据及操作的完整性要求以及增强管理的灵活性,通常在系统中又引入了两种常见的状态:
- 创建状态,为进程创建了PCB块,但进程所需的资源尚不能得到满足。因此无法进入就绪状态。
- 终止状态,当进程到达了自然结束点,或是出现了无法克服的错误,或是被操作系统所终结,或是被其他有终止权的进程所终结,它将进入终止状态。此时进程不再执行,但在操作系统仍保留一条记录,其中保存状态码和一些计时统计数据,供其他进程收集。
Linux下查看进程状态
- ps命令:将某个时间点的进程运行情况攫取下来。
- top命令:动态查看进程状态,可以持续监测进程运行状态。
- pstree命令:查看进程之间的相关性,可以很方便地找到进程的父进程。
参考书目:
《计算机操作系统 第四版》汤小兵 梁红兵 汤子瀛