程序:磁盘上的可执行文件, 并且只占用磁盘上的空间,是一个静态的概念。
进程(Process):被执行之后的程序叫做进程,不占用磁盘空间,需要消耗系统的内存,CPU资源,每个运行的进程的都对应一个属于自己的虚拟地址空间,这是一个动态的概念。同一个程序可能生成多个进程。
我们所说的程序通常是指可执行程序,它本质上就是一个文件,当我们要运行这个程序的时候,我们会将其加载到内存中:
图1 进程加载到内存示意图
在加载到内存中之后,操作系统会为该程序建立一个PCB来存储该程序中的信息,PCB与程序的总体就称为进程。
准确的来讲:进程=程序文件内容+与进程相关的数据结构(PCB);即用红色部分圈起来的整体表示一个进程。
操作系统对进程的管理不是直接对程序文件进行操作,而是通过PCB(管理者与被管理者不接触的原则)进行管理,因此PCB中一定存在能找到该程序文件的信息,程序文件包括程序代码和数据。在内存中不可能只存在一个进程,对于不同进程的PCB,操作系统会使用一定的数据结构进行连接,这就是再组织的过程,注意连接的是PCB而不是程序文件。
图2 PCB链表
|