进程,何为进程?
对于我们写程序的人来讲,代码写好后经编译程序编译(C代码需要链接)等过程,才能运行。这个阶段有时候很繁琐,尤其是编译大型程序集的时候,经常会花费很长时间,如果机器的物理性能好一些的话,编译速度还是可以忍受的。当我们看着自己写的静态代码组合成一个复杂的程序集合时,也许自己会由衷地心生得意:一会,我的程序就可以运行了……
我的“程序”?注意,这里有个概念了,“程序”,什么是程序?其实,作为程序员,我们所谓的程序通常指的是静态的“源代码”,而上文提及的“编译程序”是一个静态的源码集合吗?答案是既肯定又否定,此“编译程序”是在操作系统上可执行的实体,已经被编译程序翻译解析、链接程序装配组合过了的、具有编译其他程序代码功能的可执行软件包,这是其静态特性;当其开始编译其他代码时,被调入内存执行,就具有了动态特性。
可执行的软件包在执行的过程中,被操作系统调入内存,通过CPU、寄存器等的配合,在微指令系统的调度下被执行,这样的行为方式遵从着冯诺依曼体系结构,但同时,正在被执行的程序也就有了一个表示其在内存中存在的状态的名称――“进程”。